Как настроить и управлять брандмауэром в CentOS 8

12 set 2022 8 min di lettura
Как настроить и управлять брандмауэром в CentOS 8
Indice dei contenuti

Введение

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

CentOS 8 поставляется с демоном брандмауэра, который называется firewalld. Это комплексное решение с интерфейсом D-Bus, которое позволяет динамически управлять брандмауэром системы.

В этом руководстве мы поговорим о том, как настроить и управлять брандмауэром в CentOS 8. Мы также объясним основные концепции FirewallD.

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

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

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

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Предпосылки

Чтобы настроить службу брандмауэра, вы должны войти в систему как пользователь root или пользователь с привилегиями sudo и установить брандмауэр в CentOS 8.

Основные понятия брандмауэра

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

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

В CentOS 8 iptables заменен на nftables в качестве серверной части брандмауэра по умолчанию для демона firewalld.

Зоны брандмауэра

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

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

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

Службы брандмауэра

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

Например, служба может содержать определения открытия портов, переадресации трафика и т. д.

Firewalld Runtime и постоянные настройки

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

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

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

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

Измените конфигурацию среды выполнения и сделайте ее постоянной:

sudo firewall-cmd <options>
sudo firewall-cmd --runtime-to-permanent

Измените постоянную конфигурацию и перезагрузите демон firewalld:

sudo firewall-cmd --permanent <options>
sudo firewall-cmd --reload

Включить FirewallD

В CentOS 8 firewalld установлен и включен по умолчанию. Если по какой-то причине он не установлен в вашей системе, вы можете установить и запустить демон, набрав:

sudo dnf install firewalld
sudo systemctl enable firewalld --now

Вы можете проверить состояние службы брандмауэра с помощью:

sudo firewall-cmd --state

Если брандмауэр включен, команда должна running. В противном случае вы увидите, что not running.

Зоны брандмауэра

Если не изменить, зона по умолчанию устанавливается как 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

Следующий вывод показывает, что интерфейсы eth0 и eth1 назначены public зоне:

public
 interfaces: 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:

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

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

sudo firewall-cmd --list-all-zones

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

Модификация цели зоны

Пункт назначения определяет поведение зоны по умолчанию для неопределенного входящего трафика. Он может быть установлен в один из следующих вариантов: default, ACCEPT, REJECT и DROP.

Чтобы установить цель зоны, укажите зону с параметром --zone и цель с параметром --set-target.

Например, чтобы изменить public цель зоны на DROP:

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

Назначение интерфейса другой зоне

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

Чтобы назначить интерфейс другой зоне, укажите зону с параметром --zone и интерфейс с параметром --change-interface.

Например, следующая команда назначает интерфейс eth1 work зоне:

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

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

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

Изменение зоны по умолчанию

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

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

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

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

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

Создание новых зон

Firewalld также позволяет создавать собственные зоны. Это полезно, когда вы хотите создавать правила для приложений.

В следующем примере мы создадим новую зону с именем memcached, откроем порт 11211 и разрешим доступ только с IP-адреса 192.168.100.30:

Создайте зону:

sudo firewall-cmd --new-zone=memcached --permanent

Добавьте правила в зону:

sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent
sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent
sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent

Перезагрузите демон firewalld, чтобы активировать изменения:

sudo firewall-cmd --reload

Службы брандмауэра

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

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

sudo firewall-cmd --get-services

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

sudo vi /usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
 <service>
 <short>WWW (HTTP)</short>
 <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
 <port protocol="tcp" port="80"/>
 </service>

Чтобы разрешить входящий 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 --runtime-to-permanent

Используйте --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 из постоянной конфигурации общедоступной зоны.

Создание новой службы брандмауэра D.

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

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

sudo vi /etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?>
 <service version="1.0">
 <short>plexmediaserver</short>
 <description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description>
 <port protocol="udp" port="1900"/>
 <port protocol="tcp" port="32400"/>
 </service>

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

sudo firewall-cmd --reload

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

Открытие портов и исходных IP-адресов

Firewalld также позволяет быстро включить весь трафик с доверенного IP-адреса или определенного порта без создания определения службы.

Открытие исходного IP

Чтобы разрешить весь входящий трафик с определенного IP-адреса (или диапазона), укажите зону с параметром --zone и IP-адрес источника с параметром --add-source.

Например, чтобы разрешить весь входящий трафик с адреса 192.168.1.10 в public зону, выполните:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

Сделайте новое правило постоянным:

sudo firewall-cmd --runtime-to-permanent

Проверьте изменения с помощью следующей команды:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

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

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

Открытие двери происхождения

Чтобы разрешить весь входящий трафик через заданный порт, укажите зону с параметром --zone, а также порт и протокол с параметром --add-port.

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

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

Протокол может быть tcp, udp, sctp или dccp.

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

sudo firewall-cmd --zone=public --list-ports
8080

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

sudo firewall-cmd --runtime-to-permanent

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

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

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

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

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

Перенаправить трафик с одного порта на другой по IP-адресу

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

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

Перенаправить трафик на другой IP-адрес

В следующем примере мы перенаправляем трафик с порта 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

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

sudo firewall-cmd --runtime-to-permanent

Вывод

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

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.