Как включить и настроить брандмауэр UFW в Ubuntu

Зачем нужен брандмауэр
Брандмауэр — это программный компонент, контролирующий входящий и исходящий сетевой трафик по набору правил. Он не заменяет другие меры безопасности (например, обновления и надёжные пароли), но служит важным барьером для снижения поверхности атаки.
UFW (Uncomplicated Firewall) — это удобный фронтенд к iptables, поставляемый с Ubuntu. Он позволяет быстро задать политики и правила без глубокого изучения синтаксиса iptables.
Ключевые понятия в одну строку:
- Правило (rule): инструкция разрешать или блокировать трафик по порту, сервису, IP или интерфейсу.
- Политика по умолчанию (default): поведение брандмауэра, когда правило не сработало (обычно deny incoming, allow outgoing).
Основные принципы перед началом
- Если вы управляете сервером по SSH, сначала разрешите SSH: иначе вы можете потерять доступ.
- Планируйте правила по принципу «минимально необходимые разрешения»: открывайте только нужные порты и только для тех адресов/сетей, которым вы доверяете.
- Перед массовым развёртыванием протестируйте правила локально или в тестовой среде.
Важно: при внесении правил для удалённого сервера всегда выполняйте команду разрешения SSH до включения UFW (см. чек-лист ниже).
Проверка статуса брандмауэра
По умолчанию брандмауэр может быть выключен. Проверьте статус командой:
sudo ufw statusПример вывода показывает, что брандмауэр активен и открыт порт 5900 (часто используется VNC).
Если статус — “inactive”, включите его после того, как добавите необходимые правила.
Включение UFW и базовые команды
Включить брандмауэр можно одной командой:
sudo ufw enableПосле включения UFW автоматически запускается при загрузке системы. При изменениях перезагрузите правила:
sudo ufw reloadПолезные команды управления:
sudo ufw status # краткий статус
sudo ufw status verbose # подробный статус
sudo ufw status numbered# нумерованный список правил для удаления
sudo ufw disable # временно выключить
sudo ufw reset # сбросить все правила к состоянию по умолчаниюЛогирование UFW
Чтобы отслеживать события брандмауэра, включите логирование:
sudo ufw logging onФайл логов: /var/log/ufw.log. Логи содержат IP-адреса и метаданные соединений — учитывайте требования конфиденциальности при их хранении и ротации.
Определение и удаление правил
Разрешение конкретного порта (HTTP):
sudo ufw allow 80
# или по имени сервиса
sudo ufw allow httpПосле этого статус покажет правило для порта 80:
sudo ufw statusЧтобы удалить правило по порту:
sudo ufw delete allow 80Если вы используете нумерованный вывод, удалять можно по номеру:
sudo ufw status numbered
sudo ufw delete <номер>Закрытие порта временно
Чтобы временно заблокировать порт, не удаляя правило, используйте deny:
sudo ufw deny 80Можно задавать протокол и интерфейс:
sudo ufw allow 8080/tcp
sudo ufw allow in on eth0 to any port 8080 proto tcpПрофили приложений
Некоторые приложения имеют файл профиля в /etc/ufw/applications.d. Просмотреть список профилей:
sudo ufw app listЧтобы разрешить приложение по имени:
sudo ufw allow 'Apache Full'Файл профиля показывает, какие порты и протоколы приложение использует.
Разрешение соединений по IP или подсети
Разрешить доступ только с конкретного адреса:
sudo ufw allow from 192.168.10.197Разрешить доступ из подсети на порт:
sudo ufw allow from 10.0.0.0/24 to any port 3306Удаление записи:
sudo ufw delete allow from 192.168.10.197Тестирование правил перед применением
UFW поддерживает dry-run для предварительной проверки влияния правила:
sudo ufw --dry-run allow sshЭто полезно для оценки конфликтов и последовательности правил без фактического изменения конфигурации.
Рекомендации по политике и жёсткому конфигу
Стандартные безопасные настройки для большинства серверов:
- Установите политики: запретить входящие, разрешить исходящие.
sudo ufw default deny incoming
sudo ufw default allow outgoing- Перед включением разрешите SSH:
sudo ufw allow OpenSSH
# или явно указать порт, если SSH работает на нестандартном порту
sudo ufw allow 2222/tcp- Ограничьте SSH подключениями (rate limiting):
sudo ufw limit OpenSSH- Интеграция с fail2ban: используйте fail2ban для блокировки атакующих IP на уровне приложений и системных логов.
Практические советы и сценарии
- Если вы администрируете удалённый сервер: всегда создавайте правило для SSH до включения UFW.
- Для тестовой среды: используйте более мягкие правила и логирование на повышенном уровне, чтобы собрать данные перед политикой deny.
- Для публичного веб-сервера: откройте только порты 80/443 и, при необходимости, мониторьте логи.
Мини‑методология: быстрый план развертывания UFW
- Проверьте текущие сервисы и порты (ss, netstat).
- Составьте список необходимых подключений (порт, протокол, источник).
- Разрешите SSH и доступ для управляемых IP.
- Установите политики default deny incoming / allow outgoing.
- Включите UFW и логирование.
- Тестируйте и корректируйте по результатам логов.
Ролевые чек‑листы
Администратор сети:
- Разработать политику по умолчанию.
- Согласовать список разрешённых сервисов.
- Настроить мониторинг и ротацию логов.
Разработчик/DevOps:
- Проверить, что CI/CD и сервисы имеют нужные порты.
- Добавить правила для среды тестирования.
Обычный пользователь:
- Не включать сложные правила без консультации администратора.
- Сообщать о подозрительной активности в логах.
Критерии приёмки
- UFW включён и имеет политику deny incoming.
- SSH доступ не потерян (проверка: подключение из внешней сети).
- Открыты только согласованные порты.
- Логирование включено и логи доступны для анализа.
Тесты и приемочные случаи
- Попытка подключения по закрытому порту должна быть отвергнута.
- Подключение с разрешённого IP должно проходить.
- –dry-run не меняет конфигурацию и показывает ожидаемые изменения.
Безопасное ужесточение и рекомендации
- Периодически просматривайте /var/log/ufw.log и системные логи.
- Настройте logrotate для безопасного хранения логов и соответствия требованиям конфиденциальности.
- Рассмотрите использование сетевых политик на уровне контейнеров (например, для Docker/Kubernetes) в дополнение к UFW.
- Для критичных сервисов используйте двухфакторную аутентификацию и VPN для административного доступа.
Короткая памятка команд (cheat sheet)
# Проверка
sudo ufw status verbose
# Включить/отключить
sudo ufw enable
sudo ufw disable
# Базовая политика
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Разрешить сервис
sudo ufw allow http
sudo ufw allow 443/tcp
# Ограничить SSH
sudo ufw limit OpenSSH
# Логи
sudo ufw logging on
# Удалить правило
sudo ufw delete allow 80
# Сбросить все правила
sudo ufw resetКраткая терминология
- UFW: простой инструмент управления брандмауэром в Ubuntu.
- iptables: низкоуровневый механизм фильтрации в ядре Linux.
- allow/deny/limit: основные действия для правил.
Когда брандмауэр не решит проблему
- Уязвимость в самом приложении или службе: брандмауэр не исправит баг в веб-сервере.
- Если злоумышленник уже получил локальный доступ — брандмауэр не поможет восстановить систему.
Резюме
UFW — надёжный и удобный инструмент для защиты Ubuntu-системы от нежелательных сетевых подключений. Следуйте базовым правилам: сохраняйте политику «deny incoming», разрешайте только необходимые сервисы, заранее защитите SSH и включайте логирование. В сочетании с обновлениями системы, надёжными паролями и инструментами вроде fail2ban UFW заметно повышает уровень безопасности.
Короткое объявление (для внутреннего канала, 100–200 слов):
UFW — простой способ защитить Ubuntu: перед включением разрешите SSH, настройте политику deny incoming и добавьте только требуемые порты/сервисы. Включите логирование и используйте –dry-run для тестирования. Интеграция с fail2ban и лимитирование SSH уменьшают риск перебора паролей. Для продакшена добавьте мониторинг логов и регулярную ревизию правил.
Похожие материалы
Быстрый доступ к Google Translate на телефоне
Реставрация старых фото в Photoshop
Как навести порядок в менеджере паролей
Snapdrop: обмен файлами между Linux, Android и iOS