Полная инструкция по установке и настройки firewalld

Основные понятия межсетевого экрана

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

От используемого интерфейса напрямую зависят применяемые правила. Например, при подключении к общедоступному Wi-Fi сетевой экран повысит уровень контроля, а в домашней сети откроет дополнительный доступ для участников цепи. В рассматриваемом фаерволе присутствуют такие зоны:

Сами же политики бывают временные и постоянные. При появлении или редактировании параметров действие фаервола сразу меняется без надобности перезагрузки. Если же были применены временные правила, после рестарта FirewallD они будут сброшены. Перманентное правило на то так и называются — оно будет сохранено на постоянной основе при применении аргумента —permanent.

Что делать, если нужный сервис недоступен?

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

Что такое firewalld

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

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

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

Rich rules в firewalld

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

Синтаксис и примеры rich rules подробно описаны в соответствующей странице руководства.

man 5 firewalld.richlanguage

При наличии нескольких rich rules они обрабатываются в определенном порядке. Сначала применяются правила перенаправления портов и маскарадинга. Далее идут правила ведения логов. Потом разрешающие правила, а в самом конце — запрещающие. Для пакета используется первое правило из указанного порядка, которое ему подойдет. если он не соответствует ни одному правилу, то к нему будет применено отклонение по умолчанию.

Рассмотрим наиболее важные опции для работы с rich rules.

—add-rich-rule=’ПРАВИЛО’ — добавить правило, в данном примере мы разрешаем трафик с диапазона 10.0.0.0/24 только в диапазон 192.168.0.10/32 через TCP-порты c 8080 по 8090.

$ firewall-cmd --permanent --zone=testing --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 destination address=192.168.0.10/32 port port=8080-8090 protocol=tcp accept' 
success

—list-rich-rules — вывод всех rich rules для указанной зоны. Мы видим только что созданное нами правило.

$ firewall-cmd --permanent --zone=testing --list-rich-rules

—remove-rich-rule — удалить rich rule, синтаксис такой же как у —add-rich-rule.

$ firewall-cmd --permanent --zone=testing --remove-rich-rule='rule family=ipv4 source address=10.0.0.0/24 destination address=192.168.0.10/32 port port=8080-8090 protocol=tcp accept'
success

Создадим rich rule, отклоняющее любой трафик с диапазона 192.168.0.10/24.

$ firewall-cmd --permanent --zone=testing --add-rich-rule='rule family=ipv4 source address=192.168.0.10/24 reject'
success

Reject выдает ICMP-пакет об отклонении, тогда как drop просто отклоняет трафик без дополнительных действий. Поэтому drop может быть предпочтительнее в плане безопасности, так как ответ об отклонении раскрывает существование системы.

При использовании в rich rules адресов источника или получателя нужно указывать семейство rule family ipv4 или ipv6 в зависимости от используемой адресации.

Rich rules могут использоваться для ограничения трафика. Например, так можно ограничить количество входящих SSH-соединений десятью в минуту:

$ firewall-cmd --permanent --add-rich-rule='rule service name=ssh limit value=10/m accept' 
success

Также можно применять rich rules для записи сообщений в файл лога. Которое также может быть ограничено. Здесь мы ведем лог SSH-соединений с диапазона адресов 192.168.0.0/24, но количество записей ограничено 50 в минуту. Записываются только сообщения уровня ‘info’ или более важные.

$ firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" limit value="50/m" accept'
success

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

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

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

sudo systemctl enable firewalld

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

Включение брандмауэра firewalld

Для начала нужно запустить FirewallD или убедиться в том, что он находится в активном состоянии. Только функционирующий демон (программа, работающая в фоновом режиме) будет применять правила для межсетевого экрана. Активация производится буквально в несколько кликов:

  1. Запустите классический «Терминал» любым удобным методом, к примеру, через меню «Приложения».
  2. Запуск терминала для дальнейшей настройки фаервола в CentOS 7

  3. Введите команду sudo systemctl start firewalld.service и нажмите на клавишу Enter.
  4. Запуск сервисов фаервола в операционной системе CentOS 7

  5. Управление утилитой осуществляется от имени суперпользователя, поэтому придется подтвердить подлинность, указав пароль.
  6. Ввод пароля для запуска сервисов фаервола в терминале CentOS 7

  7. Чтобы убедиться в функционировании сервиса, укажите firewall-cmd --state.
  8. Просмотр текущего состояния фаервола через терминал в CentOS 7

  9. В открывшемся графическом окне повторно подтвердите подлинность.
  10. Ввод пароля для подтверждения подлинности при просмотре состояния фаервола CentOS 7

  11. Отобразится новая строка. Значение «running» говорит о том, что фаервол работает.
  12. Отображение текущего состояния фаервола в операционной системе CentOS 7

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

