❗ Вебсайт в стадии бета-тестирования. Возможны ошибки.

Управлять брандмауэром

UFW (Uncomplicated Firewall) — это интерфейс командной строки для программы iptables. Разработан для упрощения процесса настройки брандмауэра.

Непосредственно программа iptables имеет чрезвычайное множество вариаций управления брандмауэром. Однако эта утилита требует долгого вхождения, понимания и навыков. Для новичков создали дополнительный интерфейс UFW, позволяющий быстро освоить, настроить и легко управлять сложными процессами защиты трафика.

Рассмотрим как приложение UFW разрешает или блокирует входящие и исходящие соединения с сервером. Все примеры приведены для дистрибутива Debian GNU/Linux или Ubuntu.

Предварительная подготовка

Прежде чем начать проверьте, что у вас:

  • есть права доступа к серверу по протоколу SSH;
  • на компьютере установлен клиент SSH.

Установить UFW

В большинстве дистрибутивов GNU/Linux присутствует утилита UFW ( program for managing a Netfilter firewall). Можете проверить:

apt search ufw

Если утилита не установлена, то легко её установить:

sudo apt install ufw

Сразу же следует проверить поддержку протокола IPv6. Для этого открыть файл настройки:

cat /etc/default/ufw

И в следующей строке удалить комментарий, если он там присутствует:

IPV6=yes

Проверить правильность установки можно командой просмотра статуса работы программы:

ufw status

Значения по умолчанию

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

Включить, перезагрузить, отключить

Включают и отключают брандмауэр команды:

ufw enable
ufw disable

Изменить настройки

Разрешить входящие соединения

Для добавления порта следует указать его номер. Например:

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 21/udp

Возможно разрешить входящие соединения к определённым сервисам. Для этого указывают наименования этих сервисов. Например:

ufw allow mysql
ufw allow https

Возможно открыть сразу целый диапазон портов. Например:

ufw allow 6000:6500/tcp

Открыть все порты для определённого адреса IP. Например:

ufw allow from 192.168.0.100

Открыть определённый порт для заданного адреса IP. Например:

ufw allow from 192.168.0.200 to any port 8088

Открыть все порты для заданного сегмента подсети. Например:

ufw allow from 192.168.2.0/24

Запретить входящие соединения

По умолчанию UFW блокирует все входящие соединения. Поэтому обычно нет необходимости добавлять запрещающие правила. В общем случае ограничивают диапазон разрешённого. Например, запретить доступ к сервису SMTP:

ufw deny smtp

Запретить определённые порты:

ufw deny 389/tcp
ufw deny 137/udp

Запретить доступ по определённому адресу IP:

ufw deny from 192.168.0.150

Запретить доступ к диапазону портов:

ufw deny 8000:8200/tcp

Запретить доступ к диапазону портов для определённого адреса IP:

ufw deny from 192.168.0.150 to any port 8000:8200/tcp

Просмотреть введённые правила

Для просмотра всех введённых правил воспользуйтесь командой:

ufw show added

Удалить правило

Удалять правила можно по наименованию сервиса или по номеру порта. Например:

ufw delete allow mysql
ufw delete allow 443/tcp
ufw delete allow 21/udp

Важно!

Если вы управляете сервером по каналу SSH, никогда не удаляйте доступ к порту этого сервиса!

Возможно сочетать просмотр правил с удалением лишних. Для этого следует получить список пронумерованных правил:

ufw status numbered

А затем удалить правило по номеру:

ufw delete 20

Важно!

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

Включить журнал

Включить журналирование можно командой:

ufw logging on

Указать объём данных в журнале /var/log/ufw.log:

ufw logging medium

Читать журнал:

tail -f /var/log/ufw.log
grep -i ufw /var/log/syslog
grep -i ufw /var/log/messages
grep -i ufw /var/log/kern.log

Завершить изменения

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

ufw reload

Проверить порты

Команда просмотра статуса и открытых портов:

ufw status

Команда просмотра заданных правил:

ufw status verbose

Для проверки полезно использовать утилиту netstat. Но для этого нужно установить пакет net-tools:

sudo apt install net-tools

Проверка открытых портов:

netstat -lntu

Проверка какого-либо отдельного порта (например, 22):

netstat -tulpen | grep 22

Сбросить значения

В случае ошибок и конфликтов можно сбросить значения до состояния по умолчанию. Для этого введите команды:

ufw default deny incoming
ufw default allow outgoing

Сбросить все правила можно командой:

ufw reset

Важно!

Не рекомендую сбрасывать все правила командой reset! Таким образом можно потерять доступ к серверу по каналу SSH! И без обращения в службу поддержки нет возможности восстановить такой доступ.