В данное статье ознакомимся, что такое UFW, как установить UFW на Linux и как настроить брандмауэр UFW в различных операционных системах Linux.
UFW (Uncomplicated Firewall) — это программа межсетевого экрана, которая по умолчанию предустановлена в дистрибутивах на базе Ubuntu.

1. Iptables VS UFW

UFW является интерфейсом командной строки для управления iptables.
Он обеспечивает основу для управления и манипулирования брандмауэром netfilter.
UFW доступен по умолчанию во всех установках Ubuntu после версии 8.04 LTS.
Существует также графический интерфейс для UFW под названием Gufw.

2. Установка UFW на Linux

UFW поставляется предустановленным в большинстве дистрибутивов на базе Debian и Arch.

Чтобы проверить, установлен UFW или нет, выполните следующую команду:

$ which ufw
/usr/sbin/ufw
$ ufw version
ufw 0.36
Copyright 2008-2015 Canonical Ltd.

Если он не установлен в вашем дистрибутиве, вы можете установить его с помощью менеджера пакетов по умолчанию вашего дистрибутива.

Чтобы установить UFW в Alpine Linux, выполните:

$ sudo apk add ufw

Установка UFW в Arch Linux и его разновидности, такие как EndeavourOS и Manjaro Linux:

$ sudo pacman -S ufw

Установка ufw в Debian, Ubuntu и их производных:

$ sudo apt update
$ sudo apt install ufw

Установка UFW в Fedora:

$ sudo dnf install ufw

UFW доступен в репозитории [EPEL] для операционных систем Enterprise Linux, таких как RHEL, CentOS, AlmaLinux и Rocky Linux.

Включите репозиторий [EPEL] и установите UFW в RHEL, CentOS, AlmaLinux, Rocky Linux, как показано ниже:

$ sudo dnf install epel-release
$ sudo dnf install ufw

Установка UFW на openSUSE:

$ sudo zypper install ufw

3. Включение, запуск и остановка службы UFW

В системах на базе Debian демон UFW обычно запущен и включен автоматически.
Выполните следующую команду, чтобы проверить состояние службы UFW:

$ systemctl status ufw

Другой способ – проверить, включен ли и активен ли сервис UFW:

$ systemctl is-enabled ufw
$ systemctl is-active ufw

Выполните следующую команду для запуска службы UFW в автоматическом режиме после запуска системы:

$ sudo systemctl enable ufw

4. Настройка брандмауэра UFW в Linux

Политики по умолчанию определяются в файле /etc/default/ufw.

Можно использовать команду ufw allow, чтобы установить политики по умолчанию для входящих и исходящих команд:

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

Данные команды разрешают все исходящие соединения и запрещают все входящие подключения к серверу. Изначально, рекомендуется проверить, какие порты у вас уже открыты.

Добавление правил

На примере SSH продемонстрируем, как добавлять правила брандмауэра с помощью команды ufw.
Посмотрите на приведенные ниже команды:

Разрешим доступ к службе ssh. UFW знает, что по умолчанию ssh прослушивает порт 22.

$ sudo ufw allow ssh

Данная команда аналогична первой указываем разрешить входящие соединения для порта 22 по TCP и UDP портам.

$ sudo ufw allow 22

Командой ниже разрешаем подключение только по порту 22 TCP протоколу.

$ sudo ufw allow 22/tcp

Например, если вы хотите подключиться к PostgreSQL, работающему на порту 5433, то правило должно быть добавлено следующим образом.

$ sudo ufw allow 5433

Аналогично, мы можем использовать команду ufw deny для отклонения входящих соединений:

$ sudo ufw deny 5433

Эта команда запретит трафик на порту 5433.

Удаление правил межсетевого экрана UFW

Чтобы удалить правило или политику, вы можете использовать команду ufw delete.
Например, если вы больше не хотите разрешать HTTP-трафик, просто выполните команду:

sudo ufw delete allow 80

Добавление политики для диапазона портов

Вы можете добавить политику для диапазона портов вместо того, чтобы создавать политику для одного порта:

$ sudo ufw allow 8000:8080/tcp

Добавление политики для определенных IP-адресов, подсетей и портов

С помощью ufw можно создавать более тонкие правила.
Допустим, если вы хотите, чтобы к вашему серверу можно было подключиться только с определенного IP, вы можете сделать это, добавив следующее правило.

$ sudo ufw allow from 192.168.156.2 to any port 22

Добавление политики сетевого интерфейса

Вы также можете создавать политики на основе сетевых интерфейсов.
Следующая команда создаст политику входящих подключений для сетевого интерфейса en01 на порт 22.

$ sudo ufw allow in on en01 to any port 22

Тестирование правил без их применения с помощью опции dry-run

UFW имеет опцию –dry-run для тестирования правил без их фактического применения.

Например, при открытии порта SSH будет применено следующее:

$  sudo ufw --dry-run allow ssh
Как видно из приведенного выше результата, команда ufw выводит только результирующие правила, но не применяет их, когда мы добавляем опцию –dry-run.
Это удобно, когда вы хотите протестировать какие-либо политики брандмауэра.

Приоритет важен, когда вы создаете несколько правил для одной и той же службы/порта.

5. Приоритет правил UFW

Политики получают приоритет в порядке их создания.
Выполните следующую команду, которая выдаст вам политику вместе с ее приоритетом.

$ sudo ufw status numbered

Пример вывода:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere                  
[ 2] 2222                       ALLOW IN    Anywhere                  
[ 3] 2222                       ALLOW IN    192.168.156.2             
[ 4] 2222                       DENY IN     192.168.157.0/24          
[ 5] 22 (v6)                    ALLOW IN    Anywhere (v6)             
[ 6] 2222 (v6)                  ALLOW IN    Anywhere (v6)

