Firewalld — это отличная альтернатива iptables. Её используют сейчас в большинстве дистрибутивов Linux: RHEL, CentOS, Fedora. Firewalld предоставляет простой, удобный и значительно более гибкий способ управления правилами файрволла, нежели привычный многим iptables, который уже значительно устарел. Да, для простейших случаев настройка iptables — дело вроде бы несложное. Но вот если брать более сложные сети и большое количеством правил, то тут уже может серьёзно поплохеть. Иногда, чтобы изучить все настройки и понять, как это работает, нужно потратить значительно количество время. Давайте посмотрим в чем firewalld отличается iptables и как его настроить.
? Плюсы firewalld
- Динамическая настройка — изменения применяются без перезапуска служб и потери соединений.
- Зональная модель безопасности — можно настроить разные уровни защиты для интерфейсов.
- Поддержка rich rules и сервисов — удобнее управлять сложными правилами.
- Интеграция с D-Bus — позволяет управлять файрволлом программным образом.
? Минусы firewalld
- Меньший контроль — iptables даёт более низкоуровневый доступ к правилам.
- Сложнее отладки — из-за зональной модели иногда сложно понять, какие правила срабатывают.
- Привычка к iptables — многим администраторам привычнее классическая iptables.
Примеры настройки firewalld
1? Открываем порт. Открываем порт 80 для HTTP:
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload
2? Закрываем порт. Закрываем порт 22 (SSH):
sudo firewall-cmd --permanent --remove-port=22/tcp sudo firewall-cmd --reload
3? Добавляем сервис. Firewalld поддерживает предопределённые сервисы. Например, открываем SSH:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
Посмотреть список доступных сервисов можно так:
firewall-cmd --get-services
4? Используем зоны безопасности. Firewalld использует зоны для управления трафиком. Например, перемещаем интерфейс eth0 в зону «public»:
sudo firewall-cmd --permanent --zone=public --change-interface=eth0 sudo firewall-cmd --reload
Посмотреть текущую зону интерфейса:
firewall-cmd —get-active-zones
5? Создаём кастомное правило. Блокируем весь трафик с IP 192.168.1.100:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop' sudo firewall-cmd --reload
6? Временные правила. Можно временно открыть порт (например, на 5 минут):
sudo firewall-cmd --add-port=8080/tcp --timeout=300
После истечения времени правило удалится автоматически.
? Конвертация iptables в firewalld. Если у вас уже настроен iptables, можно конвертировать его правила в формат firewalld:
iptables-save > rules.v4 iptables-restore < rules.v4
Затем вручную перенести правила в firewalld, используя firewall-cmd.