Это руководство объясняет, что такое UFW, как установить UFW на Linux и как настроить брандмауэр UFW в различных операционных системах Linux.
- Введение
- Что такое UFW?
- Почему UFW, а не iptables?
- 1. Установка UFW на Linux
- 1.1. Включение, запуск и остановка службы UFW
- 3. Настройка брандмауэра с помощью UFW в Linux
- 3.1. Получение помощи
- 3.2. Установка правил по умолчанию
- 3.2.1. Проверка состояния правил межсетевого экрана UFW
- 3.2.2. Добавление правил
- 3.2.3. Удаление правил межсетевого экрана UFW
- 3.2.4. Включение, отключение и перезагрузка правил брандмауэра UFW
- 3.2.5. Добавление политики для диапазона портов
- 3.2.6. Добавление политики для определенных IP-адресов, подсетей и портов
- 3.2.7. Добавление политики сетевого интерфейса
- 3.2.8. Тестирование правил без их применения с помощью опции dry-run
- 4. Какое правило получает приоритет?
- 5. Ведение логов UFW
- 6. Профили приложений
- 7. Сброс брандмауэра UFW к политике по умолчанию
- Заключение
Введение
Безопасность – это серьезное дело.
Работаете ли вы с операционной системой Linux в центрах обработки данных или на своем ноутбуке, вы должны защитить свою операционную систему от всех возможных угроз.
На самом деле, серверы, работающие в корпоративной среде, будут хорошо защищены.
Большинство корпоративных компаний инвестируют миллионы долларов в защиту своей инфраструктуры.
Там будет отдельная сетевая команда, множество брандмауэров, команда безопасности для защиты вашей среды и серверов Linux.
Этого не произойдет, если вы используете Linux на своих настольных компьютерах или серверах.
Вы должны знать, как защитить свои Linux-машины с помощью правильных инструментов.
Одним из таких инструментов является UFW.
Что такое UFW?
UFW, расшифровывается как Uncomplicated Firewall, это программа межсетевого экрана, которая по умолчанию предустановлена в дистрибутивах на базе Ubuntu.
Почему UFW, а не iptables?
Вы можете задаться этим вопросом.
Если вы еще не знаете, Netfilter – это система фильтрации пакетов, поставляемая с ядром Linux, а iptables используется для управления сетевыми фильтрами с помощью набора команд.
Освоение iptables может занять много времени и оказаться сложной задачей.
Чтобы упростить управление брандмауэром, было создано множество дополнений к iptables.
UFW является одним из них.
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 itsecforu systemd[1]: Starting Uncomplicated firewall... Jul 05 20:08:01 itsecforu 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, первое, что нужно сделать после его установки, это обратиться к разделу справки и man-странице UFW, чтобы получить базовое представление об использовании UFW.
$ ufw --help
$ man ufw
Если вы забыли синтаксис или вам нужна справка по определенной функции ufw, эти две команды будут очень кстати.
3.2. Установка правил по умолчанию
Используя UFW, вы можете создавать правила брандмауэра (или политики) для разрешения или запрета определенной службы.
С помощью этих политик вы указываете UFW, какие порты, службы, IP-адреса и интерфейсы должны быть разрешены или запрещены.
Существуют политики по умолчанию, которые поставляются с ufw.
Политика по умолчанию отбрасывает все входящие соединения и разрешает все исходящие соединения.
ВАЖНО: Если вы настраиваете ufw на удаленном сервере, убедитесь, что вы разрешили порт или службу ssh перед включением брандмауэра ufw.
Политика входящих соединений по умолчанию будет запрещать все входящие соединения.
Поэтому если вы не настроили правила для разрешения SSH, вы будете заблокированы в удаленной системе и не сможете войти в нее.
Этого не произойдет, если вы запустите ufw на локальной системе.
Политики по умолчанию определяются в файле /etc/default/ufw.
Вот содержимое этого файла:
В качестве альтернативы можно использовать команду ufw allow, чтобы установить политики по умолчанию для входящих и исходящих команд:
$ 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
3.2.2. Добавление правил
$ 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 delete.
Например, если вы больше не хотите разрешать HTTP-трафик, просто выполните команду:
sudo ufw delete allow 80
3.2.4. Включение, отключение и перезагрузка правил брандмауэра UFW
Это отличается от включения и запуска демона UFW.
Запуск системного блока 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 будет по-прежнему запущен и включен при перезагрузке.
После добавления любой политики перезагрузите 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’ed) только с определенного 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. Тестирование правил без их применения с помощью опции dry-run
UFW имеет опцию –dry-run для тестирования правил без их фактического применения.
Например, при открытии порта SSH будет применено следующее:
$ sudo ufw --dry-run allow ssh
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, мое соединение будет отклонено.
$ sudo ufw logging off Logging disabled
5. Ведение логов UFW
Логи – лучший вариант, если что-то пошло не так.
Чтобы отключить ведение журнала UFW, выполните следующую команду:
$ sudo ufw logging off Logging disabled
Чтобы включить ведение логов UFW, выполните команду:
$ sudo ufw logging on Logging enabled
Существует четыре уровня ведения логов, а именно: low, medium, high, и 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
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, как установить и настроить брандмауэр UFW в Linux с помощью примеров команд.
Теперь настала ваша очередь протестировать ufw на вашей машине.
Я рекомендую протестировать ufw на любой виртуальной машине, прежде чем внедрять его на вашем компьютере или сервере.
Ufw также имеет множество графических интерфейсов.
Мы обсудим это в отдельной статье в ближайшее время.
Спонсор статьи –https://svcnet.ru
Где-то видел, что _перед_ установкой и включением ufw настоятельно рекомендуется полностью остановить iptables на постоянной основе, тк они могут конфликтовать. Напишите, пожалуйста, верно ли это и если да, то как это сделать.
Первый раз слышу 🙂