Посмотрите на [ 4 ] в приведенном выше выводе.

Любое подключение к порту 2222 из подсети 192.168.157.0/24 должно быть отброшено.

Но когда я попытаюсь подключиться с любой машины из подсети, соединение будет разрешено, поскольку высокий приоритет был присвоен [ 2 ].

Чтобы отменить такое поведение, необходимо создать правила с приоритетом.

Вы можете удалить существующее правило и добавить новое правило с приоритетом и перезагрузить службу.

$ sudo ufw delete 4
Deleting:
deny from 192.168.157.0/24 to any port 2222
Proceed with operation (y|n)? y
Rule deleted
$ sudo ufw insert 2 deny from 192.168.157.0/24 to any port 2222
Rule inserted
$ sudo ufw reload
Firewall reloaded
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 2222 DENY IN 192.168.157.0/24
[ 3] 2222 ALLOW IN Anywhere
[ 4] 2222 ALLOW IN 192.168.156.2
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
[ 6] 2222 (v6) ALLOW IN Anywhere (v6)

Посмотрите на приведенный выше результат.

Приоритет переназначен на [ 2 ] и теперь, если я попытаюсь подключиться к порту 2222 с адреса 192.168.157.0/24, мое соединение будет отклонено.

$ sudo ufw logging off
Logging disabled

6. Включение, отключение и перезагрузка правил брандмауэра UFW

UFW имеет специальные команды для включения, отключения и перезагрузки правил брандмауэра.
Чтобы правила вступили в силу, необходимо выполнить следующую команду:

$ sudo ufw enable
Firewall is active and enabled on system startup

Как я уже упоминал, используйте следующую команду для просмотра состояния правил брандмауэра UFW:

$ sudo ufw status

Вывод:

Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)

Чтобы отключить правила брандмауэра, выполните команду:

$ sudo ufw disable
Firewall stopped and disabled on system startup

После добавления любой политики перезагрузите ufw, чтобы политика вступила в силу, используя команду :

$ sudo ufw reload

7. Ведение логов UFW

Логи – лучший вариант, если что-то пошло не так.

Чтобы отключить ведение журнала UFW, выполните следующую команду:

$ sudo ufw logging off
Logging disabled

Чтобы включить ведение логов UFW, выполните команду:

$ sudo ufw logging on
Logging enabled

Существует четыре уровня ведения логов, а именно: lowmediumhigh, и full.

В зависимости от выбранного уровня логи будут генерироваться в файл /var/log/ufw.log.

По умолчанию уровень логов будет low

Вы можете использовать приведенную ниже команду для установки нужного уровня:

$ sudo ufw logging [ high | medium | Full | Low ]

Чтобы проверить состояние ведения журнала и уровень логов, выполните команду ufw status и найдите запись о ведении журнала.

$ sudo ufw status verbose
Status: active
Logging: on (high)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

8. Профили приложений

Когда вы устанавливаете какие-либо пакеты с помощью менеджера пакетов (например, apt или pacman), в ufw будет создан профиль приложения, определяющий правила для этого пакета.

Например, если вы устанавливаете сервер OpenSSH с помощью apt, то профиль будет создан для порта 22.

Все профили приложений хранятся в каталоге /etc/ufw/applications.d.

Чтобы получить список профилей приложений, выполните следующую команду:

$ sudo ufw app list

Пример вывода:

Available applications:
CUPS
OpenSSH

Чтобы получить подробную информацию об этом профиле и о том, какую политику он применяет, выполните следующую команду:

$ sudo ufw app info 'OpenSSH'

Пример вывода:

Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp

9. Сброс брандмауэра UFW к политике по умолчанию

Если вы хотите очистить все созданные вами правила и сбросить их к политике по умолчанию, вы можете сделать это, выполнив команду ufw reset.

$ sudo ufw reset

Пример вывода:

Resetting all rules to installed defaults. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210705_131655'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210705_131655'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210705_131655'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210705_131655'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210705_131655'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210705_131655'

Когда вы выполняете эту команду, ваши текущие правила будут сохранены перед сбросом к профилю по умолчанию.

10. Краткий сборник команд UFW для настройки

Основные команды:

  • ufw default deny incoming – запретить все входящие соединения (состояние по умолчанию).
  • ufw default allow outgoing – разрешить все исходящие соединения (состояние по умолчанию).
  • ufw allow ssh – разрешить входящие соединения SSH через порт 22, например для управления удаленным сервером.
  • ufw allow port_number – указать порт для входящих соединений.
  • ufw enable – включить брандмауэр.
  • ufw status – проверка состояния брандмауэра и ufw status verbose – просмотр всех установленных правил.
  • ufw allow http или ufw allow 80 –  разрешить входящие соединения с незашифрованных серверов через HTTP.
  • ufw allow https или ufw allow 443 – разрешить входящие подключения с незашифрованных серверов по HTTP.
  • ufw allow port_number:port_number/tcp и ufw allow port_number:port_number/udp – разрешает диапазон портов с указанными протоколами TCP/UDP.
  • ufw allow from your_ip_address – разрешить подключения с указанного IP. Можно добавить к любому порту port_number, чтобы направить IP на определенный порт.
  • ufw deny http – запрет HTTP-соединений и ufw deny from your_ip_address – запрет всех соединений с определенного IP.
  • ufw status numbered – создать пронумерованный список правил брандмауэра.
  • ufw delete – удалить правила с помощью пронумерованного списка или правила allow (например, ufw delete allow http).
  • ufw disable – деактивация всех созданных правил.
  • ufw reset – отключить UFW и удалить все созданные правила.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.