Использование FirewallD на CentOS - настройка и правила
Что такое FirewallD
Программа представляет собой графическую оболочку для брандмауэра iptables и кроме интерфейса также отличается схемой взаимодействия:
- распределяет трафик не по зонам, а согласно правилам;
- содержит правила «белого» и «черного» списка, в соответствии с которыми работает на данной сетевой точке;
- может как ограничивать, так и блокировать трафик.
Опции
Firewalld имеет набор встроенных правил:
- Drop: запрещает входящие подключения, но разрешает исходящие.
- Block: исходя из наименования, полностью блокирует трафик.
- Public: открывает подключения через SSH и DHClient.
- External: активирует функцию NAT на выбранном сетевом интерфейсе.
- Internal или Home: открывает порты для служб SSH, Samba, mDNS и DHCP.
- Dmz: включает опцию «Демилитаризованная зона», которая разделяет частные сервисы от общедоступных.
- Work: открывает доступ службам SSH и DHCP.
- Trusted: переводится как «доверенный». Разрешает все соединения.
Кроме стандартного набора утилита поддерживает два режима загрузки. Первый называется Runtime. Он означает активность выбранных параметров до перезагрузки приложения или сервера. Если во время данного режима указываются дополнительные опции сохранения, то они остаются активными всегда.
Второй вариант — Permanent. Любые изменения, которые внесены в данном режиме, сохраняются навсегда.
Инсталляция
По умолчанию Firewalld не входит в состав CentOS. Установим его:
Для помещения его в автозагрузочную область прописываем:
Перезагружаем серверную платформу для активации изменений.
Конфигурирование Firewalld
Определим текущую настройку утилиты:
Сейчас установлен шаблон public, т.е. все разрешено. Если необходимо получить подробный отчет, то используем --list-all в качестве ключа. Результат приведен ниже.
Важно! Команда запускается только с правами sudo.
Смена политики и интерфейса
Для смены шаблона, используем ключ --zone совместно с опцией смены сетевого интерфейса --change-interface. Например, заменить политику public на work с ее активацией на eth0:
В случае успешной операции на мониторе появится соответствующее сообщение. Наберем следующую команду, чтобы убедиться в правильности выполненных действий:
Как видно на изображении выше, сетевой интерфейс использует политику work, а другие по-прежнему работают с public.
Если требуется сменить политику, которая наследуется по умолчанию для всех интерфейсов, используем другой синтаксис:
После выполнения команды всем сетевым интерфейсам пропишется шаблон home. Для показа текущего уровня вводим уже известный ключ --get-default-zone.
Открываем порт (сервис)
Firewalld также предоставляет сервисам доступ к портам используя ключ --add-service=<имя службы>. Для начала проверим список сервисов на сервере, запустив утилиту с опцией --get-services.
Получить подробную информацию о любом сервисе, обратившись через команду cat к внутреннему списку firewalld. Например, просмотрим описание службы audit:
Для активации порта любого сервиса из перечня прописываем в терминале:
Данная конфигурация будет активна только до перезагрузки серверной платформы. Чтобы сделать ее постоянной, прописываем ключ --permanent:
Если сервис audit больше не нужен, удалим его, используя опцию –remove-service=<имя службы>:
Альтернативный вариант открытия порта – указываем номер и имя протокола с указанием флага --add-port:
Важно! Любое изменение в списке сервисов можно отследить используя опцию --list-ports.
Удаление порта происходит при замене ключа --add-port на --remove-port с сохранением дальнейшего синтаксиса.
Как добавить новую службу
Как говорилось выше, полное описание служб внутри серверной ОС расположено по следующему пути: /usr/lib/firewalld/services/, далее идет xml-файл с именем службы.
Чтобы создать новый сервис, просто скопируем один из готовых вариантов в папку services, которая расположена внутри директории firewalld. В качестве примера взяли описание сервиса SSH и скопировали его с именем test:
Важно! Операция копирования выполняется только с правами администратора.
Откроем его при помощи текстового редактора nano:
На экране появится подробное описание сервиса SSH:
В первом пункте меняем название службы на произвольное. По полю short она активируется через команды в дальнейшем. Второй пункт дает полное описание сервиса: прописываем детально.
Третий шаг – указываем порты и протокол по которым она будет работать. В дальнейшем firewalld будет активировать значения после указания соответствующего ключа.
Отредактировав файл, сохраняем изменения и перезапускаем службу.