Как настроить брандмауэр с UFW в Debian / Ubuntu?

В этой статье поговорим об инструменте для настройки сетевой защиты в Debian / Ubuntu — ufw. UFW (Uncomplicated Firewall или «простой брандмауэр») разработан для легкой настройки iptables и предоставляет дружественный способ создания сетевой защиты для IPv4 и IPv6.

Ядро линукс включает подсистему Netfilter (сетевой фильтр), который используется управления и контроля сетевого трафика передаваемого в или через ваш сервер. Все современные решения линукс по сетевой защите используют эту систему пакетной фильтрации.

https://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/firewall

Установка UFW

«Простой брандмауэр» можно легко установить, введя эту команду в терминал от имени суперпользователя:

sudo apt install ufw

Если на вашем сервере активирован протокол IPv6, то необходимо дополнительно настроить UFW для поддержки IPv6, чтобы UFW управлял правилами брандмауэра и для протокола IPv6, и для IPv4. Для этого откройте конфигурацию UFW с помощью nano или своего предпочитаемого редактора:

sudo nano /etc/default/ufw

и добавьте:

IPV6=yes

Если требуется сделать сброс и установить значения по умолчанию, используемые UFW, выполните следующие команды:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Это позволит вернее настроить «простой брандмауэр». Получим:

Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)

Эти команды задают значения по умолчанию, запрещая входящие соединения и разрешая исходящие. Такие параметры брандмауэра по умолчанию достаточны для персонального компьютера, но серверам обычно нужно отвечать на поступающие запросы внешних пользователей.

Разрешение SSH-подключений

Если мы сейчас активируем наш брандмауэр UFW, все входящие соединения будут запрещены. Это означает, что нам нужно создать правила, которые разрешают входящие соединения (например, SSH или HTTP).

Чтобы разрешить на сервере входящие соединения SSH, вы можете использовать следующую команду:

sudo ufw allow ssh

Получим:

Rule added
Rule added (v6)

Эта команда создаст правила брандмауэра, которые разрешат все соединения на порту 22, который демон SSH прослушивает по умолчанию. Если необходимо добавить произвольный порт, то используйте следующую команду:

sudo ufw allow 22557

Активация UFW

Теперь настало время активировать наш брандмауэр. По умолчанию изначально UFW выключен. Чтобы активировать его, используйте следующую команду:

sudo ufw enable

Теперь брандмауэр включен. Запустите команду следующую, чтобы посмотреть заданные правила.

sudo ufw status verbose

Получим:

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere                  
22357                      ALLOW IN    Anywhere                  
22/tcp (v6)                ALLOW IN    Anywhere (v6)             
22557 (v6)                 ALLOW IN    Anywhere (v6)   

Разрешение других подключений

Чтобы открыть стандартные порты для ВЕБ (80-ый и 443-й) мы можем, как в примере выше, явно их указать. Но есть и другой способ — воспользоваться готовым профилем. Введите команду , чтобы увидеть список доступных профилей:

sudo ufw app list

Воспользуемся заготовкой и разрешим соединения по этим портам:

sudo ufw allow http
sudo ufw allow https

Рассмотрим более сложный пример, который разрешит подключение к MySQL с определенного IP-адреса:

sudo ufw allow from 203.0.113.103 to any port 3306

Запрещение подключений

Если мы можем разрешать, то естественно в наших силах и запрещать соединения. И чтобы создать запрещающие правила, вы можете использовать описанные выше команды, заменив allow на deny .

Например, чтобы запретить HTTP-соединения, введем эту команду:

sudo ufw deny http

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

sudo ufw deny from 203.0.113.4

Пример запрета передачи данных по 25-му порту, который использует SMTP Mail:

sudo ufw deny out 25

Удаление правил

Для удаления правил можно воспользоваться методом с помощью их порядкового номера и первое, что вам нужно сделать, это получить список правил брандмауэра. У status команды UFW есть numbered опция, которая отображает числа рядом с каждым правилом:

sudo ufw status numbered

Если мы решим, что хотим удалить правило 2, разрешающее HTTP-соединения через порт 80, мы можем указать это в следующей delete команде:

sudo ufw delete 2

Отключение или сброс UFW

Эти команды отключат UFW и удалят все ранее определенные вами правила брандмауэра:

sudo ufw disable
sudo ufw reset

Графический интерфейс

Если вы не хотите управлять своим брандмауэром через командную строку, для ufw доступен графический пользовательский интерфейс под названием gufw. Вы можете установить его через предпочитаемый вами менеджер пакетов, выполнив поиск по запросу gufw, или вы можете выполнить следующую команду в терминале:

sudo apt install gufw