Как настроить фаервол с помощью UFW в Ubuntu

4 минуты чтения
Средний рейтинг статьи — 4.7

UFW (Uncomplicated Firewall) — это простой интерфейс командной строки для управления брандмауэром iptables, созданный для упрощения настройки правил сетевой безопасности на системах на базе Ubuntu и Debian.

В этой статье мы рассмотрим, что такое UFW, как его установить, активировать и настроить базовые правила фильтрации входящих и исходящих подключений.

Что такое UFW

UFW расшифровывается как Uncomplicated Firewall, то есть «несложный фаервол». Это обёртка над iptables, сделанная Canonical (создателями Ubuntu), чтобы упростить управление сетевой безопасностью даже для новичков.

UFW предоставляет простую командную строку, которая позволяет:

  • Разрешать или блокировать доступ по IP, порту или протоколу.
  • Быстро включать/отключать фаервол.
  • Сохранять постоянные правила между перезагрузками.

Установка UFW

Во многих версиях Ubuntu UFW предустановлен по умолчанию. Чтобы убедиться в этом:

sudo ufw status

Если команда не найдена — установите вручную:

sudo apt update
sudo apt install ufw

Включение и выключение фаервола

Чтобы включить UFW:

sudo ufw enable

⚠️ Рекомендуется сначала задать правила, прежде чем активировать фаервол — иначе можно случайно отключить доступ по SSH.

Отключение:

sudo ufw disable

Проверка текущего состояния:

sudo ufw status verbose

Базовые команды и примеры

Разрешить доступ по порту

sudo ufw allow 22     # SSH
sudo ufw allow 80     # HTTP
sudo ufw allow 443    # HTTPS

Можно указать протокол:

sudo ufw allow 53/udp   # DNS по UDP

Запретить порт

sudo ufw deny 25     # SMTP

Удалить правило

sudo ufw delete allow 22

Разрешить только определённому IP

sudo ufw allow from 192.168.1.100

С указанием порта:

sudo ufw allow from 192.168.1.100 to any port 22

Если вы хотите разрешить доступ для целой подсети IP-адресов, вы можете использовать CIDR-нотацию для указания маски сети. Например, чтобы разрешить все IP-адреса в диапазоне от 203.0.113.1 до 203.0.113.254, используйте следующую команду:

sudo ufw allow from 203.0.113.0/24

Применение правил к определённому сетевому интерфейсу

Если вы хотите создать правило брандмауэра, которое будет применяться только к конкретному сетевому интерфейсу, вы можете указать это с помощью конструкции allow in on, а затем — имя интерфейса.

Прежде чем продолжать, узнайте список доступных интерфейсов на вашем сервере. Для этого выполните команду:

ip addr

Пример вывода:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state ...
...
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
...

Интерфейсы обычно имеют имена вида eth0, eth1, enp3s0 и т.д.

Разрешение трафика на внешний интерфейс

Допустим, у вашего сервера есть публичный сетевой интерфейс с именем eth0, и вы хотите разрешить HTTP-трафик (порт 80) только на нём. Для этого выполните:

sudo ufw allow in on eth0 to any port 80

Теперь ваш сервер сможет принимать HTTP-запросы с публичного интернета только на интерфейсе eth0.

Разрешение трафика на приватный интерфейс

Если, например, у вас есть база данных MySQL (порт 3306), которая должна принимать соединения только по внутреннему интерфейсу eth1, используйте следующую команду:

sudo ufw allow in on eth1 to any port 3306

Это позволит другим серверам во внутренней сети подключаться к вашей базе данных по интерфейсу eth1, при этом исключая доступ извне.

Установка политик по умолчанию

Рекомендуется сначала запретить всё входящее, разрешив только нужное:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Логирование

Включить логирование:

sudo ufw logging on

Логи будут в /var/log/ufw.log.

Проверка правил

sudo ufw status numbered

Пример вывода:

Status: active
 
     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW       Anywhere
[ 2] 80                         ALLOW       Anywhere
[ 3] 443                        ALLOW       Anywhere

Сброс всех настроек

sudo ufw reset

Можно ли использовать UFW на сервере с Docker?

Да, но есть нюансы: Docker может изменять iptables, игнорируя правила UFW. Чтобы избежать конфликтов, потребуется дополнительная настройка. Рекомендуется использовать docker-compose с iptables: false и управлять правилами вручную.

Заключение

UFW — это отличное решение для базовой настройки фаервола в Ubuntu. Он интуитивно понятен, легко устанавливается и обеспечивает достаточную гибкость для большинства задач. С его помощью можно эффективно ограничить доступ к серверу и защитить систему от нежелательных подключений. Даже если вы не специалист по безопасности, использование UFW поможет сделать вашу систему заметно безопаснее.

4 минуты чтения
Средний рейтинг статьи — 4.7

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний