Android

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

#CentOS 8 Installation step by step on Oracle Virtual Box | CentOS 8 boxes| CentOS 8 cockpit

#CentOS 8 Installation step by step on Oracle Virtual Box | CentOS 8 boxes| CentOS 8 cockpit

Оглавление:

Anonim

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

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

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

Предпосылки

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

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

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

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

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

Firewalld Zones

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

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

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

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

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

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

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

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

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

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

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

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

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

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

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

Включение FirewallD

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

sudo dnf install firewalld sudo systemctl enable firewalld --now

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

sudo firewall-cmd --state

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

Firewalld Zones

Зона по умолчанию - это та, которая используется для всего, что явно не назначено другой зоне.

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

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

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

    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 Services

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

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

sudo firewall-cmd --get-services

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

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

WWW (HTTP) 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. WWW (HTTP) 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.

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

sudo firewall-cmd --zone=public --add-service=http Если вы --zone зону по умолчанию, вы можете --zone опцию --zone .

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

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

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

sudo firewall-cmd --runtime-to-permanent

Используйте --list-services вместе с опцией --permanent для проверки ваших изменений:

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

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

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

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

Создание новой службы FirewallD

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

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

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver 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. plexmediaserver 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.

Сохраните файл и перезагрузите службу 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.

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

firewalld firewall centos безопасность