13.1 Настройка брандмауэра Firewall — РЕД ОС

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

Если в настройках интерфейса не указана никакая другая зона, после перезапуска брандмауэра интерфейс будет снова привязан к зоне по умолчанию. В РЕД ОС такие конфигурации хранятся в каталоге /etc/sysconfig/network-scripts, в файлах формата ifcfg-interface.

Чтобы определить зону интерфейса, откройте конфигурационный файл этого интерфейса, например:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

В конец файла добавьте переменную ZONE= и в качестве значения укажите другую зону, например, home:

Содержимое файла:

. . .

DNS1=2001:4860:4860::8844

DNS2=2001:4860:4860::8888

DNS3=8.8.8.8

ZONE=home

Сохраните и закройте файл.

Чтобы обновить настройки, перезапустите сетевой сервис и брандмауэр:

sudo systemctl restart network.service

sudo systemctl restart firewalld.service

После перезапуска интерфейс eth0 будет привязан к зоне home.

firewall-cmd --get-active-zones

home

interfaces: eth0

public

interfaces: eth1

Что такое firewalld

Программа представляет собой графическую оболочку для брандмауэра iptables и кроме интерфейса также отличается схемой взаимодействия:

  • распределяет трафик не по зонам, а согласно правилам;
  • содержит правила «белого» и «черного» списка, в соответствии с которыми работает на данной сетевой точке;
  • может как ограничивать, так и блокировать трафик.

Облачные серверыIntel Xeon Gold 6254 3.

Основные концепции firewalld, зоны и правила

Перед тем как приступить к установке и настройке firewalld, мы познакомимся с понятием зон, которые используются для определения уровня доверия к различным соединениям. Для различных зон firewalld можно применить различные правила фильтрации, указывать активные опции брандмауэра в виде предварительно определенных служб, протоколов и портов, перенаправления портов и rich-rules.

Firewalld фильтрует входящий трафик по зонам в зависимости от примененных к зоне правил. Если IP-адрес отправителя запроса соответствует правилам какой-либо зоны, то пакет будет отправляться через эту зону. Если же адрес не соответствует ни одной из настроенных на сервере зоне, пакет будет обрабатываться зоной используемой по умолчанию. При установке firewalld зона по умолчанию называется public.

В firewalld есть зоны, где уже предварительно настроены разрешения для различных служб. Можно использовать эти настройки или создавать собственные зоны. Список зон по-умолчанию, которые создаются при установке firewalld (хранятся в каталоге /usr/lib/firewalld/zones/):

Введение

firewalld — программное обеспечение для управления брандмауэрами, поддерживаемое многими дистрибутивами Linux. Выступает в качестве клиентского интерфейса для встроенных в ядро Linux систем фильтрации пакетов nftables и iptables.

В этом обучающем руководстве мы покажем, как настраивать брандмауэр firewalld для сервера CentOS 8 и расскажем об основах управления брандмауэром с помощью административного инструмента firewall-cmd.

Что делать, если подходящая служба отсутствует?

В базовом комплекте firewalld представлены многие распространенные приложения, к которым вы можете захотеть предоставить доступ. Однако возможны ситуации, когда эти службы не будут соответствовать вашим требованиям.

В этой ситуации у вас будет два варианта.

Основные концепции в firewalld

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

В этом руководстве мы покажем вам, как настроить брандмауэр с firewalld в вашей системе centos 7, и объясним вам основные концепции firewalld.

Правильно настроенный межсетевой экран является одним из наиболее важных аспектов общей безопасности системы.

FirewallD – это законченное решение брандмауэра, которое управляет системными правилами iptables и предоставляет интерфейс D-Bus для их работы. Начиная с CentOS 7, FirewallD заменяет iptables как инструмент управления брандмауэром по умолчанию.

Перед началом работы с этим учебным курсом убедитесь, что вы вошли на свой сервер с учетной записью пользователя с привилегиями sudo или с пользователем root. Лучше всего запускать административные команды как пользователь sudo вместо root. Если у вас нет пользователя sudo в вашей системе CentOS, вы можете создать его, следуя этим инструкциям .