Подробнее: Отключение Firewall в CentOS 7

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

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

# 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

:/>  "Подготовка автоматического восстановления" Windows 10: что делать?

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

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

# firewall-cmd –get-zones

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

Зоны и службы firewalld

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

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

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

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

drop — минимальный уровень доверия. Все входящие соединения блокируются без ответа, допускаются только исходящие соединения.

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

Как говорилось выше, полное описание служб внутри серверной ОС расположено по следующему пути: /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 будет активировать значения после указания соответствующего ключа.

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

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

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

firewall-cmd --get-default-zone

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

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

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

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

Конфигурирование брандмауэра

После инсталляции запустим первичную настройку:

sudo system-config-firewall-tui

На экране появится меню для выбора дальнейших действий:

Меню для выбора дальнейших действий
Скриншот №1. Меню для выбора дальнейших действий

Сначала включаем режим брандмауэра, а потом выбираем пункт «Настройка».

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

Открываем доступ во внешнюю сеть
Скриншот №2. Открываем доступ во внешнюю сеть

В нашем примере активируем DNS и FTP. Нажимаем «Вперед».

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

Выбор дополнительных портов
Скриншот №3. Выбор дополнительных портов

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

Например, создадим порт 8080 для протокола TCP следующим образом:

Порт 8080 для протокола TCP
Скриншот №4. Порт 8080 для протокола TCP

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

Список сетевых интерфейсов
Скриншот №5. Список сетевых интерфейсов

Следующее меню отвечает за предоставление функции NAT для сетевых интерфейсов. В терминологии CentOS она называется «Маскарад». Отмечаем пункт, для которого необходим данный режим:

Функция NAT для сетевых интерфейсов
Скриншот №6. Функция NAT для сетевых интерфейсов

Теперь настроим проброс портов. Конфигурирование аналогично пункту с добавлением новых портов.

Далее — фильтрация ICMP. Стандартная настройка не блокирует трафик. Если требуется запретить, выбираем пункт:

Фильтрация ICMP
Скриншот №7. Фильтрация ICMP

Последний шаг – создание правил. Добавляем собственные шаблоны, по которым файрвол будет обрабатывать трафик:

Добавление шаблонов
Скриншот №8. Добавление шаблонов

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

Теперь выбираем «ОК» для активации внесенных изменений. Утилита покажет предупреждающее сообщение. Если все верно, то соглашаемся:

Активация внесенных изменений
Скриншот №9. Активация внесенных изменений

Установка завершена, межсетевой экран активирован.

Настройка зон интерфейсов

Как вы знаете из информации выше, для каждого интерфейса определяется своя зона по умолчанию. Он будет находиться в ней до тех пор, пока настройки не изменятся пользователем или программно. Возможен ручной перенос интерфейса в зону на одну сессию, и осуществляется он активацией команды sudo firewall-cmd –zone=home –change-interface=eth0.

При подобном изменении параметров следует учитывать, что работа сервисов может быть сброшена. Некоторые из них не поддерживают функционирование в определенных зонах, допустим, SSH хоть и доступен в «home», но в пользовательских или особенных сервис работать откажется.

Если вы захотите сбросить произведенные ранее настройки, просто выполните рестарт брандмауэра: sudo systemctl restart firewalld.service.

