Настройка UFW в Ubuntu

Пошаговая настройка UFW в Ubuntu: базовые политики, разрешение SSH, управление правилами, ограничение доступа по IP и безопасная проверка.

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

В этой инструкции рассматривается только базовая настройка UFW и управление его правилами.

Проверено на: Ubuntu Server 24.04 LTS
Уровень сложности: начальный
Время выполнения: около 10 минут
Требуемый доступ: пользователь с правами sudo

Перед началом

При удалённой настройке firewall существует риск потерять SSH-доступ.

Перед включением UFW:

  • не закрывайте текущую SSH-сессию;
  • откройте второе окно терминала;
  • заранее разрешите фактический SSH-порт;
  • убедитесь, что доступна консоль управления VPS у провайдера.

Важно: если SSH работает не на порту 22, используйте реальный порт во всех примерах.

Проверка состояния UFW

Проверьте, установлен ли UFW:

ufw --version

Если команда отсутствует:

sudo apt update
sudo apt install -y ufw

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

sudo ufw status verbose

На новой системе обычно отображается:

Status: inactive

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

Запретите все входящие подключения:

sudo ufw default deny incoming

Разрешите исходящие подключения:

sudo ufw default allow outgoing

Такая схема подходит для большинства серверов:

  • входящие подключения запрещены;
  • исходящие разрешены;
  • нужные сервисы открываются отдельными правилами.

Разрешение SSH

Для стандартного порта:

sudo ufw allow 22/tcp comment 'SSH'

Можно использовать профиль приложения:

sudo ufw allow OpenSSH

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

sudo ufw app list

Проверьте подготовленные правила:

sudo ufw show added

Включение UFW

После добавления правила SSH включите firewall:

sudo ufw enable

Подтвердите действие:

y

Проверьте:

sudo ufw status verbose

Ожидаемый результат:

Status: active
Default: deny (incoming), allow (outgoing)

Сразу откройте новое SSH-подключение:

ssh ADMIN_USER@SERVER_IP

Если новое подключение работает, правило SSH настроено правильно.

Разрешение веб-портов

Для HTTP:

sudo ufw allow 80/tcp comment 'HTTP'

Для HTTPS:

sudo ufw allow 443/tcp comment 'HTTPS'

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

sudo ufw status numbered

Не открывайте порты заранее, если соответствующий сервис ещё не используется.

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

Пример для TCP-порта 8080:

sudo ufw allow 8080/tcp

Пример для UDP-порта 1194:

sudo ufw allow 1194/udp

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

Для TCP-диапазона:

sudo ufw allow 30000:31000/tcp

Для UDP-диапазона:

sudo ufw allow 30000:31000/udp

Ограничение доступа по IP

Разрешить любой трафик с конкретного адреса:

sudo ufw allow from 198.51.100.25

Разрешить доступ к SSH только с определённого IP:

sudo ufw allow from 198.51.100.25 to any port 22 proto tcp

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

sudo ufw allow from 192.0.2.0/24

Важно: ограничение SSH по IP подходит только при наличии постоянного административного адреса.

Ограничение частоты SSH-подключений

UFW поддерживает базовое ограничение повторных подключений:

sudo ufw limit 22/tcp comment 'SSH rate limit'

Такое правило временно блокирует адреса с большим количеством попыток подключения.

Проверьте:

sudo ufw status numbered

ufw limit не заменяет полноценный анализ журналов Fail2ban, но может использоваться как дополнительная мера.

Просмотр правил

Краткий список:

sudo ufw status

Подробный список:

sudo ufw status verbose

Правила с номерами:

sudo ufw status numbered

Правила в машинно-читаемом виде:

sudo ufw show added

Удаление правила по номеру

Сначала получите список:

sudo ufw status numbered

Удалите правило:

sudo ufw delete 3

После удаления номера оставшихся правил изменятся. Перед каждым удалением выводите список заново.

Удаление правила по содержимому

sudo ufw delete allow 8080/tcp

Для правила по IP:

sudo ufw delete allow from 198.51.100.25

Запрет конкретного IP

sudo ufw deny from 203.0.113.45

Проверьте:

sudo ufw status numbered

Для правил важен порядок. Более конкретное правило лучше размещать раньше общего разрешающего правила.

Вставка правила в определённую позицию

Добавить запрет первым правилом:

sudo ufw insert 1 deny from 203.0.113.45

Проверьте порядок:

sudo ufw status numbered

Отключение UFW

Временно отключить firewall:

sudo ufw disable

Правила сохранятся и будут применены после повторного включения:

sudo ufw enable

Сброс конфигурации

Удалить все правила и вернуть значения по умолчанию:

sudo ufw reset

После сброса UFW станет неактивным.

Предупреждение: при удалённой работе после сброса сначала заново разрешите SSH и только затем включайте UFW.

Проверка открытых портов

Посмотрите локально слушающие порты:

sudo ss -lntup

UFW управляет доступом к портам, но не запускает и не останавливает сервисы.

Если порт разрешён в UFW, но приложение его не слушает, подключение всё равно не будет работать.

Журналирование UFW

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

sudo ufw logging on

Установить средний уровень:

sudo ufw logging medium

Проверить состояние:

sudo ufw status verbose

Просмотреть сообщения:

sudo journalctl -k | grep -i ufw

Или:

sudo tail -f /var/log/ufw.log

Наличие отдельного файла зависит от конфигурации журналирования системы.

Отключить журналирование:

sudo ufw logging off

Проверка IPv6

Посмотрите настройку:

grep '^IPV6=' /etc/default/ufw

Обычно используется:

IPV6=yes

В этом случае UFW создаёт правила и для IPv4, и для IPv6.

Проверьте:

sudo ufw status

В списке могут отображаться отдельные правила с пометкой (v6).

Типичные проблемы

После включения пропал SSH

Используйте консоль VPS и выполните:

sudo ufw allow 22/tcp

Либо временно отключите UFW:

sudo ufw disable

Порт разрешён, но сервис недоступен

Проверьте, слушает ли приложение порт:

sudo ss -lntup

Проверьте состояние сервиса:

sudo systemctl status SERVICE_NAME --no-pager

Дублирующиеся правила

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

sudo ufw status numbered

Удалите лишнее правило по номеру:

sudo ufw delete RULE_NUMBER

UFW конфликтует с Docker

Docker может создавать собственные правила Netfilter и публиковать контейнерные порты в обход ожидаемой логики UFW.

Перед использованием Docker отдельно изучите взаимодействие Docker с firewall и не полагайтесь только на UFW для ограничения опубликованных контейнерных портов.

Одновременное использование nftables

Не управляйте одними и теми же правилами одновременно через UFW и собственную конфигурацию native nftables. Выберите один основной способ управления firewall.

Минимальная конфигурация веб-сервера

Пример для обычного сервера с SSH, HTTP и HTTPS:

sudo ufw default deny incoming
sudo ufw default allow outgoing

sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

sudo ufw enable
sudo ufw status verbose

Открывайте только те порты, которые действительно нужны серверу.

Итог

После выполнения инструкции:

  • установлены политики по умолчанию;
  • разрешён SSH;
  • включён UFW;
  • добавлены правила для нужных сервисов;
  • рассмотрено ограничение доступа по IP;
  • настроено управление и удаление правил;
  • проверены журналы и IPv6;
  • подготовлен безопасный способ отключения и сброса firewall.

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

← Предыдущая статья Отключение парольного входа SSH в Ubuntu Следующая статья → Автоматические обновления безопасности в Ubuntu