Инструкция по установке и использованию межсетевого экрана 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:
Теперь вы можете использовать созданную службу в своих зонах так же, как и любую другую.