Определение простыми словами
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.