FirewallD использует понятия зон и сервисов вместо цепочки и правил iptables. На основе зон и служб, которые вы настраиваете, вы можете контролировать, какой трафик разрешен или запрещен в систему и из нее.

FirewallD можно настроить и управлять с помощью firewall-cmd утилиты командной строки.

Зоны – это предопределенные наборы правил, определяющие, какой трафик должен быть разрешен в зависимости от уровня доверия в сетях, к которым подключен ваш компьютер. Вы можете назначить сетевые интерфейсы и источники для зоны.

Ниже приведены зоны, предоставленные FirewallD, упорядоченные в соответствии с уровнем доверия зоны от ненадежного до доверенного:

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

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

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

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

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

  1. Firewalld по умолчанию устанавливается в CentOS 7, но если он не установлен в вашей системе, вы можете установить пакет, набрав:

    sudo yum install firewalld
    
    
  2. Сервис Firewalld по умолчанию отключен. Вы можете проверить состояние брандмауэра с помощью:

    
    sudo firewall-cmd --state
    
    

    Если вы только что установили или никогда не активировали ранее, команда напечатает not running. В противном случае вы увидите running.

  3. Чтобы запустить службу FirewallD и включить ее при загрузке, введите:

    
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    

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

sudo firewall-cmd --get-default-zone
public

Чтобы получить список всех доступных зон, введите:

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

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

sudo firewall-cmd --get-active-zones
public
  interfaces: eth0 eth1

Вывод выше говорит нам, что оба интерфейса eth0 и eth1 назначены для публичной зоны.

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

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

Из приведенного выше вывода, мы можем видеть , что публика зона активна и набор по умолчанию, используемый как eth0 и eth1 интерфейсов. Также разрешены подключения, связанные с DHCP-клиентом и SSH.

:/>  Вирус через бат

Если вы хотите проверить настройки всех доступных зон, введите:

sudo firewall-cmd --list-all-zones

Команда выводит огромный список с настройками всех доступных зон.

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

sudo firewall-cmd --zone=work --change-interface=eth1

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

sudo firewall-cmd --get-active-zones
work
  interfaces: eth1
public
  interfaces: eth0

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

Например, чтобы изменить зону по умолчанию на домашнюю, вы должны выполнить следующую команду:

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

Проверьте изменения с помощью:

sudo firewall-cmd --get-default-zone
home

С FirewallD вы можете разрешить трафик для определенных портов на основе предопределенных правил, называемых сервисами.

Чтобы получить список всех доступных по умолчанию сервисов, наберите:

sudo firewall-cmd --get-services

13.1 Настройка брандмауэра Firewall — РЕД ОС

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

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

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

sudo firewall-cmd --zone=public --add-service=http

Если вы изменяете зону по умолчанию, вы можете опустить --zone опцию.

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

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

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

sudo firewall-cmd --permanent --zone=public --add-service=http

Используйте --list-servicesвместе с --permanentопцией, чтобы проверить ваши изменения:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

Синтаксис для удаления службы такой же, как и при добавлении службы. Просто используйте --remove-serviceвместо --add-serviceопции:

sudo firewall-cmd --zone=public --remove-service=http --permanent

Приведенная выше команда удаляет службу http из постоянной конфигурации публичной зоны.

Что если вы используете приложение, такое как Plex Media Server, для которого нет подходящей службы?

В подобных ситуациях у вас есть два варианта. Вы можете открыть соответствующие порты или определить новую службу FirewallD.

Например, Plex Server прослушивает порт 32400 и использует TCP, чтобы открыть порт в публичной зоне для текущего сеанса, используйте --add-port= параметр:

sudo firewall-cmd --zone=public --add-port=32400/tcp

Протоколы могут быть tcp или udp.

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

sudo firewall-cmd --zone=public --list-ports
32400/tcp

Чтобы оставить порт 32400 открытым после перезагрузки, добавьте правило к постоянным настройкам, выполнив ту же команду с помощью --permanent параметра.

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

sudo firewall-cmd --zone=public --remove-port=32400/tcp

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

Например, чтобы создать определение сервиса для Plex Media Server, мы можем использовать файл сервиса SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

