Поиск по сайту:

Как настроить брандмауэр с помощью UFW в Linux

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

Введение

Безопасность - дело серьезное. Независимо от того, используете ли вы операционную систему Linux в центрах обработки данных или на своем рабочем столе, вам следует защитить свою операционную систему от всех возможных угроз.

Фактически, серверы, работающие в корпоративной среде, будут хорошо защищены. Большинство корпоративных компаний инвестируют миллионы долларов в безопасность своей инфраструктуры.

Для защиты вашей среды и серверов Linux будет отдельная сетевая группа, группа брандмауэра и группа безопасности. Этого не произойдет, если вы используете Linux на своих настольных компьютерах или серверах.

Вы должны знать, как защитить свои машины с Linux с помощью подходящих инструментов. Одним из таких инструментов является UFW.

Что такое УФВ?

UFW, означает Uncomplexed Firewall, представляет собой программу брандмауэра, которая по умолчанию предустановлена в Ubuntu. -основанные распределения.

Почему UFW вместо iptables? Вы можете задаться вопросом.

Если вы еще не знаете, Netfilter — это система фильтрации пакетов, которая поставляется с ядром Linux, а iptables используется для управления сетевыми фильтрами с помощью набора команд.

Освоение iptables может занять время и оказаться непростой задачей. Чтобы упростить управление брандмауэром, создано множество интерфейсов для iptables. УФВ — один из них.

UFW — это интерфейс командной строки для управления iptables. Он обеспечивает основу для управления брандмауэром netfilter и управления им.

UFW доступен по умолчанию во всех установках Ubuntu после версии 8.04 LTS.

Существует также графический интерфейс для UFW под названием Gufw. Об этом мы поговорим в отдельном руководстве. В этой статье мы сосредоточимся на использовании ufw из командной строки.

Без лишних слов, давайте продолжим и посмотрим, как установить и настроить брандмауэр UFW в Linux.

1. Установите 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

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

В системах на базе Debian демон UFW запускается и включается автоматически.

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

systemctl status ufw

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

