Управлять брандмауэром
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! И без обращения в службу поддержки нет возможности восстановить такой доступ.