====== FirewallD. Знакомство ======
FirewallD - новая служба для динамического управления межсетевым экраном с поддержкой доверенных зон сетевых соединений или интерфейсов.
Ввиду того, что FirewallD запускается как служба, новые правила можно добавлять без перезапуска, как это было с iptables, то есть без сброса установленного фаервола и установления соединений заново. Изменения в конфигурации могут быть сделаны в любое время, причем применяются мгновенно: сохранять или применять изменения не требуется. Служба FirewallD использует инструментарий iptables (iptables tool) для взаимодействия с фильтром пакетов ядра.
==== Сравнение ====
Рассмотрим основные отличия FirewallD и iptables:
* Служба **iptables** хранит конфигурацию в ''/etc/sysconfig/iptables'' в то время как **FirewallD** хранит ее в различных XML-файлах в ''/usr/lib/firewalld/'' и ''/etc/firewalld/''. Интересно заметить, что файл ''/etc/sysconfig/iptables'' не будет существовать, если современную систему **Linux** (например, Red Hat Enterprise Linux) установить с **FirewallD** по умолчанию.
* Для **iptables** каждое изменение означало сброс старых правил и чтение всех новых из ''/etc/sysconfig/iptables'', однако для **FirewallD** не существует понятия «воссоздания» правил; при конфигурации только различия в правилах учитываются и применяются. Таким образом, **FirewallD** может изменять настройки во время выполнения без потери старых соединений.
Основное сходство: оба **iptables** и **FirewallD** используют одинаковый инструментарий **iptables** (iptables tool).
==== Отключаем FirewallD ====
Для тех, кому привычнее **iptables**, нежели чем **FirewallD**, его можно отключить и возобновить работу с **iptables**.
|# systemctl disable firewalld
# systemctl stop firewalld
# yum install iptables-services
# touch /etc/sysconfig/iptables
# touch /etc/sysconfig/ip6tables
# systemctl start iptables
# systemctl start ip6tables
# systemctl enable iptables
# systemctl enable ip6tables
|
Если все же осталось желание разобраться с **FirewallD**, то проверим наличие необходимых пакетов, и если их нет, то произведем их установку.
|yum -y install firewalld firewall-config
|
===== Концепция зон FirewallD =====
**FirewallD** использует сетевые зоны для определения уровня доверия сетевого соединения, соединение может являться частью только одной зоны, но одна зона может определять несколько сетевых подключений.
Для использования в общих случаях создано несколько предопределённых зон:
* ''drop'' – входящие сетевые пакеты сбрасываются, без ответа, допускаются только исходящие соединения;
* ''block'' – входящие сетевые соединения отклоняются с сообщением icmp-host-prohibited, допускаются только сетевые соединения инициированные внутри нашей системы;
* ''public'' – при недоверии к компьютерам, разрешается устанавливать только конкретные входящие соединения;
* ''external'' – для использования во внешних сетях с разрешенным маскарадингом, особенно для роутеров, разрешается устанавливать только конкретные входящие соединения;
* ''dmz'' – для компьютеров собственной demilitarized zone которые публично доступны с ограниченным доступом к нашей внутренней сети, разрешается устанавливать только конкретные входящие соединения;
* ''work/home/internal'' – максимальное доверие к компьютерам, уверенность в том, что они не приченят вреда нашему компьютеру, разрешается устанавливать только конкретные входящие соединения;
* ''trusted'' – все сетевые соединения разрешены.
===== Конфигурация FirewallD =====
**FirewallD** может быть настроен через инструмент конфигурации ''firewall-config'' с графическим интерфейсом, через командную строку ''firewall-cmd'' или интерфейс ''D-BUS''.
Доступ к инструмент конфигурации ''firewall-config'' с графическим интерфейсом осуществляется командой ''firewall-config'' или же запуском через меню.
После запуска будет виден список зон, о которых говорилось выше, можно выбрать любую из них и выполнить настройки.
На мой взгляд, наиболее удобным инструментом настройки остаётся командная строка и, соответственно, команда ''firewall-cmd''.
Рассмотрим наиболее используемые команды:
^Команда^Значение|
|firewall-cmd –state|Показать состояние FirewallD|
|firewall-cmd –reload|Перезагрузить FirewallD|
|firewall-cmd –get-zones|Показать список всех заданных зон|
|firewall-cmd –get-services|Список всех поддерживаемых служб|
|firewall-cmd –get-active-zones|Список всех активных зон|
|firewall-cmd [–zone=] –add-interface=|Добавить интерфейс к зоне|
|firewall-cmd [–zone=] –change-interface=|Изменить интерфейс у зоны|
|firewall-cmd [–zone=] –remove-interface=|Удалить интерфейс из зоны|
|firewall-cmd –panic-on|Режим паники, блокирующий все сетевые соединения|
|firewall-cmd –panic-off|Отмена режима паники|
|firewall-cmd [–zone=] –add-service= [–timeout=]|Добавить службу к зоне|
|firewall-cmd [–zone=] –remove-service= [–timeout=]|Удалить службу из зоны|
|firewall-cmd [–zone=] –add-port=[-]/ [–timeout=]|Добавить порт к зоне|
|firewall-cmd [–zone=] –remove-port=[-]/ [–timeout=]|Удалить порт из зоны|
|firewall-cmd [–zone=] –add-masquerade|Добавить маскарадинг к зоне|
|firewall-cmd [–zone=] –remove-masquerade|Удалить маскарадинг|
=== Добавить проброс портов к зоне ===
|firewall-cmd [--zone=] --add-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}
|
=== Удалить проброс портов из зоны ===
|firewall-cmd [--zone=] --remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}
|