Как включить и настроить брандмауэр UFW в Ubuntu 22.04

Как включить и настроить брандмауэр UFW в Ubuntu 22.04

Защита сервера в Ubuntu 22.04 начинается с правильной настройки брандмауэра. UFW позволяет легко управлять входящими и исходящими подключениями. Рассказываем, как открыть порты и ограничить доступ по IP, как создавать правила и работать с профилями приложений. 

Брандмауэр — неотъемлемая часть защиты любой системы, и Ubuntu 22.04 предлагает для этого мощный встроенный инструмент: Uncomplicated Firewall (UFW). Это интерфейс для iptables, который упрощает управление сетевым трафиком, заменяя сложные команды iptables на интуитивно понятные правила. UFW контролирует входящие и исходящие соединения, блокируя неавторизованный доступ и снижая риски атак.

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

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Установка и активация брандмауэра

В Ubuntu 22.04 UFW предустановлен, но если его нет, выполните:

apt update
apt install ufw

Первая команда обновляет список доступных пакетов, а вторая — устанавливает пакет брандмауэра. После этого он будет установлен, но ещё не активен.

Важно!

Эта и все последующие команды выполняются с sudo или от имени root-пользователя.

Если вы настраиваете брандмауэр на удалённом сервере, то сначала разрешите SSH-подключения, и только после этого активируйте его. Это нужно, чтобы не потерять доступ, так как UFW с дефолтными настройками блокирует весь входящий трафик.

ufw allow ssh

Так вы откроете 22 порт для TCP. Если SSH работает на нестандартном порту (например, 2222), укажите его явно:

ufw allow 2222/tcp

Затем активируйте брандмауэр:

ufw enable

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

ufw status verbose

Вывод будет содержать Status: active (что подтверждает работу брандмауэра) и список правил.

Список текущих правил

По умолчанию в UFW все исходящие соединения разрешены, а все входящие запрещены, но мы можем задать правила, которые будут применяться выборочно по определённым признакам.

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

Чтобы открыть порт по протоколу:

ufw allow 80/tcp  # HTTP-трафик

Где:

  • allow — разрешает трафик;
  • 80/tcp — порт 80 с протоколом TCP. Для HTTPS — 443/tcp, для UDP укажите 80/udp.

Кроме порта можно использовать имена служб из /etc/services. Чтобы разрешить HTTP-трафик:

ufw allow http

Запрет соединений

Точно так же можно задать и блокировку:

ufw deny 23/tcp  # Запрет Telnet

Удаление правил и сброс настроек

Если вы создали правило, которое больше не актуально, его можно удалить. Посмотрите список правил с номерами и найдите нужное:

ufw status numbered

Удалите его по номеру в списке:

ufw delete 2  # Удалит правило №2 (в выводе numbered)

Если правила настроены некорректно, сбросьте настройки:

ufw reset  # Отключит брандмауэр и сотрёт все правила

Настройка для конкретных IP и подсетей

Чтобы упростить настройку доступа для популярных сервисов, UFW поддерживает профили приложений — готовые наборы правил для Apache, OpenSSH и других служб. Их можно использовать вместо ручного ввода портов и протоколов.

Разрешение по IP

Файрвол может разрешать подключение с доверенных IP. Пример для веб-сервера, доступного только из локальной сети 192.168.1.0/24:

ufw allow from 192.168.1.0/24 to any port 80 proto tcp

Разбор команды: 

  • from 192.168.1.0/24 — исходная подсеть,
  • to any — разрешение доступа к любому IP сервера,
  • port 80 proto tcp — порт и протокол.

Блокировка по IP

Запретите подключения с подозрительного адреса:

ufw deny from 203.0.113.5

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

В UFW (как и в большинстве брандмауэров) правила обрабатываются сверху вниз, в том порядке, в котором они добавлены.

Это означает следующее:

  • Важно, в каком порядке вы добавляете правила! Каждое новое правило (если не указан его номер) попадает в конец списка.
  • Первое совпавшее правило определяет судьбу пакета.
  • Как только трафик соответствует условиям правила, дальнейшие проверки прекращаются.
  • Правила, расположенные выше, имеют приоритет над нижними.

Если разрешающее правило находится выше запрещающего, то трафик, подпадающий под оба условия, будет разрешён. И наоборот: если запрещающее правило расположено выше разрешающего, трафик будет заблокирован, даже если ниже есть разрешение.

Как разрешить доступ для части диапазона

Допустим, вы хотите разрешить доступ с IP 192.168.1.10 и запретить всю подсеть 192.168.1.0/24.

Правильная настройка:

ufw allow from 192.168.1.10  # Правило 1: разрешение
ufw deny from 192.168.1.0/24  # Правило 2: запрет

Что произойдёт при попытке соединения: трафик с 192.168.1.10 совпадёт с первым правилом и будет разрешён. Остальные адреса из 192.168.1.0/24 попадут под второе правило и будут заблокированы.

Если же поменять порядок:

ufw deny from 192.168.1.0/24  # Правило 1: запрет
ufw allow from 192.168.1.10  # Правило 2: разрешение

То трафик с 192.168.1.10 сначала совпадёт с запретом для подсети и будет блокироваться. Разрешающее правило ниже не сработает, так как проверка прекратится после первого совпадения.

Доступ для определённых портов