Порой не всегда удобно изменять зону интерфейса всего на одну сессию. В таком случае потребуется редактировать конфигурационный файл, чтобы все настройки ввелись на перманентной основе. Для этого мы советуем использовать текстовый редактор nano, который устанавливается с официального хранилища sudo yum install nano. Далее остается произвести такие действия:

  1. Откройте конфигурационный файл через редактор, введя sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0, где eth0 — название необходимого интерфейса.
  2. Открытие конфигурационного файла интерфейса фаервола в CentOS 7

  3. Подтвердите подлинность учетной записи для выполнения дальнейших действий.
  4. Ввод пароля для открытия конфигурационного файла интерфейса в CentOS 7

  5. Отыщите параметр «ZONE» и поменяйте его значение на нужное, например, public или home.
  6. Изменение зоны интерфейса через конфигурационный файл в CentOS 7

  7. Зажмите клавиши Ctrl O, чтобы сохранить изменения.
  8. Запись изменений в текстовом редакторе CentOS 7

  9. Не изменяйте имя файла, а просто нажмите на Enter.
  10. Назначение файла для записи изменений в текстовом редакторе CentOS 7

  11. Выйдите из текстового редактора через Ctrl X.
  12. Выход из текстового редактора после изменений CentOS 7

Теперь зона интерфейса будет такой, какой вы ее указали, до момента следующего редактирования конфигурационного файла. Чтобы обновленные параметры вступили в действие, выполните sudo systemctl restart network.service и sudo systemctl restart firewalld.service.

:/>  Текст для командной строки

Настройка маскарадинга в firewalld

Маскарадинг -это подмена ip адреса отправителя(маскарад) на внешний адрес нашего сервера, когда компьютер с неким внутренним ip адресом пытается получить к доступ к ресурсам в интернете. Ответы на эти пакеты также пойдут через наш сервер. И адрес сервера будет подменен на ip отправителя, чтобы трафик отправлялся на узел, который инициировал отправку.

Маскарадинг для зоны можно включить опцией —add-masquerade

$ firewall-cmd --permanent --zone=testing --add-masquerade
success

При помощи опции —query-masquerade мы можем убедиться, что маскарадинг успешно включен. В данном случае мы запросим постоянную конфигурацию, так как изменили только ее и еще не выполнили перезапуск.

$ firewall-cmd --permanent --query-masquerade
yes

В нашем примере маскарадингу будет подвергаться любой пакет, отправляемый на адреса, указанные в зоне ‘testing’. Для более тонкой настройки можно воспользоваться rich rules.

$ firewall-cmd --permanent --zone=testing --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 masquerade'
success

Здесь маскарадинг выполняется для всего трафика с диапазона адресов 192.168.1.0/24.

Определение сервиса

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

Опции

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:

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 с сохранением дальнейшего синтаксиса.

Перенаправление портов в 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

Помогла ли вам эта статья?

ДАНЕТ

Помогла статья? подписывайся на telegram канал автора


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

Предварительная подготовка

Для конфигурирования межсетевого экрана в CentOS используют утилиту system-config-firewall, которая заменят текущий FirewallD.

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

Для этого уберем FirewallD из автозагрузочного сектора ОС:

sudo systemctl stop firewalld.service

sudo systemctl disable firewalld.service

Теперь установим утилиту для дальнейшей настройки:

sudo yum install system-config-firewall-tui

Проброс портов в firewalld

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

В рассмотренном ниже примере локальная система будет перенаправлять весь трафик, отправленный на порт 22, на TCP-порт 2222 на адрес 10.0.0.10. Правило перенаправления портов будет применяться только для отправителей, указанных в зоне ‘testing’.

$ firewall-cmd --permanent --zone=testing --add-forward-port=port=22:proto=tcp:toport=2222:toaddr=10.0.0.10
success

Убедиться в успешной работе проброса портов можно при помощи опции —query-forward-port.

$ firewall-cmd --permanent --zone=testing --query-forward-port=port=22:proto=tcp:toport=2222:toaddr=10.0.0.10
yes

Целиком вводить запись, которую вы делали при добавлении проброса портов, достаточно неудобно. Лучше воспользоваться опцией —list-all, она покажет все перенаправляемые порты.

