Linux firewalld открыть порт

Настройка firewalld в CentOS

Обновлено

Обновлено: 28.12.2022 Опубликовано: 12.10.2016

Firewalld — утилита для управления встроенным в ядро Linux брандмауэром Netfilter. Несмотря на собственный синтаксис, имеет такой же принцип работы, как Iptables. Дополнительно про управление Netfilter при помощи последнего.

Установка и запуск

Общие команды для управления firewalld

* в официальной документации сказано, что данную команду стоит применять только в случаях проблем с firewalld. Посмотреть созданные правила:

Управление правилами

Синтаксис

  • [опции] — дополнительные параметры для создаваемого правила, например —permanent — постоянное правило, то есть будет действовать после перезагрузки. Не обязательный.
  • [зона] — по умолчанию, правила создаются для зоны public. Для работы с конкретной зоной ее необходимо указать, например, —zone=dmz. Не обязательный.
  • само правило. Обязательный.

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

Добавление портов

firewall-cmd —permanent —add-port=80/tcp

* где ключ —permanent — добавить постоянное правило (будет действовать после перезагрузки).

Добавить правило для определенной зоны:

firewall-cmd —permanent —zone=external —add-port=80/tcp

firewall-cmd —permanent —add-port=6500-6700/udp

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

firewall-cmd —permanent —add-port=80/tcp —add-port=443/tcp

Добавление сервиса командой

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

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

Разрешить порт, например, для сервиса ntp:

firewall-cmd —permanent —add-service=ntp

Создать собственную службу:

firewall-cmd —permanent —new-service=name-service

* где name-service — произвольное имя создаваемой службы.

Добавить порт, например TCP 2200 к службе:

firewall-cmd —permanent —service=name-service —add-port=2200/tcp

Задать описание для удобства:

firewall-cmd —permanent —service=name-service —set-short=»Service With This Name»

firewall-cmd —permanent —service=name-service —set-description=»Long Description For Service With This Name»

Информацию о созданном сервисе можно получить командой:

Созданную службу можно использовать для создания правил командой:

firewall-cmd —permanent —add-service=name-service

Добавление сервиса из xml-файла

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

* в моем примере будет создан шаблон для сервиса с именем my-app, который откроет порт 8080/tcp.

Теперь можно добавить сам сервис. Для этого есть два способа.

Читайте также:  Kali linux software center установка

а) Использовать опцию —new-service-from-file:

firewall-cmd —permanent —new-service-from-file=my-app.xml

б) Перенести его в каталог /usr/lib/firewalld/services:

mv my-app.xml /usr/lib/firewalld/services/

Теперь, чтобы с ним можно было работать, перезапустим firewalld:

Информацию о созданном сервисе можно получить командой:

Теперь созданную службу можно использовать для создания правил, например:

firewall-cmd —permanent —add-service=my-app

Rich-Rule

rich-rule позволяет создавать правила с условиями. Рассмотрим несколько примеров:

1. Разрешаем службу http с условием, что запросы будут с определенных IP-адресов (подсети 192.168.0):

firewall-cmd —permanent —add-rich-rule ‘rule family=»ipv4″ source address=»192.168.0.0/24″ service name=»http» accept’

2. Или для конкретного порта:

firewall-cmd —permanent —add-rich-rule ‘rule family=»ipv4″ source address=»192.168.0.0/24″ port port=»5038″ protocol=»tcp» accept’

3. Чтобы заблокировать подсеть можно воспользоваться командой:

firewall-cmd —permanent —add-rich-rule=»rule family=’ipv4′ source address=’192.168.1.0/24′ reject»

Список правил с условиями можно отобразить командой:

Удаление правил

Аналогично созданию, но вместо add вводим remove, например —remove-port (удалит порт) или —remove-service (службу).

Удалим правило для открытия 80-о порта:

firewall-cmd —permanent —remove-port=80/tcp

Управление зонами

Все правила в firewalld могут быть разбиты по зонам. Для каждой свой набор правил и свои сетевые интерфейсы. Это нужно использовать, если мы захотим для разных сетевых адаптеров сделать разные по строгости правила.

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

Посмотреть список используемых зон:

Информация о конкретной зоне:

firewall-cmd —list-all —zone=public

Создать правило для зоны public:

firewall-cmd —permanent —zone=public —add-port=80/tcp

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

firewall-cmd —permanent —zone=public —remove-interface=ens34

firewall-cmd —permanent —zone=internal —add-interface=ens34

* сначала нужно удалить адаптер из текущей зоны.

Задать действие по умолчанию для зоны:

firewall-cmd —permanent —zone=public —set-target=DROP

firewall-cmd —permanent —new-zone=custom_zone

* чтобы система увидела новую зону custom_zone, команда reload обязательная.

Пример настройки NAT (шлюза)

