В этой статье поговорим об инструменте для настройки сетевой защиты в 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