Просмотр правил по умолчанию и доступных зон

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

  1. Определить функционирующую по умолчанию зону поможет команда firewall-cmd --get-default-zone.
  2. Просмотр установленной по умолчанию зоны фаервола в CentOS 7

  3. После ее активации вы увидите новую строку, где отобразится необходимый параметр. Например, на скриншоте ниже активной считается зона «public».
  4. Отображение установленной по умолчанию зоны фаервола в CentOS 7

  5. Однако активными могут быть сразу несколько зон, к тому же они привязываются к отдельному интерфейсу. Узнайте эту информацию через firewall-cmd --get-active-zones.
  6. Просмотр всех активных зон фаервола в CentOS 7

  7. Команда firewall-cmd --list-all выведет на экран правила, заданные для зоны по умолчанию. Обратите внимание на скриншот ниже. Вы видите, что активной зоне «public» присвоено правило «default» — функционирование по умолчанию, интерфейс «enp0s3» и добавлено два сервиса.
  8. Просмотр правил активных зон фаервола через терминал в CentOS 7

  9. Если появилась надобность узнать все доступные зоны брандмауэра, введите firewall-cmd --get-zones.
  10. Получение списка всех доступных зон фаервола через терминал в CentOS 7

  11. Параметры же конкретной зоны определяются через firewall-cmd --zone=name --list-all, где name — название зоны.
  12. Отображение правил указанной зоны фаервола через терминал в CentOS 7

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

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

Для смены шаблона, используем ключ —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.

Создавая зону, нужно добавить её в постоянные настройки брандмауэра.

Попробуйте создать зоны publicweb и privateDNS:

sudo firewall-cmd –permanent –new-zone=publicwebsudo firewall-cmd –permanent –new-zone=privateDNS

Убедитесь, что зоны существуют:

Создание правил для программ и утилит

В самом начале статьи мы рассказали о действии каждой зоны. Определение сервисов, утилит и программ в такие ветви позволит применить для каждой из них индивидуальные параметры под запросы каждого пользователя. Для начала советуем ознакомиться с полным списком доступных на данный момент сервисов: firewall-cmd –get-services.

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

Указанная выше команда демонстрирует только названия сервисов. Детальная информация по каждому из них получается через индивидуальный файл, находящийся по пути /usr/lib/firewalld/services. Такие документы имеют формат XML, путь, например, к SSH выглядит так: /usr/lib/firewalld/services/ssh.xml, а документ имеет следующее содержимое:

SSHSecure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.

Способ 1: настройка порта

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

Например, приложение, которое использует порт 5000 и протокол TCP, нужно добавить в зону public. Чтобы включить поддержку приложения на дну сессию, используйте параметр —add-port= и укажите протокол tcp или udp.

sudo firewall-cmd –zone=public –add-port=5000/tcp

Убедитесь, что операция прошла успешно:

firewall-cmd –list-ports5000/tcp

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

sudo firewall-cmd –zone=public –add-port=4990-4999/udp

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

sudo firewall-cmd –zone=public –permanent –add-port=5000/tcpsudo firewall-cmd –zone=public –permanent –add-port=4990-4999/udpsudo firewall-cmd –zone=public –permanent –list-portssuccesssuccess4990-4999/udp 5000/tcp

Способ 2: определение сервиса

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

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

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

Например, можно скопировать определение сервиса SSH и использовать его для определения условного сервиса example. Имя сценария должно совпадать с именем сервиса и иметь расширение .xml.

sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

Откорректируйте скопированный файл.

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

В файле находится определение SSH:

Большую часть определения сервиса составляют метаданные. Изменить краткое имя сервиса можно в тегах <short>. Это человекочитаемое имя сервиса. Также нужно добавить описание сервиса. Единственное изменение, которое повлияет на работу сервиса – это изменение номера порта и протокола.

Вернёмся к сервису example; допустим, он требует открыть TCP- порт 7777 и UDP- порт 8888. Определение будет выглядеть так:

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

Перезапустите брандмауэр:

sudo firewall-cmd –reload

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

Трансляция сетевых адресов (nat)

Командой firewall-cmd можно настроить NAT с маскарадингом или пробросом портов. Маскарадинг можно настроить только для IPv4, но не для IPv6.

Установка зоны по умолчанию

Выше мы уже демонстрировали команду, которая позволяла узнать установленную по умолчанию зону. Ее также можно изменить, установив параметр на свой выбор. Для этого в консоли достаточно прописать sudo firewall-cmd –set-default-zone=name, где name — имя необходимой зоны.

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

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

В CentOS 7/8 firewalld устанавливается по умолчанию при установке ОС. Если вы его удалили и хотите установить firewalld, можете воспользоваться стандартным менеджером yum/dnf:

# yum install firewalld -y — для Centos 7# dnf install firewalld -y — для Centos 8

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

# systemctl enable firewalld

И запустить:

# systemctl start firewalld

Проверить статус сервиса:

# systemctl status firewalld

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