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

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

Что это такое?

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

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

Зоны

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

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

Сервисы

Сервисы 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:

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

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

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

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

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