ufw: настройка фаервола Ubuntu за 5 минут | Глоссарий FREEHOSTING

ufw

Uncomplicated Firewall
ufw — Утилита-обёртка над iptables и nftables в Ubuntu и Debian. Прячет сложный синтаксис правил за лаконичными командами allow, deny, limit и delete.

Определение простыми словами

ufw запускает iptables-restore с уже сгенерированным набором правил, освобождая администратора от запоминания флагов -A INPUT -p tcp --dport 22 -j ACCEPT. Достаточно ufw allow ssh. Под капотом утилита берёт сервис из /etc/services и правильно ставит правило в нужной цепочке netfilter.

В Ubuntu ufw встроен по умолчанию начиная с 8.04. На свежих версиях он переключается между бэкендами iptables и nftables прозрачно. Альтернативный фронтенд firewall-демон firewalld в Ubuntu не используется — там ufw считается каноном. Логи отправляются в /var/log/ufw.log с уровнями off, low, medium, high, full.

Сравнение ufw, iptables и firewalld

Параметр ufw iptables напрямую firewalld
Дистрибутивы по умолчанию Ubuntu, Debian Любой Linux RHEL, Fedora, CentOS
Сложность освоения Низкая Высокая Средняя
Зоны Нет Нет Да (public, trusted, dmz)
Профили приложений Да, /etc/ufw/applications.d Нет Да, services.xml
Откат правила delete <num> Ручной —remove-service

Кейсы использования

  • Базовая защита нового VPS: запретить всё входящее, разрешить SSH, HTTP, HTTPS — четыре команды.
  • Лимит подключений к SSH (защита от брутфорса) одной командой ufw limit ssh.
  • Профили приложений: ufw allow Nginx Full подтянет порты 80 и 443 разом.
  • Negative: для сложных конструкций (NAT, mangle, форвардинг между интерфейсами) ufw неудобен — придётся править /etc/ufw/before.rules вручную.
  • Negative: правил много — нумерация съезжает после каждого insert/delete, можно по ошибке открыть лишнее.

Технические детали

# Дефолт после установки
ufw default deny incoming
ufw default allow outgoing

# Базовый пакет правил для веб-сервера
ufw allow ssh
ufw limit 22/tcp comment 'rate-limit ssh'
ufw allow 80,443/tcp comment 'Nginx Full'
ufw allow from 10.0.0.0/8 to any port 5432 comment 'pg from internal'

# Включение и проверка
ufw enable
ufw status numbered verbose
ufw show added

# Удалить правило по номеру
ufw delete 3

# Просмотр логов в реальном времени
tail -f /var/log/ufw.log | grep -E 'BLOCK|LIMIT'

# Сброс к чистому состоянию
ufw reset

В тонких правилах удобно сочетать ufw и руками отредактированный /etc/ufw/before.rules. Туда добавляют NAT-таблицы для проброса портов и DROP по GeoIP через ipset.

Частые вопросы

ufw блокирует Docker — как починить?

Docker создаёт правила в цепочке DOCKER-USER в обход ufw. Решение — пакет ufw-docker или явные правила в /etc/ufw/after.rules с iptables-restore.

Можно ли использовать ufw на CentOS?

Технически да через EPEL, но рекомендуется firewalld — он интегрирован с systemd и поддерживает зоны из коробки.

Как ограничить вход по стране?

Через ipset с GeoIP-базой MaxMind. ufw сам по себе не умеет, но позволяет встроить готовый сет в before.rules.