Настройка 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-сервера. Сложные сетевые политики и крупную инфраструктуру обычно удобнее управлять специализированными средствами.