Откройте вновь созданный plexmediaserver.xml файл и изменить краткое имя и описание службы в пределах <short>и <description> тегов. Самый важный тег, который вам нужно изменить, – это portтег, который определяет номер порта и протокол, который вы хотите открыть.

В следующем примере мы открываем порты 1900 UDP и 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml

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

sudo firewall-cmd --reload

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

Для пересылки трафика с одного порта на другой порт или адрес сначала включите маскирование для нужной зоны с помощью --add-masquerade коммутатора. Например, чтобы включить маскировку для external типа зоны:

sudo firewall-cmd --zone=external --add-masquerade


  • Переадресация трафика с одного порта на другой на том же сервере

В следующем примере мы перенаправляем трафик от порта 80 к порту 8080 на одном сервере:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080



  • Переадресация трафика на другой сервер

В следующем примере мы перенаправляем трафик от порта 80 к порту 80 на сервере с IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2



  • Переадресация трафика на другой сервер через другой порт

В следующем примере мы перенаправляем трафик от порта 80 к порту 8080 на сервере с IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

Если вы хотите сделать перманент перманентом, просто добавьте --permanent опцию.

В следующем примере мы покажем, как настроить брандмауэр, если вы используете веб-сервер. Мы предполагаем, что ваш сервер имеет только один интерфейс eth0, и вы хотите разрешить входящий трафик только через порты SSH, HTTP и HTTPS.

  1. Измените зону по умолчанию на dmz

    Мы будем использовать зону dmz (demilitarized), потому что по умолчанию она разрешает только SSH-трафик. Чтобы изменить зону по умолчанию на dmz и назначить ее eth0 интерфейсу, выполните следующие команды:

    sudo firewall-cmd --set-default-zone=dmz
    sudo firewall-cmd --zone=dmz --add-interface=eth0
    
    
  2. Откройте порты HTTP и HTTPS:

    Чтобы открыть порты HTTP и HTTPS, добавьте правила постоянного обслуживания в зону dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http
    sudo firewall-cmd --permanent --zone=dmz --add-service=https
    

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

    sudo firewall-cmd --reload
    
    
  3. Проверьте изменения

    Чтобы проверить параметры конфигурации зоны dmz, введите:

    sudo firewall-cmd --zone=dmz --list-all
    
    dmz (active)
      target: default
      icmp-block-inversion: no
      interfaces: eth0
      sources:
      services: ssh http https
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    
    
    

    Вывод выше говорит нам, что dmz является зоной по умолчанию, применяется к eth0 интерфейсу и порты ssh (22) http (80) и https (443) открыты.

Вы узнали, как настроить и управлять службой FirewallD в вашей системе CentOS.

Обязательно разрешите все входящие соединения, которые необходимы для правильного функционирования вашей системы, одновременно ограничивая все ненужные соединения.

Firewalld zones

Зоны – это предопределенные наборы правил, определяющие, какой трафик должен быть разрешен в зависимости от уровня доверия в сетях, к которым подключен ваш компьютер. Вы можете назначить сетевые интерфейсы и источники для зоны.

Ниже приведены зоны, предоставленные FirewallD, упорядоченные в соответствии с уровнем доверия зоны от ненадежного до доверенного:

Firewalld: блокировка ip-адресов, создание исключений

Вы можете добавлять в исключения firewalld доверенные адреса IP адреса или блокировать нежелательные.

Чтобы добавить в исключения конкретный IP- адрес (например 8.8.8.8) на вашем сервере через firewalld, используйте команду:

# firewall-cmd –zone=public –add-rich-rule=’rule family=”ipv4″ source address=”8.8.8.8″ accept’

Проверьте зону, и убедитесь что IP добавлен в исключения в правиле rich rules:

# firewall-cmd –zone=public –list-all

Автоматический запуск брандмауэра

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

Для этого введите:

sudo systemctl enable firewalld

Теперь брандмауэр будет запускаться вместе с сервером.

Выбор зон для интерфейсов

Если вы не настроили сетевые интерфейсы иным образом, каждый интерфейс будет помещен в зону по умолчанию при запуске брандмауэра.

