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

UFW (uncomplicated firewall – несложный фаервол) на самом деле не брандмауэр, а интерфейс к IPTables. В свою очередь, утилиту iptables также часто называют брандмауэром, хотя она является интерфейсом управления к Netfilter.

Netfilter – это межсетевой экран Linux, настраиваемый через iptables. Настраивать правила фильтрации трафика через iptables относительно сложно, поэтому используют утилиту ufw, которая позволяет упростить процесс настройки.

Обычно в linux-системах ufw устанавливается по-умолчанию, а на VPS его обычно включает и первоначально настраивает хостер. По умолчанию же ufw выключен.

Некоторые программы, принимающие по сети данные, прописывают в ufw свои так называемые профили. Зарегистрированными таким образом сервисами можно управлять, обращаясь к ним по именам. Профили содержатся в каталоге /etc/ufw/applications.d/:

Профили приложений в ufw

Чтобы посмотреть список зарегистрированных профилей используется команда ufw app list

Список зарегистрированных в UFW приложений

Если файла приложения нет в /etc/ufw/applications.d/, это не значит, что оно не может получать данные по сети. Чтобы увидеть список всех программ, способных это делать, используется команда ufw status

ufw status

В примере трафик, приходящий по протоколу SSH, разрешен, так как OpenSSH находится в статусе ALLOW (позволять). Когда стоит DENY (отвергать), разрешить сервису получать данные можно командой
ufw allow имя_сервиса. Например, ufw allow OpenSSH.

Если приложение не имеет профиля в /etc/ufw/applications.d/, то можно указать номер порта, которым пользуется соответствующее приложение или его имя. В случае протокола SSH команды могут быть такими:

ufw allow ssh

или

ufw allow 22

В дальнейшем, при установке веб-сервера Apache или любого другого, трафик через него надо будет разрешить в ufw. Свой профиль Apache регистрирует самостоятельно.

Если изначально брандмауэр выключен, то есть команда ufw status возвращает Status: inactive, следует выполнить такую серию команд:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable

Параметр enable переводит ufw в активный статус. Если потребуется выключить, используется disable. Вместо команды sudo ufw allow ssh лучше включать по имени профиля: sudo ufw allow 'OpenSSH'.

Вопросы для самопроверки:

  1. Что такое UFW и какие задачи он решает?
  2. Чем является утилита iptables в контексте использования UFW?
  3. Как посмотреть список зарегистрированных профилей в UFW?
  4. Какие команды используются для того, чтобы разрешить трафик через SSH в UFW?
  5. Как узнать список всех программ, способных принимать данные по сети, используя UFW?