Как настроить брандмауэр с помощью 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