Использование утилиты 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 <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

 


Средняя оценка: 5,0, всего оценок: 1