Настройка UFW: включаем firewall в Ubuntu и открываем нужные порты
Настройка UFW сводится к четырём шагам: запретить входящие по умолчанию, разрешить SSH командой ufw allow OpenSSH, проверить правила и только потом выполнить ufw enable. В статье порядок действий для Ubuntu 26.04 и Debian 13, правила для веб-сервера и других служб, профили приложений, чтение логов и способы откатить ошибку.

Содержание
Что такое UFW и где он уже стоит
UFW (Uncomplicated Firewall) - надстройка над сетевым фильтром ядра. Сам он пакеты не фильтрует: он переводит короткие команды вроде ufw allow ssh в правила iptables, а в современных Ubuntu iptables работает через бэкенд nftables. Человеку не нужно помнить цепочки и таблицы, достаточно сказать, какой порт открыть.
В Ubuntu, включая 26.04 LTS, UFW установлен из коробки, но выключен. Проверить состояние:
sudo ufw status verbose
Ответ Status: inactive означает, что фильтрации нет и все порты, на которых что-то слушает, доступны из сети. На домашнем ноутбуке за роутером это не катастрофа, на VPS с публичным адресом это первое, что стоит исправить.
В других дистрибутивах картина такая:
# Debian 13
sudo apt install ufw
# Arch Linux
sudo pacman -S ufw
sudo systemctl enable --now ufw.service
В Fedora по умолчанию работает firewalld со своей утилитой firewall-cmd. Ставить UFW рядом с ним не нужно: два менеджера будут переписывать правила друг друга. Если хочется управлять фильтром без надстроек, посмотрите статью про nftables.
Как включить firewall в Ubuntu и не потерять SSH
Главная ошибка новичка на сервере: сначала ufw enable, потом мысль про SSH. После включения UFW по умолчанию режет все входящие соединения, и если правила для SSH нет, сессия обрывается. Вернуть доступ можно только через консоль хостера. Поэтому порядок такой:
- Задать политики по умолчанию.
- Разрешить SSH.
- Проверить список добавленных правил.
- Только потом включать.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw show added
sudo ufw enable
UFW предупредит, что команда может прервать текущие SSH-соединения, и попросит ввести y. Если правило для SSH есть, ничего не оборвётся. После включения UFW стартует автоматически при загрузке, отдельно включать службу в Ubuntu не нужно.
На настольном компьютере всё проще: SSH-сервера там чаще всего нет, поэтому достаточно двух политик и sudo ufw enable. Графическая оболочка GUFW (sudo apt install gufw) делает то же самое кнопками.
ufw allow ssh: варианты правил для удалённого доступа
Разрешить SSH можно тремя равноценными способами. Имя ssh UFW берёт из файла /etc/services, где за ним закреплён порт 22, а OpenSSH это профиль приложения, о профилях ниже.
sudo ufw allow ssh
sudo ufw allow 22/tcp
sudo ufw allow OpenSSH
SSH на нестандартном порту
Если sshd слушает, скажем, 2222, откройте именно этот порт, а старое правило для 22 удалите после того, как убедитесь, что вход по новому порту работает:
sudo ufw allow 2222/tcp
sudo ufw delete allow OpenSSH
В Ubuntu начиная с 22.10 SSH по умолчанию запускается через сокет-активацию, поэтому порт меняется не только в sshd_config: после правки нужно выполнить sudo systemctl daemon-reload и перезапустить ssh.socket. Подробности о настройке самого сервера в статье защита SSH.
Доступ только из своей сети
Домашний сервер незачем открывать всему миру. Правило с источником пускает только адреса локальной сети:
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
Ограничение перебора
Правило limit блокирует адрес, который открыл 6 и больше соединений за 30 секунд. От серьёзного перебора лучше защищают вход только по ключам и fail2ban, но как первый барьер работает:
sudo ufw limit ssh/tcp
Не держите одновременно allow и limit на один порт: сработает то правило, что выше в списке, и ограничение может оказаться бесполезным.
Открыть порт для веб-сервера и других сервисов
Синтаксис одинаковый для любых служб: порт, протокол, при необходимости источник и интерфейс.
# веб-сервер
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# диапазон портов, протокол обязателен
sudo ufw allow 6000:6007/tcp
# только на конкретном интерфейсе
sudo ufw allow in on wg0 to any port 445 proto tcp
# заблокировать конкретный адрес, вставив правило первым
sudo ufw insert 1 deny from 203.0.113.50
Порядок важен: UFW проверяет правила сверху вниз и останавливается на первом совпадении. Поэтому запрет для отдельного адреса вставляют командой insert 1, иначе более раннее allow его перекроет.
Отдельная ловушка для пользователей Docker. Порты контейнеров, опубликованные через -p 8080:80, Docker прописывает в свои цепочки раньше правил UFW, и контейнер оказывается доступен из сети, даже если ufw status про этот порт молчит. Безопасный вариант для служб, которые нужны только локально, публиковать порт на 127.0.0.1: -p 127.0.0.1:8080:80. Подробнее про установку и сеть в статье установка Docker.
Основные команды UFW
| Команда | Что делает |
|---|---|
ufw status verbose | Состояние, политики по умолчанию, уровень логов, правила |
ufw status numbered | Правила с номерами для удаления и вставки |
ufw allow порт/proto | Разрешить входящие на порт |
ufw deny порт | Молча отбросить пакеты |
ufw reject порт | Отклонить с ответом отправителю |
ufw limit порт/tcp | Разрешить, но блокировать частые подключения |
ufw delete номер | Удалить правило по номеру |
ufw insert N правило | Вставить правило на позицию N |
ufw app list | Список профилей приложений |
ufw logging уровень | off, low, medium, high, full |
ufw reload | Перечитать конфигурацию |
ufw disable | Выключить файрвол, правила сохраняются |
ufw reset | Выключить и удалить все правила |
Все команды, кроме справки, выполняются через sudo. Полный список опций в man ufw и на странице Uncomplicated Firewall в ArchWiki.
Профили приложений
Пакеты могут класть в /etc/ufw/applications.d/ описание портов, которые им нужны. Тогда вместо номеров пишут имя профиля. Список и содержимое смотрят так:
sudo ufw app list
sudo ufw app info OpenSSH
sudo ufw allow 'Nginx Full'
Имена с пробелами берите в кавычки. Профиль Nginx Full открывает 80 и 443, Nginx HTTPS только 443. Набор профилей зависит от установленных программ: Samba, CUPS, Apache и другие добавляют свои.
Для собственной службы профиль легко написать самому. Создайте файл, например /etc/ufw/applications.d/myapp:
[MyApp]
title=Моё веб-приложение
description=API и панель управления
ports=8000/tcp|8443/tcp
Затем обновите сведения о профиле и разрешите его:
sudo ufw app update MyApp
sudo ufw allow MyApp
Если позже порты поменяются, достаточно поправить файл и снова выполнить ufw app update: правила, созданные по профилю, обновятся.
Логи UFW: кто стучится и что блокируется
Логирование включается одной командой. Уровня low обычно хватает: в журнал попадают заблокированные пакеты, которые не подошли под политику. Уровни high и full пишут очень много, на загруженном сервере они быстро раздувают журнал.
sudo ufw logging low
Записи идут через журнал ядра с префиксом [UFW BLOCK] или [UFW ALLOW]. Если в системе работает rsyslog, в Ubuntu и Debian они дополнительно складываются в /var/log/ufw.log. Если файла нет, читайте journald:
sudo tail -f /var/log/ufw.log
sudo journalctl -k -g 'UFW BLOCK' --since today
В строке лога важны поля SRC (откуда), DPT (на какой порт) и PROTO. Если видите блокировки на порт, который вы как раз пытаетесь открыть, значит, правило не создано или стоит ниже запрещающего. Про размер журнала и ротацию есть статья сколько места занимает journald.
Отключение, сброс и типовые проблемы
Правило мешает работе: найдите его номер и удалите. Номера сдвигаются после каждого удаления, поэтому перед следующим снова смотрите список.
sudo ufw status numbered
sudo ufw delete 3
Перестала работать сеть в целом или непонятно, виноват ли файрвол: временно выключите его командой sudo ufw disable. Правила при этом сохраняются и вернутся после ufw enable. Начать с чистого листа можно через sudo ufw reset, старые файлы правил UFW сохранит с отметкой времени в /etc/ufw.
Настраиваете удалённый сервер впервые? Поставьте страховку: echo "ufw disable" | sudo at now + 5 minutes (нужен пакет at). Если после включения файрвола вы потеряете доступ, через пять минут он выключится сам. Всё прошло хорошо, отмените задание через atq и sudo atrm номер.
Правила не применяются к IPv6: проверьте, что в /etc/default/ufw стоит IPV6=yes, и выполните sudo ufw reload. Служба не слушает порт, хотя он открыт: файрвол тут ни при чём, проверьте её через ss -tlnp и systemctl status. Для домашнего сервера с несколькими службами полезно держать список открытых портов в голове, план такого сервера описан в статье домашний сервер на Linux.
Частые вопросы
Включён ли файрвол в Ubuntu по умолчанию?
Нет. UFW установлен, но неактивен. Проверьте командой sudo ufw status, а включайте через sudo ufw enable после того, как добавите нужные правила.
Чем ufw deny отличается от ufw reject?
deny молча отбрасывает пакет, клиент ждёт до таймаута. reject отвечает отказом, и клиент сразу видит, что порт закрыт. Для публичных серверов обычно используют deny.
Как открыть порт только для одного IP-адреса?
Используйте правило с источником: sudo ufw allow from 192.0.2.10 to any port 5432 proto tcp. Остальным адресам порт останется закрыт политикой по умолчанию.
Почему контейнер Docker доступен, хотя UFW порт не открывал?
Docker добавляет свои правила раньше правил UFW. Публикуйте порты локальных служб на 127.0.0.1 или настраивайте фильтрацию в цепочке DOCKER-USER.
Нужен ли UFW в Fedora?
Нет, в Fedora штатно работает firewalld. Используйте firewall-cmd, а UFW рядом не ставьте, чтобы два менеджера не конфликтовали.
Документация и источники
- Uncomplicated Firewall, ArchWiki, 2026
- ufw(8) manual page, Ubuntu Manpages, 2026
- UFW, Ubuntu Community Help Wiki, 2026
Читайте также
- Nftables: понятный firewall для домашнего компьютера и сервера
- Защита SSH-сервера в Linux: ключи, ограничения и журналирование
- Как подключиться по SSH из Linux и Windows: от первого входа до туннелей
- Установка Docker в Ubuntu, Debian и Fedora: официальный репозиторий и работа без sudo
- Домашний сервер на Linux: хранение, резервные копии и сервисы
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.