Использование FirewallD на CentOS


Инструкция по установке и использованию межсетевого экрана FirewallD на виртуальных серверах под управлением Centos.

Что такое FirewallD?

FirewallD - это внешний контроллер для iptables, используемый для реализации постоянных правил сетевого трафика. Доступен на всех дистрибутивах Linux, но наиболее популярен в семействе CentOS. FirewallD использует несколько базовых понятий.

Базовые понятия FirewallD

Зоны

Демон firewalld управляет группами правил, используя объекты, называемые «зонами» (zones). Зоны - это набор правил, определяющий, какой трафик должен быть разрешен в зависимости от уровня доверия сетей, к которым подключен ваш компьютер. Сетевым интерфейсам назначается зона, определяющая поведение, которое должен разрешить брандмауэр.

Ниже приведена таблица зон, упорядоченных в соответствии с уровнем доверия, от ненадежного до доверенного.

Зона Описание
drop Все входящие соединения отклоняются без уведомления. Разрешены только исходящие соединения.
block Все входящие соединения отклоняются с сообщением icmp-host-prohibited для IPv4 и icmp6-adm-prohibited для Ipv6. Разрешены только исходящие соединения.
public Для использования в ненадежных общественных местах. Можно разрешать предопределенные входящие соединения.
external Для использования во внешних сетях с использованием NAT активируется, когда сервер используется в качестве шлюза или маршрутизатора. Разрешены только выбранные входящие соединения.
internal Для использования во внутренних сетях, когда система используется в качестве шлюза или маршрутизатора. Другие системы в сети, как правило, доверенные. Разрешены только выбранные входящие соединения.
dmz Используется для компьютеров, расположенных в вашей демилитаризованной зоне, которые будут иметь ограниченный доступ к остальной части сети. Разрешены только выбранные входящие соединения.
work Используется в рабочем пространстве. Другим компьютерам в сети, как правило, доверяют. Разрешены только выбранные входящие соединения.
home Используется в домашнем пространстве. Другим системам в сети, как правило, доверяют. Разрешены только выбранные входящие соединения.
trusted Все сетевые подключения принимаются. Доверие ко всем компьютерам в сети.

Сервисы

Сервисы Firewalld - это предопределенные правила, которые применяются в зоне и определяют необходимые параметры входящего трафика для конкретной службы или программы.

Сохранение правил

Firewalld использует два набора конфигурации, временную и постоянную.

Временная конфигурация представляет собой фактическую рабочую конфигурацию и при перезагрузке не сохраняется. При включении сервера, когда служба Firewalld запускается, она загружает постоянную конфигурацию, которая дополняется временной конфигурацией.

По умолчанию при внесении изменений в конфигурацию Firewalld с использованием утилиты firewall-cmd изменения применяются к временной конфигурации. Чтобы изменения были постоянными, необходимо использовать флаг --permanent.

Установка FirewallD

Для установки FirewallD выполните следующую команду:

Чтобы брандмауэр включался при перезагрузке сервера выполните:

В результате вы увидите следующее сообщение:

Выполните перезагрузку, чтобы изменения вступили в силу:

Проверить состояние можно флагом --state:

Настройка брандмауэра

Узнать текущую зону можно с помощью команды:

В консоли отобразится зона по-умолчанию:

Вы можете вывести настройки конфигурации зоны с помощью:

Изменение зоны интерфейса

Вы можете легко изменить зону интерфейса, используя флаг --zone в сочетании с флагом --change-interface. Следующая команда назначит интерфейс eth0 рабочую зону:

При успешном изменении Вы увидите следующее сообщение:

Выполните проверку:

Результат:

Изменение зоны по умолчанию

Чтобы изменить зону по умолчанию, используйте флаг --set-default-zone, за которым следует имя зоны, которую вы хотите использовать по умолчанию. Например, чтобы изменить зону по умолчанию на домашнюю, вы должны запустить следующую команду:

Проверьте изменения:

Вывод:

Открытие порта или службы

С помощью FirewallD вы можете разрешать трафик для определенных портов на основе предопределенных правил, называемых сервисами. Чтобы получить список всех доступных по умолчанию типов служб:

Вы увидите длинный список доступных служб:

Вы можете найти дополнительную информацию о каждой службе, открыв соответствующий .xml-файл в каталоге /usr/lib/firewalld/services. Например, HTTP-служба определяется следующим образом:

Результат:

Чтобы разрешить входящий HTTP-трафик (80 порт) только для текущей конфигурации сеанса (временная конфигурация), выполните следующую команду:

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

Чтобы убедиться, что служба была успешно добавлена, используйте флаг --list-services:

В результате видно, что служба http отобразилась в списке:

Если вы хотите оставить порт 80 открытым после перезагрузки, необходимо использовать флаг --permanent:

Для удаления сервиса используйте флаг --remove-service:

Для открытия конкретного порта используйте следующую команду, указав вместо XXX - номер порта, a YYY - протокол tcp или udp:

Например:

Чтобы убедиться, что порт был успешно добавлен, используйте флаг --list-ports:

Синтаксис для удаления порта такой же, как при добавлении порта. Используйте --remove-port вместо флага --add-port:

Создание новой службы FirewallD

Сервисы по умолчанию хранятся в каталоге /usr/lib/firewalld/services. Самый простой способ создать новую услугу - скопировать существующий файл службы в каталог /etc/firewalld/services, который является местоположением для созданных пользователем служб и заменить в нем параметры.

Например, чтобы создать определение тестовой службы, мы можем использовать файл службы HTTP:

С помощью текстового редактора откройте скопированный файл:

Измените краткое имя и описание для службы в тегах <short> и <description>. Укажите порты и протоколы, которые необходимо открыть:

Сохраните файл и перезагрузите службу FirewallD:

Теперь вы можете использовать созданную службу в своих зонах так же, как и любую другую.

Последнее обновление: 17.03.2023