====== 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=} |