Добавление правил для приложений

Чтобы открыть порт для приложения, можно добавить в исключения сервис. Вывести список доступных сервисов:

:/>  Активация Microsoft Office 2010 при помощи сервера KMS | Windows для системных администраторов

# firewall-cmd –get-services

Вывод будет содержать большое количество сервисов. Подробная информация о службе содержится в ее xml файле. Эти файлы расположены в директории /usr/lib/firewalld/services.

Например:

# cd /usr/lib/firewalld/services

# cat smtp.xml

Добавление сервиса в зону

Проще всего добавить сервис или порт в зону, которую использует брандмауэр. Просмотрите доступные сервисы:

Добавление собственных зон

Вы можете создать собственную зону (назову ее our):

# firewall-cmd –permanent –new-zone=our

После создания новой зоны, как и после создания сервиса, нужна перезагрузка firewalld:

# firewall-cmd –reload

success

# firewall-cmd –get-zones

Доступные зоны

Чтобы просмотреть список всех зон, нужно выполнить команду:

# firewall-cmd –get-zones

У меня получился такой список:

Знакомство с текущими правилами брандмауэра

Прежде чем мы начнем вносить изменения, мы познакомимся со средой и правилами firewalld, используемыми по умолчанию.

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

Для перемещения интерфейса между зонами во время сеанса следует использовать параметр –zone= в сочетании с параметром –change-interface=. Как и для всех остальных команд, изменяющих брандмауэр, вам потребуется использовать sudo.

Например, интерфейс eth0 можно переместить в зону home с помощью следующей команды:

Output

success

Примечание. При перемещении интерфейса в новую зону следует помнить, что это может повлиять на работоспособность служб. Например, в данном случае мы перемещаемся в зону home, в которой поддерживается SSH. Это означает, что наше соединение не должно быть отброшено.

Чтобы убедиться в успешности операции мы можем снова запросить активные зоны:

Output

home interfaces: eth0 public interfaces: eth1

Изучение альтернативных зон

Мы получили представление о конфигурации зоны по умолчанию и активной зоны. Также мы можем получить информацию о других зонах.

Чтобы получить список доступных зон, введите команду:

Инсталляция

По умолчанию Firewalld не входит в состав CentOS. Установим его:

sudo yum install firewalld

Для помещения его в автозагрузочную область прописываем:

sudo systemctl enable firewalld

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

Как добавить новую службу

Как говорилось выше, полное описание служб внутри серверной ОС расположено по следующему пути: /usr/lib/firewalld/services/, далее идет xml-файл с именем службы.

Чтобы создать новый сервис, просто скопируем один из готовых вариантов в папку services, которая расположена внутри директории firewalld. В качестве примера взяли описание сервиса SSH и скопировали его с именем test:

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

Важно! Операция копирования выполняется только с правами администратора.

Откроем его при помощи текстового редактора nano:

sudo nano /etc/firewalld/services/test.xml

На экране появится подробное описание сервиса SSH:

Отредактируем описание
Скриншот №6. Отредактируем описание

В первом пункте меняем название службы на произвольное. По полю short она активируется через команды в дальнейшем. Второй пункт дает полное описание сервиса: прописываем детально.

Третий шаг – указываем порты и протокол по которым она будет работать. В дальнейшем firewalld будет активировать значения после указания соответствующего ключа.

Отредактировав файл, сохраняем изменения и перезапускаем службу.

Конвертируем правила iptables в firewalld

Многих пугает переход с Iptables на Firewalld из-за того, что нет привычного вида правил и это заблуждение.

Преобразуем, для примера, следующие правила Iptables

В файле /etc/firewalld/zones/public.xml добавляем строчки:

Создаем файл /etc/firewalld/services/custom_ports.xml:

Либо всю процедуру можно выполнить следующим образом:

Перезагружаем Firewalld и проверяем:

Конфигурирование firewalld

Определим текущую настройку утилиты:

firewall-cmd --get-default-zone

Текущая зона
Скриншот №1. Текущая зона

