The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Настройка ufw в Ubuntu"
Отправлено auto_tips, 17-Фев-10 16:35 
Начиная с версии Ubuntu 8.04 в ее состав по умолчанию включена новая упрощенная оболочка для работы с файрволом - ufw (Uncomplicated firewall - "незамысловатый" брэндмауер). Как известно Linux по умолчанию имеет очень мощный встроенный сетевой фильтр - netfilter.

Стандартной утилитой для управления настройками netfilter является утилита iptables. Ufw создан для того что бы сделать более простым настройку netfilter-а. По сути ufw - это скрипт, который получает команды в одном формате и преобразует их в формат iptables.

Так как ufw является упрощенной утилитой настройки файрвола, он так же является и более ограниченным в своих возможностях по сравнения с iptables. Практика показывает что большинству пользователей вполне достаточно функционала который предоставляет ufw. В то же время, в случае необходимости всегда можно дописать нужное правило с помощью iptables.

++ Функционал ufw

Основными функциями файрвола ufw является:

1. Работа в одном из двух режимов: разрешено все кроме того что описано правилами, запрещено все, кроме описанного правилами.
2. Создание правил для фильтрации пакетов с действиями allow, deny, reject
3. Создание правил с учетом адреса и порта получателя и отправителя, используемого протокола
4. Логирование пакетов подпадающих под правило
5. Блокировка частых неправильных попыток авторизации по ssh
6. Настраиваемые профили для приложений

++ Запуск ufw

Ufw может быть включен или выключен системным администратором сервера, для этого используется команд:

   # ufw enable

Межсетевой экран активен и будет запущен при запуске системы

   # ufw disable

Файрвол остановлен и деактивирован при загрузке

Просматривать состояние можно с помощью команды:

   # ufw status [numbered]
   Status: active

Параметр numbered может быть использован для отображения правил файрвола с соответствующей нумерацией.

Изменение политики по умолчания:

   # ufw default allow [in|out]
   # ufw default deny [in|out]
   # ufw default reject [in|out]

Где allow подразумевает что все пакеты будут пропущены, кроме тех, для которых есть запрещающее правило: deny – все пакеты будут заблокированы, кроме тех, для которых есть разрешающие правила; reject – все пакеты будут заблокированы с соответствующим уведомлением подключающуюся сторону.

Параметры in|out указывают для какого направления мы хотим применять политику, для входящих или исходящих пакетов соответственно.

Управление правилами осуществляется с помощью команд allow, deny, reject, delete, insert.

allow - добавить разрешающее правило

deny - добавить запрещающее правило (файрвол не предпринимает действий при попадании в это правило)

reject - добавить запрещающее правило (файрвол даст знать подключающемуся что этот порт закрыт)

limit - добавляет ограничивающее правило для указанного порта. В случае если с одного и того же адреса в течении 30 секунд будет произведено 6 и более неуспешных попыток авторизации в службу удаленного доступа ssh, ufw заблокирует удаленный адрес.

delete - удалить добавленное ранее правило

insert - вставить правило в определенную позицию в цепочке

++ Построение правил файрвола

Конструкция построения правил

   ufw allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto protocol] \
   [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]

Подробнее о параметрах:

allow|deny|reject|limit - указываем что будет делать это правило (см. описание выше).

[in|out on INTERFACE] - указываем будет это правило относится к входящему трафику (in) или исходящему (out) и хотим ли мы ограничить данное правило отдельным сетевым интерфейсом (к примеру eth0).

[log|log-all] - при желании можно логировать события которые подпадают под правило. По умолчанию лог пишется в /var/log/syslog. При использовании опции log - в файл будут записаны лишь пакеты участвующие при установке соединения с сервером. Используя опцию log-all в лог файл будут записаны все пакеты подпадающие под правило.

[proto protocol] - в правиле можно указать для какого протокола оно действует: tcp или udp.

[from ADDRESS [port PORT]] - адрес и порт источника пакета

[to ADDRESS [port PORT]] - адрес и порт получателя пакета

++ Профили приложений

Ufw позволяет создавать профили приложений. в которых можно указать все порты которые используются и удобно добавлять их в правила. Так к примеру можно создать профиль для веб-сервера Apache, указав что слушает он 80 и 443 порты по протоколу tcp.

Профили приложений являются текстовыми файлами и могут быть отредактированы любым текстовым редактором. все файлы хранятся в директории /etc/ufw/applications.d:

   root@server:/etc/ufw/applications.d# pwd
   /etc/ufw/applications.d
   root@server:/etc/ufw/applications.d# ls -l
   -rw-r--r-- 1 root root 406 2009-11-13 00:52 apache2.2-common
   -rw-r--r-- 1 root root 145 2009-10-22 22:50 openssh-server
   -rw-r--r-- 1 root root 241 2009-09-22 16:52 postfix
  
Рассмотрим пример профиля приложения apache2.2-common:

   [Apache]
   title=Web Server
   description=Apache v2 is the next generation of the omnipresent Apache web server.
   ports=80/tcp
   [Apache Secure]
   title=Web Server (HTTPS)
   description=Apache v2 is the next generation of the omnipresent   Apache web server.
   ports=443/tcp
   [Apache Full]
   title=Web Server (HTTP,HTTPS)
   description=Apache v2 is the next generation of the omnipresent Apache web server.
   ports=80,443/tcp

