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).

Для тех, кому привычнее 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 использует сетевые зоны для определения уровня доверия сетевого соединения, соединение может являться частью только одной зоны, но одна зона может определять несколько сетевых подключений.

Для использования в общих случаях создано несколько предопределённых зон:

  • drop – входящие сетевые пакеты сбрасываются, без ответа, допускаются только исходящие соединения;
  • block – входящие сетевые соединения отклоняются с сообщением icmp-host-prohibited, допускаются только сетевые соединения инициированные внутри нашей системы;
  • public – при недоверии к компьютерам, разрешается устанавливать только конкретные входящие соединения;
  • external – для использования во внешних сетях с разрешенным маскарадингом, особенно для роутеров, разрешается устанавливать только конкретные входящие соединения;
  • dmz – для компьютеров собственной demilitarized zone которые публично доступны с ограниченным доступом к нашей внутренней сети, разрешается устанавливать только конкретные входящие соединения;
  • work/home/internal – максимальное доверие к компьютерам, уверенность в том, что они не приченят вреда нашему компьютеру, разрешается устанавливать только конкретные входящие соединения;
  • trusted – все сетевые соединения разрешены.

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