firewall-cmd —permanent —zone=dmz —add-masquerade

* без указания зон, будет включен для public и external.

Для примера берем два ethernet интерфейса — ens32 (внутренний) и ens33 (внешний). Для настройки nat последовательно вводим следующие 4 команды:

firewall-cmd —permanent —direct —add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE

* правило включает маскарадинг на внешнем интерфейсе ens33. Где опция —direct требуется перед всеми пользовательскими правилами (—passthrough, —add-chain, —remove-chain, —query-chain, —get-chains, —add-rule, —remove-rule, —query-rule, —get-rules); nat — таблица, в которую стоит добавить правило; POSTROUTING 0 — цепочка в таблице nat; опция MASQUERADE указывает сетевому экрану менять внутренний IP-адрес на внешний.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens32 -o ens33 -j ACCEPT

* добавляет в таблицу filter (цепочку FORWARD) правило, позволяющее хождение трафика с ens32 на ens33.

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens33 -o ens32 -m state —state RELATED,ESTABLISHED -j ACCEPT

Читайте также:  Linux ubuntu поиск файла

* добавляет правило в таблицу filter (цепочку FORWARD), позволяющее хождение трафика с ens33 на ens32 для пакетов, открывающих новый сеанс, который связан с уже открытым другим сеансом (RELATED) и пакетов, которые уже являются частью существующего сеанса (ESTABLISHED).

systemctl restart firewalld

* для того, чтобы сервер CentOS заработал в качестве шлюза, также необходимо настроить ядро. Подробнее в статье Настройка Интернет шлюза на CentOS 7.

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

firewall-cmd —direct —get-all-rules

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

Проброс настраивается со следующим синтаксисом:

firewall-cmd —zone=external —permanent —add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15

* в данном примере мы будем слушать запросы на порту 25 и передодить их на узел 192.168.0.15 и порт 8025.

Запретить или разрешить трафик между интерфейсами

Предположим, у нас есть два внутренних сетевых интерфейса ens35 и ens36. Мы хотим контролировать трафик между ними.

Запретить

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

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j DROP

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j DROP

Разрешить

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

Для разрешения команды, практически, аналогичные:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens36 -o ens35 -j ACCEPT

Разрешить трафик в одном направлении

В предыдущих примерах мы разрешали трафик в обоих направлениях. Если необходимо сделать так, чтобы только сеть ens35 видела сеть ens36, вводим одну команду:

firewall-cmd —direct —permanent —add-rule ipv4 filter FORWARD 0 -i ens35 -o ens36 -j ACCEPT

Возможные проблемы при работе с firewalld

1. Ошибка command not found (команда не найдена).

Возможные причины: не установлен пакет или не запущена служба.

Выполняем установку пакета firewalld:

yum install firewalld firewall-config

systemctl start firewalld

2. Не применяются правила.

Причина: не введена команда перезапуска правил.

Если это не помогло, делаем перезапуск со сбросом подключений:

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

systemctl restart network

В исключительных случаях, перезагружаем компьютер:

3. The interface is under control of NetworkManager and already bound to the default zone.

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

Читайте также:  Узнать количество оперативки linux

Для решения открываем конфигурационный файл для настройки сетевого интерфейса, например:

* в данном примере сетевой интерфейс ens34 будет добавлен в зону external.

Перезагружаем сетевую службу:

systemctl restart network

Источник

Open a Port or Service

There are different ways to open up a port (range) or service. These ways depend on the use case and the number of changes that are needed to make it work.

A simple port number or port range can be used in the cases where no additional changes are needed. For example, with opening port 80/tcp to allow access to a local http servicer on the standard port. For most of the more important services there is already a service defined in firewalld. Then there is no need to know about the default port number(s). The service can then simply be enabled in the used zone.

If there is a need to open different ports or to do additional changes, then using a service might be simpler. If you need to add a new or custom service, then please have a look at the howto “Add a Service”. It is also possible to adapt a builtin service according to the user’s needs, for example to change one of the used ports. But it is recommended to generate a new service in this case to make it more obvious that the service has been customized.

How to open port 80/tcp with firewall-cmd:

firewall-cmd --zone=public --add-port=80/tcp 

This will open the port 80 with protocol tcp in the public zone of the runtime environment. The runtime environment is only effective until the machine has been rebooted or the firewalld service has been restarted. The zone option can be omitted here if the port should be added to the default zone.

firewall-cmd --permanent --zone=public --add-port=80/tcp 

If you want to make this a permanent change also, then open the port also in the permanent environment. This means the port will be open also after a system reboot or firewalld service reload.

How to open a service with firewall-cmd:

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

This opens the service in the public zone of the runtime environment.

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

This also opens the service in public zone of the permanent environment.

Recent Posts

Источник

Оцените статью
Adblock
detector