Сейчас установлен шаблон public, т.е. все разрешено. Если необходимо получить подробный отчет, то используем —list-all в качестве ключа. Результат приведен ниже.

Важно! Команда запускается только с правами sudo.

Подробный отчет
Скриншот №2. Подробный отчет

Маскарадинг

Данная команда включает маскарадинг для зоны. Адреса частной сети спрятаны за доступным извне IP адресом и привязаны к нему. Это разновидность трансляции адресов, обычно используется в роутерах. Маскарадинг доступен только для IPv4 из-за ограничений ядра.

Проверяем статус работы:

Перенаправим запросы входящие на настроенный ранее SSH порт на нужный хост:

Также мы можем перенаправить запросы с изменением порта назначения, например:

Настройка зоны по умолчанию

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

Для этого используется параметр —set-default-zone=. После этого все интерфейсы будут привязаны к другой зоне:

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

home

interfaces: eth0 eth1

Настройка правил

Настройка правил может выполняться “на лету” либо через XML.Предлагаю начать с настройки правила для нестандартного порта, например для SSH.

Проверяем, что разрешено на нашем сервере:

Если в конфигурации сервера не используется IPv6 протокол, то лучше его убрать:

Выбираем новый порт для SSH, но запоминаем его в уме.Не надо рваться его сразу поменять в настройках SSH, добавим сразу правило для него на постоянной основе (–permanent):

Перезагрузим правила:

Проверяем:

Отлично. Теперь можно смело изменять настройки SSH и удалять правило на сервис с 22 портом.

Проверяем результат:

Второй вариант настройки – через XML.Рассмотрим на примере настройки SNMP.

Создаем файл /etc/firewalld/services/snmp.xml

Перезагружаем Firewalld:

Добавляем правило на постоянной основе:

И снова перезагружаем Firewalld:

Определение службы

Открыть порты для зон довольно просто, но также может быть сложно следить за тем, для чего предназначен каждый порт. Если вы будете выводить из эксплуатации службы на своем сервере, вы можете забыть, какие из открытых портов вам еще нужны. Чтобы избежать подобной ситуации, можно определить новую службу.

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

Например, мы можем скопировать определение службы SSH и использовать его для определения службы example. Имя файла без суффикса .xml определяет имя службы в списке служб брандмауэра:

Теперь можно изменить определение в скопированном вами файле. Вначале откройте его в предпочитаемом текстовом редакторе. Здесь мы используем vi:

Вначале файл будет содержать только что скопированное вами определение SSH:

/etc/firewalld/services/example.xml

Основная часть этого определения представляет собой метаданные. Вы можете изменить короткое имя службы, заключенное в тегах <short>. Это имя службы, предназначенное для чтения людьми. Также следует добавить описание на случай, если вам потребуется дополнительная информация при проведении аудита службы.

Единственное изменение конфигурации, которое вам потребуется, и которое повлияет на функциональность службы, будет заключаться в определении портов, где вы идентифицируете номер порта и протокол, который хотите открыть. Можно указать несколько тегов <port/>.

Представьте, что для нашей службы example нам необходимо открыть порт 7777 для TCP и 8888 для UDP. Мы можем изменить существующее определение примерно так:

/etc/firewalld/services/example.xml

Сохраните и закройте файл.

Перезагрузите брандмауэр, чтобы получить доступ к новой службе:

Теперь вы увидите ее в списке доступных служб:

Опции

Firewalld имеет набор встроенных правил:

Кроме стандартного набора утилита поддерживает два режима загрузки. Первый называется Runtime. Он означает активность выбранных параметров до перезагрузки приложения или сервера. Если во время данного режима указываются дополнительные опции сохранения, то они остаются активными всегда.

Второй вариант — Permanent. Любые изменения, которые внесены в данном режиме, сохраняются навсегда.

Открываем порт (сервис)

Firewalld также предоставляет сервисам доступ к портам используя ключ —add-service=<имя службы>. Для начала проверим список сервисов на сервере, запустив утилиту с опцией —get-services.

Список служб
Скриншот №4. Список служб

Получить подробную информацию о любом сервисе, обратившись через команду cat к внутреннему списку firewalld. Например, просмотрим описание службы audit:

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