В одном файле может находится несколько профилей. В данном примере 3: Apache, Apache Secure, Apache Full. Структура записей проста: сначала имя профиля в квадратных скобка ([Apache Full]), далее развернутое наименования приложения, далее описание приложения и список портов с указанием протокола которые задействованы в профиле (80,443/tcp).

Вывести список профилей можно с помощью команды:

   # ufw app list

Доступные приложения:

   Apache
   Apache Full
   Apache Secure
   OpenSSH
   Postfix
   Postfix Submission

Детальную информацию по профилю можно просмотреть с помощью команды:

   # ufw app info OpenSSH
   |Профиль: OpenSSH
   |Название: Secure shell server, an rshd replacement
   |Описание: OpenSSH is a free implementation of the Secure Shell
protocol.
   |Порт: 22/tcp

После добавления или изменения профиля приложения (в файле) необходимо дать знать файрволу о новом профиле:

   # ufw app update OpenSSH

Для того что б новый профиль сразу вступил в силу, необходимо добавить опцию --add-new:

   # ufw app update --add-new OpenSSH

По умолчанию добавленные с помощью --add-new профили не будут обрабатываться файрволом. Рекомендуется вначале задать политику для новых профилей приложений:

  ufw app default allow|deny

После чего все новые профили приложений будут добавляться в цепочку файрвола с указанной политикой.

Использовать профили приложений можно также при создании обычных правил, например:

  # ufw allow OpenSSH

++ Настройка профиля безопасности

1. Ограничение входящих подключений к FTP и Веб серверу
Пример настройки файрвола для ситуации, когда необходимо заблокировать доступ к FTP и Веб серверу с адреса 192.168.100.100. В примере 192.168.1.11 - сервер на котором настраивается файрвол:

   # ufw deny proto tcp from  192.168.100.100 to 192.168.1.11 port 21,80

Правило добавлено

   # ufw status
   |Статус: активно
   |До Действие От
   ---- --------------------
   192.168.1.11 21,80/tcp DENY 192.168.100.100

Теперь при попытках подключения с хоста 192.168.100.100 к 21 или 80 порту хоста 192.168.1.11 клиент будет висеть пока не отвалится по таймауту.

Удалим это правило и добавить аналогичное но с действием reject:

   # ufw delete deny proto tcp from 192.168.100.100 to 192.168.1.11 port 21,80
   # ufw reject proto tcp from 192.168.100.100 to 192.168.1.11 port 21,80

Теперь при попытке подключения к 21 порту сервера удаленный клиент получит ответ Connection refused:

   $ telnet 192.168.1.11 21
   Trying 192.168.1.11...
   telnet: Unable to connect to remote host: Connection refused

Просканируем порты сервера:

   # nmap -sT 192.168.1.100
   Starting Nmap 5.00 ( http://nmap.org ) at 2009-12-28 22:56 EET
   Interesting ports on 192.168.1.100:
   Not shown: 992 closed ports
   PORT STATE SERVICE
   21/tcp filtered ftp
   22/tcp open ssh
   80/tcp filtered http
   139/tcp open netbios-ssn
   445/tcp open microsoft-ds
   2323/tcp open unknown
   3128/tcp open squid-http
   5900/tcp open vnc
   MAC Address: 00:18:F3:67:85:9E (Asustek Computer)
   Nmap done: 1 IP address (1 host up) scanned in 17.52 seconds

2. Ограничение исходящих подключений к указанному серверу

Цель - запретить исходящие подключения с сервера к адресу 195.214.195.105:

   # ufw deny proto tcp to 195.214.195.105

3. Ограничение попыток авторизации по ssh
   # ufw limit 22

Произведем несколько попыток подключения к 22 порту сервера с введением заведомо неправильного пароля:

   $ ssh 192.168.1.100
   user@192.168.1.100's password:
   Permission denied, please try again.
   ...
   $ ssh 192.168.1.100
   ssh: connect to host 192.168.1.100 port 22: Connection refused

Как видим после нескольких неудачных попыток файрвол блокирует IP адрес с которого исходят попытки подключения и в логах появится соответсвтующяя запись:

   Dec 28 22:59:13 fortress kernel: [273659.578463] [UFW LIMIT BLOCK]
      IN=eth0 OUT= MAC=00:18:f3:67:85:9e:00:26:5e:46:40:86:08:00
      SRC=192.168.1.156 DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00
      TTL=64 ID=3150 DF PROTO=TCP SPT=33783 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0

4. Логирование пакетов

   # ufw allow log 22

С помощью этого правила файрвол будет логировать пакеты установки соединиения по указанному 22 порту. В логах появятся следующие записи:

   Dec 28 23:04:18 fortress kernel: [273964.364715] [UFW ALLOW] IN=eth0
    OUT= MAC=00:18:f3:67:85:9e:00:26:5e:46:40:86:08:00
    SRC=192.168.1.156 DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00
    TTL=64 ID=6564 DF PROTO=TCP SPT=58069 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0


URL: http://chooselinux.org.ua/nastrojka-ufw-v-ubuntu/
Обсуждается: https://www.opennet.ru/tips/info/2280.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру