Правильно функционирующий брандмауэр является одним из наиболее важных аспектов общей безопасности системы Linux. По умолчанию дистрибутив Debian и Ubuntu поставляется с инструментом настройки брандмауэра под названием UFW (Uncomplicated Firewall), который является самым популярным и простым в использовании инструментом командной строки для настройки и управления брандмауэром в дистрибутивах Ubuntu и Debian.
UFW (Uncomplicated Firewall) обычно установлен по умолчанию в Ubuntu и Debian, если нет, установите его с помощью диспетчера пакетов APT, используя следующую команду:
$ sudo apt install ufw
Проверка брандмауэра UFW
После завершения установки вы можете проверить статус UFW:
$ sudo ufw status verbose

Включение брандмауэр UFW
Вы можете активировать или включить брандмауэр UFW, используя следующую команду:
Чтобы отключить брандмауэр UFW, используйте следующую команду:
$ sudo ufw disable
Политика безопасности для UFW
По умолчанию брандмауэр UFW отклоняет все входящие соединения и разрешает только исходящие подключения к серверу. Это означает, что никто не может получить доступ к вашему серверу, если только вы специально не открываете порт, а все запущенные службы или приложения на вашем сервере могут иметь доступ к внешней сети.
Политики брандмауэра UFW находится в файле /etc/default/ufw и могут быть изменены с помощью следующей команды.
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
Профили приложений UFW
При установке программного пакета с использованием диспетчера пакетов APT они будут включать в себя профиль приложения в каталоге /etc/ufw/applications.d, который содержит настройки UFW.
Вы можете просмотреть все доступные профили приложений на своем сервере, используя следующую команду:
$ sudo ufw app list
Если вы хотите получить дополнительную информацию о конкретном профиле и определенных правилах, вы можете использовать следующую команду.
Разрешение соединения SSH на UFW
Как только вы включите брандмауэр UFW, он будет блокировать все входящие подключения, и если вы попробуете подключится к своему серверу через SSH, то это у вас не получится.
Давайте настроим SSH-подключение с нашим сервером, используя следующую команду:
$ sudo ufw allow ssh
Если вы используете пользовательский SSH-порт (например, порт 2222), вам необходимо открыть этот порт на брандмауэре UFW, используя следующую команду.
$ sudo ufw allow 2222/tcp
Чтобы заблокировать все подключения SSH, введите следующую команду.
$ sudo ufw deny ssh/tcp
$ sudo ufw deny 2222/tcp [If using custom SSH port]
Включение определенных портов в UFW
Вы также можете открыть определенный порт в брандмауэре, чтобы разрешить подключение через него к определенному сервису. Например, если вам необходимо настроить веб-сервер, который по умолчанию прослушивает порт 80 (HTTP) и 443 (HTTPS).
Ниже приведены несколько примеров того, как разрешать входящие подключения к службам Apache.
Открытие порта 80 HTTP на UFW
$ sudo ufw allow http [By service name]
$ sudo ufw allow 80/tcp [By port number]
$ sudo ufw allow 'Apache' [By application profile]
Открытие порта 443 HTTPS на UFW
$ sudo ufw allow http
$ sudo ufw allow 443/tcp
$ sudo ufw allow 'Apache Secure'
Разрешим диапазоны портов для UFW
Предположим, что у вас есть приложения, которые вы хотите запускать на нескольких портах (5000-5003), вы можете добавить все эти порты, используя следующие команды.
sudo ufw allow 5000:5003/tcp
sudo ufw allow 5000:5003/udp
Разрешим определенные IP-адреса
Если вы хотите разрешить соединения на всех портах с определенного IP-адреса 192.168.56.1, вам необходимо указать этот IP-адрес следующим образом:
$ sudo ufw allow from 192.168.56.1
Разрешим определенные IP-адреса по конкретному порту
Чтобы разрешить подключение на определенном порту (например, на порту 22) с вашего домашнего компьютера с IP-адресом 192.168.56.1, вам необходимо добавить номер порта и после него IP-адрес с которого будет происходить доступ:
$ sudo ufw allow from 192.168.56.1 to any port 22
Разрешим подсети для конкретного порта
Чтобы разрешить соединения для определенных IP-адресов от 192.168.1.1 до 192.168.1.254 для порта 22 (SSH), выполните следующую команду:
$ sudo ufw allow from 192.168.1.0/24 to any port 22
Разрешим доступ через определенный сетевой интерфейс
Чтобы разрешить соединения с определенным сетевым интерфейсом eth2 для конкретного порта 22 (SSH), выполните следующую команду:
$ sudo ufw allow in on eth2 to any port 22
Запретим соединения для UFW
По умолчанию все входящие соединения блокируются, если вы специально не открыли соединение с UFW. Например, вы открыли порты 80 и 443, а ваш веб-сервер подвергся атаке из неизвестной сети 11.12.13.0/24.
Чтобы заблокировать все подключения из этого сетевого диапазона 11.12.13.0/24, вы можете использовать следующую команду.
$ sudo ufw deny from 11.12.13.0/24
Если вы хотите заблокировать соединения на портах 80 и 443, вы можете использовать следующие команды:
$ sudo ufw deny from 11.12.13.0/24 to any port 80
$ sudo ufw deny from 11.12.13.0/24 to any port 443
Удаление правила UFW
Существует два способа удаления правил UFW, номера правила и фактического правила.
Чтобы удалить правила UFW, используя номер правила, сначала вам нужно просмотреть список созданных правил отсортированных по номерам, используя следующую команду:
$ sudo ufw status numbered
Образец вывода
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
Чтобы удалить правило номер 1, используйте следующую команду:
$ sudo ufw delete 1
$ sudo ufw delete allow 22/tcp
«Пробный запуск» на UFW
Вы можете запускать любые команды ufw, не внося никаких изменений в системный брандмауэр, используя флаг -dry-run, этот флаг просто показывает изменения, которые предположительно произойдут.
$ sudo ufw --dry-run enable
Сброс брандмауэр UFW
По той или иной причине, если вы когда-то захотите удалить/сбросить все правила брандмауэра, введите следующие команды, он вернет все ваши изменения:
$ sudo ufw reset
$ sudo ufw status
По сути брандмауэр UFW может делать все, что может сделать iptables. Этого можно добиться с помощью разных наборов файлов правил, которые являются не чем иным, как iptables-подобных соответствующих текстовые файлы.
Настройка ufw или размещение дополнительных команд iptables, не разрешенных с помощью команды ufw, — это всего лишь вопрос редактирования нескольких текстовых файлов.
- /etc/default/ufw: основная конфигурация для политик по умолчанию, поддержка IPv6 и модули ядра.
- /etc/ufw/before[6].rules: правила в этих файлах выполняются перед любыми правилами, добавленными с помощью команды ufw.
- /etc/ufw/after[6].rules: правила в этих файлах выполняются после любых правил, добавленных с помощью команды ufw.
- /etc/ufw/sysctl.conf: сетевые настройки ядра.
- /etc/ufw/ufw.conf: устанавливает, включена ли функция ufw при загрузке и устанавливает значение LOGLEVEL.