Описание audit
Скриншот №5. Описание audit

Для активации порта любого сервиса из перечня прописываем в терминале:

sudo firewall-cmd --zone=work --add-service=audit

Данная конфигурация будет активна только до перезагрузки серверной платформы. Чтобы сделать ее постоянной, прописываем ключ —permanent:

:/>  Using netsh to configure network from windows command line cmd

sudo firewall-cmd --permanent --zone=work --add-service=audit

Если сервис audit больше не нужен, удалим его, используя опцию –remove-service=<имя службы>:

sudo firewall-cmd --zone=work --remove-service=audit --permanent

Альтернативный вариант открытия порта – указываем номер и имя протокола с указанием флага —add-port:

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

Важно! Любое изменение в списке сервисов можно отследить используя опцию —list-ports.

Удаление порта происходит при замене ключа —add-port на —remove-port с сохранением дальнейшего синтаксиса.

Открытие порта для зон

Проще всего добавить поддержку определенного приложения можно посредством открытия используемых им портов в соответствующих зонах. Для этого нужно указать порт или диапазон портов, а также протокол (TCP или UDP), связанный с портами.

Например, если наше приложение работает на порту 5000 и использует TCP, мы можем временно добавить его в зону public с помощью параметра –add-port=. Протоколы могут назначаться как tcp или udp:

Output

success

Мы можем проверить успешность назначения с помощью операции –list-ports:

Output

5000/tcp

Также можно указать последовательный диапазон портов, разделив начальный и конечный порты диапазона дефисом. Например, если наше приложение используйте порты UDP с 4990 по 4999, мы можем открыть их на public с помощью следующей команды:

После тестирования мы вероятно захотим добавить это правило в брандмауэр на постоянной основе. Используйте для этого sudo firewall-cmd –runtime-to-permanent или запустите команды снова с флагом –permanent:

Output

success success 5000/tcp 4990-4999/udp

Перенаправление портов в firewalld

Вы можете создать правило перенаправления портов (port forwarding) в firewalld. Чтобы перенаправить 443 порт на 9090:

# firewall-cmd –zone=public –add-forward-port=port=443:proto=tcp:toport=9090 –permanent

Чтобы удалить правило перенаправления порта:

# firewall-cmd –zone=public –remove-forward-port=port=443:proto=tcp:toport=9090

Полезные команды при работе в firewalld

Включить режим блокировки всех исходящих и входящих пакетов:

Выключить режим блокировки всех исходящих и входящих пакетов:

Проверить режим “паника”:

Перезагрузить правила firewalld без потери текущих соединений:

Перезагрузить правила firewalld и сбросить текущие соединения:

Добавить к зоне сетевой интерфейс:

В конфигурации интерфейса ens3 можно указать, какой зоне принадлежит этот интерфейс. Для этого добавим ZONE=work.Если параметр ZONE не указан, будет назначена зона по-умолчанию.

Разрешить диапазон портов:

Открыть порт MySQL

Более подробную информацию, а также описание всех возможностей можно найти на сайте FedoraProject

Порт переадресации с firewalld

Для пересылки трафика с одного порта на другой порт или адрес сначала включите маскирование для нужной зоны с помощью –add-masquerade коммутатора. Например, чтобы включить маскировку для external типа зоны:

sudo firewall-cmd --zone=external --add-masquerade


  • Переадресация трафика с одного порта на другой на том же сервере

В следующем примере мы перенаправляем трафик от порта 80 к порту 8080 на одном сервере:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080



  • Переадресация трафика на другой сервер


В следующем примере мы перенаправляем трафик от порта 80 к порту 80 на сервере с IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2



  • Переадресация трафика на другой сервер через другой порт

В следующем примере мы перенаправляем трафик от порта 80 к порту 8080 на сервере с IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

Если вы хотите сделать перманент перманентом, просто добавьте –permanent опцию.

Постоянство правил

В firewalld правила можно применять к текущему набору правил времени исполнения или использовать как постоянные. При добавлении или изменении правила по умолчанию изменяется только работающий брандмауэр. После перезагрузки системы или службы firewalld сохраняются только постоянные правила.

