Firewalld — динамически управляемый брандмауэр с поддержкой зон сети, который определяет уровень доверия сетевых подключений или интерфейсов. Он поддерживает IPv4, настройки брандмауэра IPv6, мосты Ethernet и IP-наборы. Он также предоставляет интерфейс для служб или приложений для непосредственного добавления правил брандмауэра.
Первая модель брандмауэра с system-config-firewall / lokkit была статической, и каждое изменение требовало полного перезапуска брандмауэра. Она включала также выгрузку модулей ядра сетевого фильтра брандмауэра и загрузку модулей, необходимых для новой конфигурации. Разгрузка модулей привела к нарушению состояния брандмауэра и установлению соединений.
Демон брандмауэра динамически управляет Firewalld и применяет изменения без его перезапуска. Поэтому нет необходимости перезагружать все модули ядра брандмауэра. Но использование демона требует, чтобы все изменения брандмауэра выполнялись синхронизировано с этим демоном.
Демон Firewall не может разобрать правила брандмауэра, добавленные инструментами командной строки iptables и ebtables. Демон предоставляет информацию о текущих настройках активного брандмауэра через D-BUS, а также принимает изменения через D-BUS с использованием методов проверки подлинности PolicyKit.
Таким образом, Firewalld использует зоны и службы вместо цепочек и правил для выполнения операций, и может управлять правилами динамического обновления и модификации без нарушения существующих сеансов и соединений.
Firewalld имеет следующие функции:
- API D-Bus.
- Временные правила брандмауэра.
- Богатый язык для описания правил брандмауэра.
- Поддержка IPv4 и IPv6 NAT.
- Зоны межсетевого экрана.
- Поддержка IP-набора.
- Логи отклоненных пакетов.
- Прямой интерфейс.
- Lockdown: Белый список приложений, которые могут изменить брандмауэр.
- Поддержка iptables, ip6tables, ebtables и брандмауэров ipset firewall.
- Автоматическая загрузка модулей ядра Linux.
- Интеграция с Puppet.
Чтобы узнать больше о Firewalld, перейдите по этой ссылке.
Как установить Firewalld
Перед установкой Firewalld убедитесь, что вы остановили iptables. Для этого введите:
sudo systemctl stop iptables
Затем убедитесь, что iptables больше не используется вашей системой:
sudo systemctl mask iptables
Теперь проверьте состояние iptables:
sudo systemctl status iptables
Теперь все готово для установки Firewalld.
Для Ubuntu
Чтобы установить Firewalld на Ubuntu, сначала необходимо удалить UFW, а затем установить Firewalld. Чтобы удалить UFW, выполните команду приведенную ниже.
sudo apt-get remove ufw
После удаления UFW введите:
sudo apt-get install firewall-applet
Или вы можете открыть Ubuntu Software Center и посмотреть или скачать «firewall-applet», а затем установить его на вашу систему Ubuntu.
Для RHEL, CentOS & Fedora
Введите ниже команду для установки Firewalld в вашей системе CentOS.
sudo yum install firewalld firewall-config -y
Как настроить Firewalld
Перед настройкой Firewalld мы должны знать его статус после установки. Чтобы это узнать, введите следующее:
sudo systemctl status firewalld
Поскольку Firewalld работает на основе зон, необходимо проверить все зоны и сервисы, даже учитывая, что мы еще не сделали никакой настройки.
Для зон
sudo firewall-cmd --get-active-zones
или
sudo firewall-cmd --get-zones
Чтобы узнать зону по умолчанию, выполните команду:
sudo firewall-cmd --get-default-zone
Для служб
sudo firewall-cmd --get-services
Здесь можно увидеть сервис, охваченный Firewalld.
Установка зоны по умолчанию
Важно отметить, что после каждой модификации вам нужно перезагрузить Firewalld, чтобы изменения вступили в силу.
sudo firewall-cmd --set-default-zone=internal
или
sudo firewall-cmd --set-default-zone=public
После изменения зоны проверьте, изменилась ли она или нет.
sudo firewall-cmd --get-default-zone
Добавление порта в общественной зоне
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
Это команда добавит TCP-порт 80 в публичную зону Firewalld. Также можно добавить желаемый порт, заменив 80 на любой необходимый.
Теперь перезагрузите Firewalld.
sudo firewall-cmd --reload
После проверьте статус, чтобы узнать, был ли добавлен порт tcp 80 или нет.
sudo firewall-cmd --zone=public --list-ports
Здесь вы можете увидеть, что был добавлен TCP-порт 80.
Также можно ввести:
sudo firewall-cmd --zone=public --list-all
Удаление порта из общественной зоны
Чтобы удалить порт Tcp 80 из общественной зоны, введите следующее.
sudo firewall-cmd --zone=public --remove-port=80/tcp
В вашем терминале будет отображен текст «success».
Добавление служб в Firewalld
Чтобы добавить службу ftp в Firewalld, выполните команду приведенную ниже:
sudo firewall-cmd --zone=public --add-service=ftp
В вашем терминале будет отображаться текст «success».
Аналогичным образом для добавления услуги smtp выполните команду:
sudo firewall-cmd --zone=public --add-service=smtp
При желании можно заменить ftp и smtp на собственный сервис, который вы хотите добавить в Firewalld.
Удаление служб из Firewalld
Чтобы удалить службы ftp и smtp из Firewalld, выполните команду:
sudo firewall-cmd --zone=public --remove-service=ftp
sudo firewall-cmd --zone=public --remove-service=smtp
Блокировка любых входящих и исходящих пакетов
Можно заблокировать любые входящие или исходящие пакеты / соединения, используя Firewalld. Это известно как “panic-on” Firewalld. Для этого выполните:
sudo firewall-cmd --panic-on
В вашем терминале будет отображаться текст «success».
После этого вы не сможете выполнить ping или просмотреть любой веб-сайт.
Чтобы отключить этот запрет, выполните команду:
sudo firewall-cmd --panic-off
Добавление IP-адреса в Firewalld
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.4" accept'
Таким образом, Firewalld будет принимать пакеты IPv4 от источника IP 192.168.1.4.
Блокировка IP-адреса от Firewalld
Аналогично, чтобы заблокировать любой IP-адрес:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.4" reject'
При этом Firewalld будет удалять / отбрасывать все пакеты IPv4 из исходного IP 192.168.1.4.
Спасибо за уделенное время на прочтение статьи!