Что это такое?
UFW (Uncomplicated Firewall) - является самым простым и довольно популярным инструментарием командной строки для настройки и управления брандмауэром в дистрибутивах Ubuntu и Debian. Правильно функционирующий брандмауэр является наиболее важной частью полной безопасности системы Linux. UFW позволяет сделать базовые настройки, для более сложных настроек используйте iptables.
Первоначальные требования
Для того чтобы выполнить настройку firewall с помощью ufw необходимо подключиться к серверу с правами суперпользователя, о том как разрешить команду sudo для пользователей читайте в нашей инструкции.
На наших VPS по умолчанию включен iptables, крайне не рекомендуется использовать одновременно два инструмента для настройки firewall во избежание конфликта правил. В случае, если у вас одновременно работает и iptables, и ufw, то будет применено последнее созданное правило.
Установка и проверка статуса
По умолчанию, на наших виртуальных серверах ufw уже установлена, если по каким-то причинам требуется установка, то сделать это можно с помощью вашего пакетного менеджера:
sudo apt install ufw
Проверить текущий статус и вывести все текущие правила можно с помощью следующей команды:
sudo ufw status verbose
Например, в выключенном состоянии вы увидите следующее сообщение:
Status: inactive
Включить firewall можно с помощью следующей команды:
sudo ufw enable
В диалоговом окне необходимо ответить на вопрос, при использовании нашей инфраструктуры соединение не пропадет, если вы ранее не отключили iptables:
Command may disrupt existing ssh connections.
Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Примечание: если при настройке Firewall у вас все-таки пропало соединение с сервером, то подключитесь к нему через web-консоль в панели управления.
В результате ufw будет активен:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
Если Вам потребуется отключить утилиту, то используйте команду:
sudo ufw disable
Политики по умолчанию
По умолчанию брандмауэр UFW отклоняет все входящие соединения и разрешает только исходящие подключения к серверу. Это означает, что никто не может получить доступ к вашему серверу, если только вы специально не открываете порт, а все запущенные службы или приложения на вашем сервере могут иметь доступ к внешней сети.
Политики безопасности по умолчанию находятся в файле /etc/default/ufw и могут быть изменены с помощью следующей команды:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Первое правило запрещает все входящие подключения, второе разрешает исходящие.
Профили приложений
При установке программного пакета ufw с использованием диспетчера пакетов он будет включать в себя профили приложений, находящиеся в каталоге /etc/ufw/applications.d, который определяет приложение или службу и соответствующие им настройки безопасности, например открытые или закрытые порты.
Все профили создаются вручную. Посмотреть созданные профили можно следующим образом:
sudo ufw app list
На только, что созданном виртуальном сервере вы скорее всего увидите только профиль для OpenSSH:
Available applications:
OpenSSH
Для просмотра детальной информации можно использовать следующую команду:
sudo ufw app info '<название_ПО>'</название_ПО>
Например:
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
Для создания профиля приложения перейдите в директорию:
cd /etc/ufw/applications.d
Создайте текстовый файл с любым названием и вставьте в него строки следующего формата:
[<название_профиля>]
title=<заголовок>
description=<краткое описание>
ports=<список портов>/<протокол>
Например:
[App1]
title=Text editor
description=Most popular open source application for editing text.
ports=53,80,5223,16393:16472/udp
Для того, чтобы файл был виден брандмауэру, перезагрузите его:
ufw reload
Далее разрешите или запретите доступ профилю:
ufw <allow/deny> <название_профиля>
Например:
ufw allow App1
Работа с портами
Для открытия портов используется ключевое слово allow.
С помощью следующей команды можно открыть порт для входящих подключений:
sudo ufw allow <порт>/<протокол>
Например:
sudo ufw allow 1234/tcp
Также можно открывать порты по именам конкретных сервисов, например:
sudo ufw allow http
Примечание: если сервер использует порт не по умолчанию, то данное правило использовать нельзя.
ufw позволяет открывать или закрывать промежуток портов:
sudo ufw allow <портN>:<портM>/<протокол>
Например:
sudo ufw allow 5000:5003/udp
Для закрытия портов используйте ключевое слово deny. Синтаксис ufw остается прежним, только allow заменяется на deny. Например, чтобы закрыть порт используется следующая команда:
sudo ufw deny <порт>/<протокол>
Например:
sudo ufw deny 1234/tcp
Работа с IP-адресами
Чтобы разрешить соединение ко всем портам сервера с конкретного IP-адреса, используйте следующую команду:
sudo ufw allow from <IP-адрес>
К примеру:
sudo ufw allow from 111.111.111.111
Также можно разрешить подключаться к конкретному порту с определенного IP-адреса:
sudo ufw allow from <IP-адрес> to any port <порт>
Пример:
sudo ufw allow from 111.111.111.111 to any port 22
Для запрета подключения используйте ключевое слово deny:
sudo ufw deny from <IP-адрес>
Пример:
sudo ufw deny from 111.111.111.111
Работа с подсетью
С помощью утилиты ufw можно разрешить получение трафика со всей подсети с помощью нотации CIDR:
sudo ufw allow from <подсеть>
Например:
sudo ufw allow from 192.168.1.0/24
Также можно направить трафик с подсети на конкретный порт:
sudo ufw allow from <подсеть> to any port <порт>
Например:
sudo ufw allow from 192.168.1.0/24 to any port 22
Примечание: для запрета данных правил используйте ключевое слово deny.
Работа с сетевым интерфейсом
С помощью ufw можно настроить подключение к конкретному порту определенного интерфейса:
sudo ufw allow in on <имя интерфейса> to any port <порт>
Например:
sudo ufw allow in on eth2 to any port 22
Примечание: имена всех интерфейсов сервера можно просмотреть с помощью команды ifconfig -a.
Удаление правил
Для удаления правил выведете нумерованный список текущих правил:
sudo ufw status numbered
Удалите правила под нужным номером:
sudo ufw delete <номер_правила>
Пример:
sudo ufw delete 1
Также можно удалить правило с помощью ключевого слова delete, например:
sudo ufw delete allow 443