Большинство операций firewall-cmd могут принимать флаг –permanent, указывающий на необходимость применения изменений к постоянной конфигурации. Кроме того, текущую конфигурацию брандмауэра можно сохранить в постоянной конфигурации с помощью команды firewall-cmd –runtime-to-permanent.

Такое разделение конфигурации времени исполнения и постоянной конфигурации позволяет безопасно тестировать правила на активном брандмауэре и просто перезагружать его в случае возникновения проблем.

Просмотр правил по умолчанию

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

firewall-cmd --get-default-zone
public

На данный момент firewalld не получал никаких инструкций относительно других зон, кроме того, к другим зонам не привязан ни один интерфейс, поэтому сейчас зона public является зоной по умолчанию, а также единственной активной зоной.

Чтобы получить список активных зон, введите:

firewall-cmd --get-active-zones
public
interfaces: eth0 eth1

К зоне public привязаны два сетевых интерфейса: eth0 и eth1. Интерфейсы, привязанные к зоне, работают согласно правилам этой зоны.

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

Смена политики и интерфейса

Для смены шаблона, используем ключ —zone совместно с опцией смены сетевого интерфейса —change-interface. Например, заменить политику public на work с ее активацией на eth0:

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

В случае успешной операции на мониторе появится соответствующее сообщение. Наберем следующую команду, чтобы убедиться в правильности выполненных действий:

sudo firewall-cmd --get-active-zones

Смены шаблона
Скриншот №3. Смены шаблона

Как видно на изображении выше, сетевой интерфейс использует политику work, а другие по-прежнему работают с public.

Если требуется сменить политику, которая наследуется по умолчанию для всех интерфейсов, используем другой синтаксис:

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

После выполнения команды всем сетевым интерфейсам пропишется шаблон home. Для показа текущего уровня вводим уже известный ключ —get-default-zone.

Создание собственных зон

Хотя большинству пользователей будет достаточно заданных зон, иногда может быть полезно определить собственные зоны с названиями, соответствующими их функции.

Например, вы можете захотеть создать для своего веб-сервера зону с именем publicweb. При этом вы можете также захотеть использовать другую зону для службы DNS в вашей частной сети. Эту зону вы можете назвать privateDNS.

При добавлении зоны вы должны добавить ее в постоянную конфигурацию брандмауэра. Затем вы можете произвести перезагрузку для активации конфигурации для текущего сеанса. Например, мы можем создать две описанные выше зоны, введя следующие команды:

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

Услуги брандмауэра


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

Установка и включение firewalld

  1. Firewalld по умолчанию устанавливается в CentOS 7, но если он не установлен в вашей системе, вы можете установить пакет, набрав:

    sudo yum install firewalld
    
    
  2. Сервис Firewalld по умолчанию отключен. Вы можете проверить состояние брандмауэра с помощью:

    
    sudo firewall-cmd --state
    
    

    Если вы только что установили или никогда не активировали ранее, команда напечатает not running. В противном случае вы увидите running.

  3. Чтобы запустить службу FirewallD и включить ее при загрузке, введите:

    
    sudo systemctl start firewalld
    sudo systemctl enable firewalld
    

Установка правил для приложений

Рассмотрим базовый способ определения исключений брандмауэра для служб, которые вы хотите сделать доступными.

Вывод

Вы узнали, как настроить и управлять службой FirewallD в вашей системе CentOS.


Обязательно разрешите все входящие соединения, которые необходимы для правильного функционирования вашей системы, одновременно ограничивая все ненужные соединения.

Заключение

Теперь вы должны неплохо понимать принципы администрирования службы firewalld в системе CentOS на каждодневной основе.

Служба firewalld позволяет настраивать администрируемые правила и наборы правил, учитывающие условия вашей сетевой среды. Она позволяет легко переключаться между разными политиками брандмауэра посредством использования зон и дает администраторам возможность абстрагировать управление портами в более удобную систему определения служб.

Дополнительную информацию о firewalld можно найти в официальной документации по firewalld.

Оставьте комментарий