firewalld — это инструмент управления брандмауэром для операционных систем Linux . Он предоставляет функции брандмауэра, выступая в качестве интерфейса для фреймворка netfilter ядра Linux . Текущий бэкэнд firewalld по умолчанию — nftables . До версии 0.6.0 бэкэндом по умолчанию был iptables . [3] Благодаря своим абстракциям firewalld действует как альтернатива программам командной строки nft и iptables. Имя firewalld соответствует соглашению Unix об именовании системных демонов путем добавления буквы «d». [4]
firewalld написан на Python . Его планировалось перенести на C++ , но проект переноса был заброшен в январе 2015 года. [5]
firewalld поддерживает сети IPv4 и IPv6 и может администрировать отдельные зоны брандмауэра с различной степенью доверия, как определено в профилях зон . Администраторы могут настроить Network Manager для автоматического переключения профилей зон на основе известных сетей Wi-Fi (беспроводных) и Ethernet (проводных), но firewalld не может делать это самостоятельно. [6]
Службы и приложения могут использовать интерфейс D-Bus для запроса и настройки брандмауэра. [7] firewalld поддерживает временные правила, что означает, что количество подключений (или «попаданий») к службе может быть ограничено глобально. Нет поддержки подсчета попаданий и последующего отклонения соединения для каждого исходного IP; распространенная техника, используемая для ограничения воздействия взлома методом подбора и распределенных атак типа «отказ в обслуживании» . [8]
Синтаксис команд firewalld похож на другие интерфейсы iptables , такие как Uncomplicated Firewall (ufw) от Ubuntu, но более подробен . [8] Интерфейс командной строки позволяет управлять наборами правил брандмауэра для протокола, портов, источника и назначения; или предопределенных служб по имени.
Службы определяются как XML- файлы, содержащие сопоставления портов и протоколов, а также опциональную дополнительную информацию, например, указание подсетей и перечисление требуемых вспомогательных модулей ядра. [9] Синтаксис напоминает синтаксис файлов служб systemd . Простой файл служб для веб-сервера, прослушивающего порт TCP 443, может выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?> <service> <short> Веб- сервер </short> <description> Публичный веб- хостинг через HTTPS. </description> <port port= "443" protocol= "tcp" /> </service>
firewalld v0.9.0 добавил собственную поддержку пересылки вперед и выходных данных через объекты политики. [10] Это позволяет фильтровать трафик, проходящий между зонами. Политики поддерживают большинство примитивов firewalld, доступных для зон: службы, порты, пересылаемые порты, маскарад, расширенные правила и т. д.
По умолчанию firewalld не блокирует исходящий трафик, как того требуют стандарты, такие как NIST 800-171 и 800-53 . Однако исходящий блок может быть добавлен с помощью политики.
firewall-config — это графический интерфейс, который опционально включается в состав firewalld и поддерживает большинство его функций.
firewall-applet — это небольшая утилита-индикатор состояния, которая опционально включается в firewalld. Она может предоставлять уведомления журнала событий брандмауэра, а также быстрый способ открыть firewall-config. firewall-applet был перенесен из GTK+ в фреймворк Qt летом 2015 года после прекращения поддержки иконок в системном трее в GNOME Desktop . [11]
firewalld поставляется по умолчанию в следующих дистрибутивах Linux: [7]
firewalld включен по умолчанию во всех этих дистрибутивах. firewalld также доступен как один из многих вариантов брандмауэра в репозитории пакетов многих других популярных дистрибутивов, таких как Debian [13] или Ubuntu.