Знакомство с FirewallD

Знакомство с FirewallD

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

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.

1
2
3
4
5
6
7
8
9
# 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, то проверим наличие необходимых пакетов, и если их нет, то произведем их установку.

1
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 | Удалить маскарадинг |

Добавить проброс портов к зоне

1
firewall-cmd [--zone=] --add-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}

Удалить проброс портов из зоны

1
firewall-cmd [--zone=] --remove-forward-port=port=[-]:proto= { :toport=[-] | :toaddr=| :toport=[-]:toaddr=}