● ufw.service - Uncomplicated firewall
     Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor prese>
     Active: active (exited) since Mon 2021-07-05 20:08:01 IST; 44s ago
       Docs: man:ufw(8)
             man:ufw-framework(8)
             file://usr/share/doc/ufw/README
    Process: 21690 ExecStart=/usr/libexec/ufw/ufw-init start (code=exited, stat>
   Main PID: 21690 (code=exited, status=0/SUCCESS)
        CPU: 169ms

Jul 05 20:08:01 ostechnix systemd[1]: Starting Uncomplicated firewall...
Jul 05 20:08:01 ostechnix systemd[1]: Finished Uncomplicated firewall.

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

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

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

sudo systemctl start ufw

Ufw также должен быть включен для автоматического запуска между перезагрузками системы.

sudo systemctl enable ufw

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

sudo systemctl enable --now ufw

Чтобы остановить службу UFW, просто запустите:

sudo systemctl stop ufw

3. Настройте брандмауэр с помощью UFW в Linux.

3.1. Получать помощь

Если вы новичок в UFW, первое, что вам нужно сделать после установки, — это обратиться к разделу справки и справочной странице UFW, чтобы получить общее представление об использовании UFW.

ufw --help
man ufw

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

3.2. Установить правила по умолчанию

Используя UFW, вы можете создавать правила (или политики) брандмауэра, чтобы разрешить или запретить определенную службу. С помощью этих политик вы указываете UFW, какой порт, службу, IP-адреса и интерфейсы следует разрешить или запретить.

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

ВАЖНО: Если вы настраиваете ufw на удаленном сервере, убедитесь, что вы разрешили ssh-порт или службу перед включением брандмауэра ufw.

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

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

Политики UFW по умолчанию

Отсюда мы можем установить политики по умолчанию.

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

sudo ufw default deny incoming
sudo ufw default allow outgoing

3.2.1. Проверьте состояние правил брандмауэра 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 status verbose

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

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (SSH)               ALLOW IN    Anywhere                  
224.0.0.251 5353/udp (mDNS) ALLOW IN    Anywhere                  
22/tcp (SSH (v6))          ALLOW IN    Anywhere (v6)             
ff02::fb 5353/udp (mDNS)   ALLOW IN    Anywhere (v6)             

Чтобы просмотреть нумерованный формат, запустите:

sudo ufw status numbered

Посмотреть статус UFW

3.2.2. Добавить правила

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

sudo ufw allow ssh
sudo ufw allow 22
sudo ufw allow 22/tcp
sudo ufw allow 2222/tcp

Все команды служат одной цели.

[ 1 ] — В первой команде я разрешаю всем доступ к сервису ssh. UFW знает, что по умолчанию ssh прослушивает порт 22. Поэтому, когда вы используете службу разрешения ssh, она также применяет правило для порта 22.
[ 2 ] — во второй команде я явно говорю разрешить входящие соединения для порта 22.
[ 3 ] — третья команда аналогична второй команде. Он разрешает любой доступ к порту tcp 22. Поддерживаются протоколы TCP и UDP.
[ 4 ] — В четвертой команде я разрешаю пользовательскому порту ssh (т. е. 2222) принимать входящие соединения.

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

sudo ufw allow 5433

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

sudo ufw deny 5433

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

3.2.3. Удалить правила брандмауэра UFW

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

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

sudo ufw delete allow 80

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

Это отличается от включения и запуска демона UFW. Запуск модуля ufw systemd не приведет к соблюдению правил вашего брандмауэра. В 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 будет по-прежнему работать и включаться при перезагрузке.

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

sudo ufw reload

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

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

sudo ufw allow 8000:8080/tcp
sudo ufw deny 8000:8080/tcp

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

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

sudo ufw allow from 192.168.156.2
sudo ufw allow from 192.168.156.2 to any port 2222

Первая команда позволяет указанному IP-адресу подключаться на основе открытых портов. Вторая команда указывает, что пользователь может подключиться к порту 2222 только из 192.168.156.2.

Чтобы разрешить группе IP-адресов из одной подсети подключаться к ssh, вы можете использовать подсеть при добавлении правила, разрешающего всем IP-частям этой подсети подключаться к порту 2222.

sudo ufw allow from 192.168.156.1/24 to any port 2222

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

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

sudo ufw allow in on en01 to any port 2222

3.2.8. Правила тестирования без их применения с использованием опции пробного прогона

В UFW есть опция --dry-run для проверки правил без их фактического применения. Например, следующее будет применено при открытии порта SSH:

 sudo ufw --dry-run allow ssh

Пробный запуск команд UFW

Как вы можете видеть в приведенном выше выводе, команда ufw только выводит полученные правила, но не применяет их, когда мы добавляем параметр --dry-run. Это пригодится, если вы хотите протестировать какие-либо политики брандмауэра.

3.2.9. Добавьте комментарий к каждому правилу

Возможно, вы добавили несколько правил. После определенного количества правил (скажем, 50) у вас нет возможности вспомнить, о чем идет речь.

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

sudo ufw allow 22 comment 'open port 22 for ssh'

Приведенная выше команда разрешит весь трафик на порт 22 и добавит комментарий к правилу. Таким образом, вы можете легко найти назначение конкретного правила.

4. Какое правило имеет приоритет?

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

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, мое соединение будет отклонено.

5. Регистрация UFW

Журналы — лучший выбор, если что-то пошло не так.

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

sudo ufw logging off
Logging disabled

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

sudo ufw logging on
Logging enabled

Существует четыре уровня ведения журнала: низкий, средний, высокий и полный. В зависимости от выбранного вами уровня журналы будут создаваться в файле /var/log/ufw.log. По умолчанию уровень журнала будет низким.

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

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

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

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

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

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

Например, если вы устанавливаете сервер OpenSSH с помощью apt, профиль будет создан для порта 22. Все профили приложений хранятся в каталоге /etc/ufw/applications.d.

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

sudo ufw app list

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

Available applications:
CUPS
OpenSSH

Это тестовая машина. Я установил только 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

7. Сбросьте брандмауэр 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'

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

Ufw также имеет множество графических интерфейсов. Один из них — Гуфв.

8. Gufw, графический интерфейс для UFW.

Некоторым из вас может быть неудобен режим командной строки. К счастью, для UFW доступен графический интерфейс.

Gufw — это графическое интерфейсное приложение для управления несложным межсетевым экраном (UFW) в Linux. Gufw в основном разработан для установки и настройки брандмауэра для настольных компьютеров Linux.

Обратитесь к следующему руководству, чтобы узнать, как установить и настроить Gufw в Linux:

  • Как настроить брандмауэр с помощью Gufw на рабочем столе Linux

Заключение

В этом руководстве мы обсудили, что такое UFW, как установить и настроить брандмауэр UFW в Linux с помощью примеров команд.

Теперь ваша очередь протестировать ufw на своей машине. Я предлагаю протестировать ufw на любой виртуальной машине, прежде чем внедрять его на своем рабочем столе или сервере.

Ресурс:

  • Документация Ubuntu

Связанное чтение:

  • Как повысить безопасность системы Linux с помощью Firejail

Статьи по данной тематике