Используем firewalld вместо iptables — реальный пример настройки

настройка firewalld

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.

Оставьте комментарий