В этой статье мы разберем установку и настройку UFW – программы для управления брандмауэром, которая может быть полезна для ограничения нежелательного доступа к серверу VPS/VDS. Также мы рассмотрим, как открыть доступ к часто используемым приложениям после включения брандмауэра, сделав их доступными извне.
Что такое UFW
UFW (Uncomplicated Firewall) – программа для управления брандмауэром Netfilter, поддерживающая как nftables, так и iptables в качестве бэкенда. Использует командную строку для выполнения настроек и нацелена на простоту и удобство использования по сравнению с доступными альтернативами. UFW – стандартный файрвол или брандмауэр для ОС Ubuntu, традиционного дистрибутива Linux. Установлен по умолчанию для всех версий Ubuntu, начиная с 8.04 LTS.
Установка
В современных версиях Ubuntu UFW установлена изначально. Проверить наличие утилиты можно, выполнив команду:
dpkg -l ufw
Пример вывода:
||/ Name Version Architecture Description
+++-==============-=================-============-=========================================
ii ufw 0.36.1-4ubuntu0.1 all program for managing a Netfilter firewall
Если по какой-то причине программа не установлена, вы можете самостоятельно установить UFW, выполнив команды:
sudo apt update
sudo apt install ufw
После установки включите сервис UFW:
sudo systemctl enable --now ufw
Настройка UFW
UFW позволяет удобно задавать фильтрацию трафика, что может защитить сервер от нежелательных подключений. На Ubuntu настройка UFW довольно простая, хотя у нее есть некоторые особенности. В частности по умолчанию UFW не включается после установки, позволяя предварительно настроить нужные правила для избежания блокировки и потери доступа к серверу после того, как брандмауэр включится.
Перед включением брандмауэра откройте нужные для работы openssh-порты. Если для ssh используется стандартный порт 22, выполните команду:
sudo ufw allow openssh
Если вы изменяли порт ssh на вашем сервере, открыть его можно командой:
sudo ufw allow номер_порта/tcp
После открытия портов для включения UFW достаточно выполнить команду:
sudo ufw enable
Добавление правил
UFW позволяет создавать правила брандмауэра с различной степенью гранулярности. Общий синтаксис команды выглядит так:
sudo ufw <rule> <direction> from <source> proto <protocol> on <interface> to <addr> port <port> comment <comment>
Разберем структуру команды:
<rule>
– тип добавляемого правила. Возможные варианты:allow
– разрешить трафик;deny
– сбрасывать пакеты (создает правилоDROP
в iptables) без ответа клиенту;reject
– блокирует пакеты (создает правилоREJECT
в iptables), отвечая клиенту, что адрес недоступен;limit
– позволяет ограничить количество подключений до 6 за 30 секунд, может использоваться для ограничения количества попыток подключения по SSH.
<direction>
– позволяет указать направление трафика. Если параметр не указан, по умолчанию правило создается для входящего трафика. Возможные варианты:in
– входящий трафик;out
– исходящий трафик.
from <source>
– позволяет указать источник трафика, может быть как ip-адрес, так и подсеть.proto <protocol>
– позволяет задать протокол, для которого будет применяться правило.on <interface>
– позволяет задать интерфейс, для которого будет действовать правило.to <addr>
– задает, для трафика к какому адресу применяется правило. Может быть как ip-адрес, так и подсеть.port <port>
– задает порт, к которому применяется правило. Вы можете указать одиночный порт, несколько через запятую либо промежуток через “:”.comment <comment>
– комментарий к правилу.
При написании правила можно использовать как его короткое, так и полное написание. Обязательными являются только тип правила, источник или цель.
Рассмотрим несколько примеров.
Для блокировки всего трафика с IP 111.111.111.111
правило будет выглядеть следующим образом:
sudo ufw deny from 111.111.111.111
Если вам нужно заблокировать его для определенного порта, например, порта 22, укажите его в команде следующим образом:
sudo ufw deny from 111.111.111.111 port 22
Как открыть доступ к популярным приложениям
Чтобы некоторые приложения были доступны извне, потребуется разрешить доступ к ним. Ряд приложений предоставляют готовые правила для UFW. Просмотреть доступные UFW-правила для приложений вы можете командой:
sudo ufw app list
Пример вывода:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Например, чтобы открыть полный доступ к Nginx, можно выполнить команду:
sudo ufw allow “nginx full”
Однако подобные готовые шаблоны есть не для всех приложений. В таком случае можно создать правило для интересующего вас порта. К примеру, чтобы разрешить доступ к программе, использующей порт 9000
, введите следующую команду:
sudo ufw allow 9000
Как открыть доступ к MySQL
Чтобы открыть доступ для всех адресов к MySQL извне при использовании стандартного порта 3306
, выполните команду:
sudo ufw allow 3306
Чтобы предоставить доступ определенному IP-адресу или подсети, выполните команду:
sudo ufw allow from <IP> to any port 3306
К примеру, чтобы открыть доступ для IP 185.155.118.192
, введите следующую команду:
sudo ufw allow from 185.155.118.192 to any port 3306
Как открыть доступ к PostgreSQL
Для открытия внешнего доступа для всех адресов к PostgreSQL при использовании стандартного порта 5432
используйте команду:
sudo ufw allow 5432
Чтобы предоставить доступ только для определенного IP-адреса или подсети, используйте команду:
sudo ufw allow from <IP> to any port 5432
Так, например, для открытия доступа для IP 185.155.118.192
команда будет выглядеть следующим образом:
sudo ufw allow from 185.155.118.192 to any port 5432
Как открыть доступ для входящего HTTP-трафика
Чтобы открыть доступ для HTTP-трафика, используя стандартный порт 80
, добавьте правило командой:
sudo ufw allow 80
Как открыть доступ для входящего HTTPS-трафика
Открыть доступ для HTTPS-трафика на стандартном порту 443
можно, выполнив команду:
sudo ufw allow 443
Как удалить созданное правило
Для удаления правила используется команда ufw delete
, которой можно передать либо номер правила, либо само правило. Получить нумерованный список можно командой:
sudo ufw status numbered
Пример вывода:
Status: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] Anywhere REJECT IN 111.111.111.111
[ 3] Anywhere DENY IN 222.222.222.222
[ 4] Anywhere DENY IN 123.123.123.123 35/tcp
[ 5] Anywhere DENY IN 123.123.123.124 35
[ 6] Anywhere LIMIT IN 123.123.221.112 43
[ 7] Nginx HTTPS ALLOW IN Anywhere
[ 8] OpenSSH (v6) ALLOW IN Anywhere (v6)
[ 9] Nginx HTTPS (v6) ALLOW IN Anywhere (v6)
Для удаления правила с номером 4 команда будет выполняться следующим образом:
sudo ufw remove 4
Чтобы удалить это же правило, можно передать само правило:
sudo ufw remove from 123.123.123.123 port 35 proto tcp
Как выключить UFW
Мы уже разобрались, как включить UFW. Осталось выяснить, как при необходимости полностью отключить брандмауэр. Это вы можете сделать указанной ниже командой:
sudo ufw disable
Пример вывода:
Firewall stopped and disabled on system startup
Что делать, если не получается подключиться по ssh после включения
Если после включения UFW вам не удается подключиться к серверу по ssh, можно воспользоваться веб-терминалом для восстановления доступа к серверу. Для этого перейдите в панель управления, после чего нажмите на кнопку веб-терминала в левой части экрана:

В появившемся окне выберите нужный сервер и авторизуйтесь, используя соответствующие доступы. Пароль от пользователя root отправляется на ваш контактный email при создании сервера.
Частой причиной недоступности сервера по ssh после включения UFW является отсутствие порта sshd
в списке разрешенных. Проверьте, какой порт использует sshd
, выполнив команду:
sudo ss -tulpan | grep LISTEN.*sshd
Пример вывода:
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=849,fd=3))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=849,fd=4))
В данном случае нам нужен порт 22
. Проверьте существующие правила UFW, выполнив команду:
sudo ufw status numbered
Если в выводе нет правила, относящегося к openssh, или если вы изменяли стандартный порт sshd
и вашего порта также нет в выводе, добавьте правило командой:
sudo ufw allow <port>
В нашем случае это:
sudo ufw allow 22
Проверьте, добавилось ли правило, командой:
sudo ufw status numbered
Затем убедитесь, что ssh работает.
В данной статье мы рассмотрели настройку брандмауэра UFW.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.