====== Использование утилиты UFW на Linux ====== ===== В инструкции описаны основы работы с утилитой ufw на виртуальных серверах под управлением Linux. ===== Что это такое? 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 <название_профиля> Например: 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 <порт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 К примеру: sudo ufw allow from 111.111.111.111 Также можно разрешить подключаться к конкретному порту с определенного IP-адреса: sudo ufw allow from to any port <порт> Пример: sudo ufw allow from 111.111.111.111 to any port 22 Для запрета подключения используйте ключевое слово deny: sudo ufw deny from Пример: 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