Консультация Oblako.kz

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

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

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

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

Базовые понятия 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 выполните следующую команду:

yum install firewalld

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

systemctl enable firewalld

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

Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

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

shutdown -r now

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

firewall-cmd --state running

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

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

firewall-cmd --get-default-zone

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

public

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

firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

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

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

firewall-cmd --zone=work --change-interface=eth0

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

The interface is under control of NetworkManager, setting zone to 'work'.
success

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

firewall-cmd --get-active-zones

Результат:

work
  interfaces: eth0

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

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

firewall-cmd --set-default-zone=home

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

firewall-cmd --get-default-zone

Вывод:

home

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

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

firewall-cmd --get-services

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

RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin [...]

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

cat /usr/lib/firewalld/services/http.xml

Результат:



  WWW (HTTP)
  HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.
  

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

firewall-cmd --zone=work --add-service=http

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

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

firewall-cmd --zone=work --list-services

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

ssh dhcpv6-client http

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

firewall-cmd --permanent --zone=work --add-service=http

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

firewall-cmd --zone=work --remove-service=http --permanent

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

firewall-cmd --zone=work --add-port=XXX/YYY

Например:

firewall-cmd --zone=work --add-port=443/tcp

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

firewall-cmd --zone=work --list-ports

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

firewall-cmd --zone=work --remove-port=443/tcp

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

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

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

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/test.xml

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

vi /etc/firewalld/services/test.xml

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

Test Some useful description.

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

firewall-cmd --reload

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

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