Ответ
UFW (Uncomplicated Firewall) — это фронтенд-интерфейс (программа-обертка) для управления netfilter (iptables/nftables) в Linux, разработанный для упрощения настройки базового межсетевого экрана. Его основная цель — сделать типовые операции по управлению фаерволом доступными без необходимости запоминать сложный синтаксис iptables.
Как это работает с точки зрения DevOps:
UFW транслирует простые команды пользователя в соответствующие правила iptables. Он управляется через командную строку и идеально подходит для автоматизации в скриптах развертывания (Ansible, Shell).
Базовые операции:
# 1. Включить UFW (после настройки правил!)
sudo ufw enable
# 2. Установить политики по умолчанию (Deny incoming, Allow outgoing — безопасный вариант)
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 3. Разрешить порты по номерам, именам служб или с указанием протокола
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80,443/tcp # HTTP/HTTPS
sudo ufw allow 'Nginx Full' # Используя предопределенный профиль приложения
# 4. Разрешить доступ с конкретного IP-адреса или подсети
sudo ufw allow from 192.168.1.0/24 to any port 22
# 5. Запретить порт
sudo ufw deny 23/tcp # Telnet
# 6. Просмотр статуса и правил с номерами
sudo ufw status numbered
# 7. Удаление правила по его номеру (из вывода `status numbered`)
sudo ufw delete 2
Интеграция с DevOps-практиками:
- Идемпотентность: Команды UFW можно безопасно выполнять многократно в скриптах конфигурации (Puppet, Ansible, Chef).
- Профили приложений: UFW может читать профили из
/etc/ufw/applications.d/. Это позволяет управлять доступом на уровне сервиса (например,sudo ufw allow 'OpenSSH'), что удобно для пакетного развертывания. - Логирование: Можно включить логирование попыток соединения:
sudo ufw logging on. Логи пишутся в/var/log/ufw.log. - Ограничения: Для сложных правил (например, NAT, маркировка пакетов, сложная rate-limiting) UFW не подходит. В таких случаях используется прямое управление nftables или специализированные решения (cloud firewall, WAF).
Вывод: UFW — отличный инструмент для быстрого развертывания базового фаервола на серверах, особенно в облачных средах. Он является стандартом де-факто для Ubuntu/Debian систем и обязательным элементом базовой харденизации (hardening).