Если нужно закрыть порт 22 (SSH), но сделать исключение для IP-адреса 203.0.113.5, то правильная настройка:

ufw allow from 203.0.113.5 to any port 22  # Разрешение
ufw deny 22  # Запрет

В итоге трафик с 203.0.113.5 на порт 22 разрешён, а все остальные подключения на этот порт запрещены. Если задать правила в обратном порядке, то любой трафик на порт 22 сначала попадёт под запрет. Разрешение не будет работать, так как проверка остановится на первом правиле.

Как управлять порядком правил

Посмотрите текущие правила. В выводе они будут пронумерованы:

ufw status numbered

Вы увидите:

Status: active
To                        Action      From
--                        ------      ----
[1] 22/tcp                ALLOW IN    203.0.113.5
[2] 22/tcp                DENY IN     Anywhere

Чтобы изменить очерёдность, удалите правило и задайте его заново, указав позицию:

ufw delete 2  # Удалить правило No2
ufw insert 1 deny 22  # Вставить запрет на позицию 1

Теперь порядок станет:

[1] 22/tcp                    DENY IN    Anywhere
[2] 22/tcp                    ALLOW IN    203.0.113.5

В результате SSH будет запрещён для всех, кроме 203.0.113.5.

Рекомендации. Нижние правила не перезаписывают верхние, если трафик уже обработан. Всегда размещайте узкие (специфичные) правила и исключения выше широких (общих), чтобы обеспечить корректную работу брандмауэра. Порядок добавления правил критичен: ошибка может привести к блокировке легитимного трафика или, наоборот, к открытию уязвимостей.

Таким образом:

  • Разрешение для конкретного IP → выше запрета для всей подсети.
  • Разрешение для порта → выше глобального запрета.

Проверяйте порядок через:

ufw status numbered

и тестируйте правила перед применением. Используйте telnet или nmap, чтобы проверить доступность портов:

nmap -p 22 ваш_сервер  # Проверка SSH

Работа с приложениями

Предустановленные профили

UFW, установленный через пакетный менеджер, уже включает в себя профили для некоторых служб. Они хранятся в:

/etc/ufw/applications.d

Посмотрите список:

ufw app list

Вывод:

Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Например, Apache Full открывает порты 80 (HTTP) и 443 (HTTPS). Чтобы активировать его, выполните:

ufw allow 'Apache Full'

Одинарные кавычки обязательны здесь и в любом другом названии профиля, которое содержит пробелы.

Чтобы запретить:

ufw deny 'имя'

Чтобы просмотреть информацию по конкретному профилю:

ufw app info 'имя'

Создание пользовательских профилей приложений

Допустим, вы запустили кастомный сервис на порту 8080. Создайте файл профиля:

nano /etc/ufw/applications.d/myapp

Добавьте конфигурацию:

[MyApp]
title=Custom Application
description=TCP port 8080 for custom service
ports=8080/tcp

Обновите список профилей:

ufw app update MyApp

Разрешите трафик:

ufw allow 'MyApp'

Настройка политик по умолчанию

UFW позволяет задать глобальные правила для необработанного трафика. Помните, что они должны находиться в конце списка:

ufw default deny incoming  # Блокировать все входящие соединения, кроме разрешённых
ufw default allow outgoing  # Разрешить серверу инициировать все исходящие соединения (обновления, запросы к API)

Расширенные возможности

Логирование

Включите запись блокируемых соединений:

ufw logging on

Логи сохраняются в:

/var/log/ufw.log

Возможные уровни детализации:

  • low — минимальная информация,
  • high — подробные данные (настройка в /etc/ufw/ufw.conf).

Разрешение пересылки (форвардинга)

Forwarding позволяет перенаправлять входящий трафик с одного порта на другой. Это нужно, если у системы несколько сетевых интерфейсов и она пересылает пакеты между ними: для маскировки внутренних IP, перенаправления портов, VPN-серверам. В примере разрешим передачу пакетов через систему на порт 8080:

ufw route allow proto tcp from any to any port 8080

Эта команда разрешит TCP-трафик через систему на порт 8080:

  • route allow — указывает, что правило применяется к трафику, проходящему через систему (форвардинг), а не к трафику, направленному непосредственно на сам хост. Это актуально, если система работает как роутер, шлюз или выполняет NAT.
  • proto tcp — правило действует только для TCP-протокола.
  • from any to any — разрешает трафик от любого источника (IP/сеть) к любому получателю (IP/сеть).
  • port 8080 — применяется к трафику, направленному на указанный порт (порт назначения).

Форвардинг трафика при этом должен быть включён в системе:

sudo sysctl -w net.ipv4.ip_forward=1

Если нужна более тонкая настройка, то придётся вручную настраивать правила iptables (в файле /etc/ufw/before.rules).

Завершив настройку, перезагрузите UFW:

ufw reload

Заключение

Ubuntu 22.04 иллюстрация

UFW в Ubuntu 22.04 — это просто и эффективно: базовую защиту можно настроить за 15 минут. Брандмауэр интегрирован с iptables и позволяет гибко настроить профили приложений, но для сложных сценариев придётся задавать правила iptables вручную.

Не забывайте следующее:

  • Всегда тестируйте правила перед применением в продакшне (production).
  • Регулярно обновляйте UFW командой «apt upgrade ufw».
  • Используйте логи для анализа аномалий.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях