Firewalld в Linux

Установка

Firewalld — это утилита для управления файерволом в linux.

Установка, запуск и включение автозапуска
yum install firewalld
systemctl start firewalld
systemctl enable firewalld
Чтобы любые изменения настроек вступили в силу, после правок должна быть выполнена команда
firewall-cmd --reload

Зоны

Firewalld имеет такое понятие как зоны — это наборы правил для определения уровня доверия сетевому соединению. Зоны назначаются сетевым интерфейсам. Зона может содержать несколько сетевых подключений, но сетевое соединение может входить только в одну зону.

    Есть 9 зон созданных по умолчанию:
  • trusted - все сетевые соединения разрешены
  • work/home/internal - максимальное доверие к компьютерам в сети, разрешается устанавливать только конкретные входящие соединения (по умолчанию SSH и DHCPv6 client, в home и internal плюс MDNS и Samba client)
  • dmz - для компьютеров, находящихся в демилитаризованной зоне, доступные из Сети и с ограниченным доступом к внутренней сети. Разрешаются только указанные входящие соединения (по умолчанию SSH)
  • external - правило, подходящее для роутеров, для использования во внешних сетях с разрешенным маскарадингом, с максимальным недоверием и четко установленными разрешенными входящими соединениями (по умолчанию SSH)
  • public - для использования в общественных местах, с максимальным недоверием к другим компьютерам, разрешены только конкретные входящие соединения (по умолчанию SSH и DHCPv6 client)
  • block - входящие сетевые соединения отклоняются с icmp-host-prohibited сообщением, разрешены только соединения, инициированные в этой системе
  • drop - разрешаются только исходящие соединения, все входящие блокируются
Описания зон также представлены в XML-файлах в каталоге
/usr/lib/firewalld/zones

После установки системы, по умолчанию обычно используется зона public.

  • firewall-cmd --get-zones вывод списка зон
  • firewall-cmd --get-default-zone вывод зоны по умолчанию, все пакеты не попадающие под определенные зоны обрабатываются ей
  • firewall-cmd --get-active-zones вывод названия активной зоны и какой интерфейс к ней привязан
  • firewall-cmd --get-zone-of-interface=ens192 вывод названия зоны, к которой привязан указанный интерфейс
  • firewall-cmd --zone=public --list-all вывод настроек указанной зоны
  • firewall-cmd --zone=public --list-services вывод сервисов, разрешенных в указанной зоне

Управление правилами

  • firewall-cmd --permanent --add-port=22/tcp разрешение соединения на указанный порт
  • firewall-cmd --zone=public --permanent --add-port=22/tcp добавление правила в указанную зону, если зона не указывается правило добавляется в зону по умолчанию
  • firewall-cmd --permanent --add-service=samba разрешение соединения для сервиса samba
  • firewall-cmd --remove-port=22/tcp удаление из правил разрешения для порта
  • firewall-cmd --remove-service=samba удаление из правил разрешения для сервиса
  • firewall-cmd --zone=public --remove-service=samba удаление сервиса из правил в указанной зоне
  • firewall-cmd --get-services вывод списка сервисов, для которых можно указывать названия при разрешении
  • firewall-cmd --info-service=samba вывод списка настроек, применяемых к сервису
  • firewall-cmd --list-ports вывод списка добавленных правил
  • firewall-cmd --panic-on включение режима блокировки всех соединений
  • firewall-cmd --panic-off отключение режима блокировки всех соединений
  • firewall-cmd --query-panic проверка, в каком режиме находится файрвол
Все настройки firewalld хранятся в xml файлах в каталоге и подкаталогах
/usr/lib/firewalld
Параметры для сервисов лежат в , в файлах описываются порты и протоколы, задействуемые сервисом
/usr/lib/firewalld/services
в файлах описываются порты и протоколы, используемые сервисом. Если нужно переопределить настройки или создать свой сервис, то можно скопировать файл из /usr/lib/firewalld/services в качестве шаблона в /etc/firewalld/services и изменить под свои условия.