UFW (Uncomplicated Firewall) – это интерфейс iptables, предназначенный для упрощения процесса настройки брандмауэра. Инструмент iptables надёжный и гибкий, но новичку будет непросто настроить его самостоятельно.
Данное руководство поможет настроить брандмауэр с помощью UFW в Ubuntu 14.04
Требования
- Сервер Ubuntu 14.04 (инструкции по настройке – здесь).
- Пользователь с доступом к sudo.
В Ubuntu инструмент UFW установлен по умолчанию. Если в вашей системе он почему-то не установлен, запустите команду:
sudo apt-get install ufw
Использование IPv6
Если на вашем сервере Ubuntu включен протокол IPv6, убедитесь, что UFW поддерживает IPv6. Откройте конфигурации UFW:
sudo nano /etc/default/ufw
Убедитесь, что в настройках есть строка:
...
IPV6=yes
...
Сохраните и закройте файл (Ctrl-X, Y, Enter).
После включения UFW будет поддерживать правила для IPv4 и IPv6.
Данное руководство предназначено для IPv4, но подойдёт и для IPv6.
Состояние и правила UFW
Чтобы проверить состояние UFW, введите:
sudo ufw status verbose
По умолчанию инструмент UFW отключен, потому состояние будет таким:
Status: inactive
Если UFW включен, в строке состояния будет active, также на экране появится список установленных правил. К примеру, если брандмауэр разрешает трафик SSH (порт 22), вывод будет иметь такой вид:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Прежде чем приступить к настройке брандмауэра, нужно убедиться, что он поддерживает трафик SSH.
Политика по умолчанию
Начиная настройку брандмауэра, вы должны продумать и определить политику по умолчанию. Эти правила управляют обработкой трафика, который не отвечает другим правилам. По умолчанию UFW сбрасывает все входящие и разрешает все исходящие соединения.
Чтобы вернуться к исходным правилам брандмауэра, введите команды:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Если вы создали пользовательский набор правил, эти команды сбросят его и восстановят исходные правила. Теперь брандмауэр будет сбрасывать все входящие и разрешать исходящие соединения.
Стандартные правила брандмауэра подходят для персональных компьютеров; серверам обычно необходима возможность принимать входящий трафик.
Настройка соединений SSH
Если включить UFW сейчас, он заблокирует все входящие соединения. Потому нужно создать правила, которые разрешат входящий трафик заведомо безопасных сервисов (например, SSH и HTTP). Обязательно нужно разрешить трафик SSH на облачном сервере, так как этот протокол позволяет вам подключаться к серверу.
Чтобы разблокировать соединения SSH, введите:
sudo ufw allow ssh
Это правило разрешит входящие соединения порта 22 (порт SSH по умолчанию). UFW знает имена некоторых сервисов (в том числе и SSH). Все эти сервисы перечислены в файле /etc/services.
Вместо названия сервиса в правиле можно указать порт. Например:
sudo ufw allow 22
Если вы изменили порт SSH по умолчанию, укажите правильный номер порта в команде. К примеру, если вы заменили 22 номером 2222, команда будет выглядеть так:
sudo ufw allow 2222
Включение UFW
Чтобы включить UFW, введите:
sudo ufw enable
Вы получите предупреждение:
command may disrupt existing ssh connections
Это значит, что команда может сбросить все текущие ssh-соединения. Поскольку только что вы разблокировали трафик ssh, этого не произойдёт. Можно нажать y и продолжить.
Теперь брандмауэр включен. Чтобы просмотреть текущий набор правил, введите:
sudo ufw status verbose
Разрешение соединений
Теперь разблокируйте другие соединения, которые нужны для работы сервера. Список необходимых сервисов индивидуален для каждого сервера.
Ниже мы приведём несколько примеров правил наиболее востребованных сервисов.
HTTP (порт 80)
Незашифрованные соединения HTTP можно разблокировать с помощью команды:
sudo ufw allow http
или
sudo ufw allow 80
HTTPS (порт 443)
Зашифрованные соединения HTTPS можно разрешить при помощи команд:
sudo ufw allow https
sudo ufw allow 443
FTP (порт 21)
Соединения FTP используются для незашифрованного обмена файлами; этот метод передачи данных небезопасен, потому рекомендуется использовать зашифрованные соединения. Чтобы разблокировать FTP, введите:
sudo ufw allow ftp
или
sudo ufw allow 21/tcp
Настройка диапазонов портов
UFW позволяет разблокировать диапазон портов. Некоторые приложения используют несколько портов.
К примеру, чтобы разрешить трафик X11, нужно разблокировать порты 6000-6007:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
Указывая диапазон портов, вы должны задать протокол (tcp или udp). Если вы не укажете протокол, UFW будет использовать оба протокола.
Настройка IP-адресов
Также UFW может разрешить трафик определённых IP-адресов. К примеру, чтобы разрешить доступ IP-адресу 15.15.15.51, нужно ввести:
sudo ufw allow from 15.15.15.51
Вы можете ограничить доступ для IP конкретным портом. Например, чтобы разрешить IP-адресу SSH-доступ, используйте:
sudo ufw allow from 15.15.15.51 to any port 22
Настройка подсетей
Чтобы разблокировать подсеть IP-адресов, используйте CIDR-нотации для определения маски подсети. К примеру, чтобы разрешить трафик от диапазона IP-адресов 15.15.15.1-15.15.15.254, нужно ввести:
sudo ufw allow from 15.15.15.0/24
Аналогичным образом можно указать порт, доступ к которому есть у подсети. Например, чтобы открыть доступ к порту 22, нужно ввести:
sudo ufw allow from 15.15.15.0/24 to any port 22
Настройка сетевых интерфейсов
Правила брандмауэра могут быть предназначены для конкретного интерфейса. Для этого нужно ввести allow in on, а затем указать имя интерфейса.
Прежде чем продолжить, просмотрите свои сетевые интерфейсы.
ip addr
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
...
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
...
Имена интерфейсов выделены красным (обычно они называются eth0, eth1).
Чтобы разблокировать трафик HTTP для eth0, введите:
sudo ufw allow in on eth0 to any port 80
Чтобы сервер баз данных MySQL (порт 3306) мог прослушивать соединения интерфейса частной сети eth1, нужно ввести:
sudo ufw allow in on eth1 to any port 3306
Блокирование соединений
По умолчанию UFW блокирует все входящие соединения. В целом это очень безопасная политика.
Если вы хотите изменить политику брандмауэра по умолчанию на allow, вам нужно уметь блокировать трафик определённого вредоносного IP-адреса или подсети.
Правила, блокирующие трафик, пишутся точно так же, но вместо allow используется deny.
К примеру, чтобы заблокировать HTTP, нужно ввести:
sudo ufw deny http
Чтобы заблокировать все соединения адреса 15.15.15.51, введите команду:
sudo ufw deny from 15.15.15.51
Удаление правил брандмауэра
Существует два способа удалить правило: указать номер правила или само правило.
Удаление правила по его номеру
Для начала просмотрите список существующих правил. Для этого запросите состояние брандмауэра с опцией numbered.
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
К примеру, чтобы удалить правило 2 (открывающее трафик HTTP), нужно запустить команду:
sudo ufw delete 2
Программа запросит подтверждения.
Примечание: Если сервер поддерживает IPv6, нужно удалить соответствующее правило и для этого протокола.
Удаление правила
Также можно указать в команде само правило, которое нужно удалить. К примеру, чтобы удалить allow http, нужно запустить:
sudo ufw delete allow http
или
sudo ufw delete allow 80
Этот метод работает и для IPv4, и для IPv6.
Отключение UFW (опционально)
Если вы хотите отключить брандмауэр UFW, введите:
sudo ufw disable
Все правила будут дезактивированы.
Сброс правил UFW
Если вы хотите сбросить текущий набор правил UFW, запустите:
sudo ufw reset
Эта команда сбросит все текущие правила брандмауэра. Имейте в виду: при этом политика по умолчанию не будет восстановлена.
После этого вы можете добавить новые правила.
Читайте также: Основы UFW: общие правила и команды фаервола