Введение / Зачем это нужно
Брандмауэр — это первый рубеж защиты любой сети Linux-системы. Правильно настроенный брандмауэр позволяет фильтровать входящий и исходящий трафик, блокировать нежелательные подключения и разрешать только необходимые сервисы. В этом руководстве вы узнаете, как быстро настроить два самых популярных инструмента — UFW (Ubuntu Firewall) и firewalld — и контролировать их работу.
Требования / Подготовка
- ОС: Ubuntu 20.04 LTS / 22.04 LTS, Debian 11, CentOS 8 (или любая современная дистрибутива на базе Debian/RHEL.
- Права root (или
sudo). - Подключение к интернету для установки пакетов.
- Два инструмента:
ufw(входит в стандартную поставку Ubuntu) иfirewalld(доступен в репозиториях большинства дистрибутивов).
Перед началом убедитесь, что у вас есть необходимые пакеты:
# Проверка установки UFW
which ufw
# Проверка установки firewalld
which firewall-cmd
Пошаговая инструкция
Шаг 1: Установите и активируйте UFW
💡 Совет: Используйте UFW для быстрой базовой защиты в Ubuntu/Debian.
sudo apt update && sudo apt install ufw # установка
sudo ufw default deny incoming # блокируем все входящие соединения
sudo ufw default allow outgoing # разрешаем исходящий трафик
sudo ufw enable # активируем брандмауэр
Шаг 2: Добавьте правила для нужных портов
⚠️ Важно: Разрешите только те сервисы, которые вам действительно нужны (например, SSH для удаленного доступа, HTTP/HTTPS для веб-сервера).
sudo ufw allow ssh # порт 22/tcp
sudo ufw allow http # порт 80/tcp
sudo ufw allow https # порт 443/tcp
sudo ufw reload # перезагружаем правила
Шаг 3: Проверьте статус UFW
sudo ufw status verbose
Вы увидите список активных правил и статус службы.
Шаг 4: Установите и запустите firewalld
💡 Совет: Firewalld предоставляет более гибкую зоновую модель и динамическое управление правилами.
# Для CentOS/RHEL
sudo yum install firewalld
# Для Debian/Ubuntu (если требуется)
# sudo apt install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --set-default-zone=external
Шаг 5: Настройте правила firewalld
⚠️ Важно: Правила, добавленные с
--permanent, сохраняются после перезагрузки системы.
# Постоянные правила
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=22/tcp
# Перезагрузка брандмауэра для применения правил
sudo firewall-cmd --reload
Проверка результата
После выполнения шагов убедитесь, что брандмауэр работает так, как ожидалось:
- Для UFW:
sudo ufw status numbered - Для firewalld:
sudo firewall-cmd --list-all
Эти команды покажут активные правила и текущий зоновый статус.
Возможные проблемы
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Невозможно подключиться по SSH после настройки | Правило ssh не добавлено или загружено | sudo ufw allow ssh и sudo ufw reload или sudo firewall-cmd --permanent --add-service=ssh + sudo firewall-cmd --reload |
| Брандмауэр не запускается при загрузке | Служба не включена | sudo systemctl enable ufw или sudo systemctl enable firewalld |
| Дублирующие правила вызывают конфликты | Повторное добавление одного и того же правила | Используйте sudo ufw delete allow 22/tcp или sudo firewall-cmd --remove-service=ssh --permanent перед повторным добавлением |
| Сервис работает локально, но недоступен извне | Правило для внешнего интерфейса отсутствует | В firewalld убедитесь, что зона external выбрана: sudo firewall-cmd --set-active-zone=external |
Если проблема сохраняется, проверьте системные логи:
# Для UFW
sudo ufw log on
# Для firewalld
journalctl -u firewalld -f
Эти инструменты помогут выявить точную причину сбоя и исправить конфигурацию.