Брандмауэр — это метод мониторинга и фильтрации входящего и исходящего сетевого трафика. Он работает, определяя набор правил безопасности, которые определяют, разрешить или заблокировать определенный трафик. Правильно настроенный брандмауэр — один из наиболее важных аспектов общей безопасности системы.
CentOS 8 поставляется с демоном межсетевого экрана с именем firewalld . Это законченное решение с интерфейсом D-Bus, которое позволяет динамически управлять брандмауэром системы.
В этом руководстве мы поговорим о том, как настроить брандмауэр в CentOS 8 и управлять им. Мы также объясним основные концепции FirewallD.
FirewallD — это законченное решение межсетевого экрана, которое управляет системными правилами iptables и предоставляет интерфейс D-Bus для работы с ними. Начиная с CentOS 7, FirewallD заменяет iptables в качестве инструмента управления брандмауэром по умолчанию.
В этом руководстве мы покажем вам, как настроить брандмауэр с помощью FirewallD в вашей системе CentOS 7, и объясним вам основные концепции FirewallD.
FirewallD — это законченное решение межсетевого экрана, которым можно управлять с помощью утилиты командной строки firewall-cmd. Если вам удобнее использовать синтаксис командной строки Iptables, вы можете отключить FirewallD и вернуться к классической настройке iptables.
Из этого туториала Вы узнаете, как отключить службу FirewallD и установить iptables.
- Подготовка
- Отключить FirewallD
- Установить и включить Iptables
- Выводы
- Основные концепции Firewalld
- Зоны Firewalld
- Услуги межсетевого экрана
- Среда выполнения Firewalld и постоянные настройки
- Открытие портов и исходных IP-адресов
- Открытие исходного порта
- Открытие порта или сервиса
- Создание новой службы FirewallD
- Включение FirewallD
- Работа с зонами Firewalld
- Изменение зоны интерфейса
- Изменение зоны по умолчанию
- Изменение цели зоны
- Назначение интерфейса другой зоне
- Создание новых зон
- Порт пересылки с Firewalld
- Установка и включение FirewallD
- Услуги Firewalld
- Создание набора правил с помощью FirewallD
- Порты пересылки
- Перенаправлять трафик с одного порта на другой по IP-адресу
Подготовка
Перед тем, как начать работу с руководством, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .
Отключить FirewallD
Чтобы отключить FirewallD в вашей системе CentOS 7 , выполните следующие действия:
Установить и включить Iptables
Выполните следующие шаги для установки Iptables в системе CentOS 7:
На этом этапе вы успешно включили службу iptables и можете приступить к созданию брандмауэра. Изменения сохранятся после перезагрузки.
Выводы
В этом руководстве вы узнали, как отключить службу FirewallD и установить iptables.
Основные концепции Firewalld
FirewallD использует концепции зон и служб, а не цепочку и правила iptables. В зависимости от зон и служб, которые вы настраиваете, вы можете контролировать, какой трафик разрешен или запрещен в систему и из системы.
FirewallD можно настроить и управлять им с помощью утилиты командной строки firewall-cmd .
Зоны Firewalld
Зоны — это предопределенные наборы правил, определяющие, какой трафик должен быть разрешен в зависимости от уровня доверия в сетях, к которым подключен ваш компьютер. Вы можете назначить зоне сетевые интерфейсы и источники.
Ниже приведены зоны, предоставляемые FirewallD, упорядоченные в соответствии с уровнем доверия зоны от ненадежных до доверенных:
Услуги межсетевого экрана
Сервисы Firewalld — это предопределенные правила, которые применяются в зоне и определяют необходимые настройки, чтобы разрешить входящий трафик для конкретной службы.
Среда выполнения Firewalld и постоянные настройки
Firewalld использует два отдельных набора конфигураций: время выполнения и постоянную конфигурацию.
Конфигурация среды выполнения — это фактическая рабочая конфигурация, которая не сохраняется при перезагрузке. Когда служба Firewalld запускается, она загружает постоянную конфигурацию, которая становится конфигурацией времени выполнения.
По умолчанию при внесении изменений в конфигурацию Firewalld с помощью утилиты firewall-cmd изменения применяются к конфигурации среды выполнения. Чтобы сделать изменения постоянными, вам нужно использовать параметр —permanent .
firewalld использует концепции зон и сервисов. В зависимости от зон и служб, которые вы настраиваете, вы можете контролировать, какой трафик разрешен или заблокирован в систему и из нее.
В CentOS 8 iptables заменен на nftables в качестве серверной части межсетевого экрана по умолчанию для демона firewalld.
Зоны — это предопределенные наборы правил, которые определяют уровень доверия сетей, к которым подключен ваш компьютер. Вы можете назначить зоне сетевые интерфейсы и источники.
Сервисы Firewalld — это предопределенные правила, которые применяются в зоне и определяют необходимые настройки, чтобы разрешить входящий трафик для конкретной службы. Сервисы позволяют легко выполнять несколько задач за один шаг.
Например, служба может содержать определения об открытии портов, пересылке трафика и т. Д.
Конфигурация среды выполнения — это фактическая рабочая конфигурация, которая не сохраняется при перезагрузке. Когда демон firewalld запускается, он загружает постоянную конфигурацию, которая становится конфигурацией времени выполнения.
По умолчанию при внесении изменений в конфигурацию Firewalld с помощью утилиты firewall-cmd изменения применяются к конфигурации среды выполнения. Чтобы сделать изменения постоянными, добавьте к —permanent параметр —permanent .
Чтобы применить изменения в обоих наборах конфигурации, вы можете использовать один из следующих двух методов:
Открытие портов и исходных IP-адресов
Например, чтобы разрешить весь входящий трафик с 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
sudo firewall-cmd —zone=public —remove-source=192.168.1.10
Открытие исходного порта
Чтобы разрешить весь входящий трафик на данный порт, укажите зону с —zone параметра —zone а порт и протокол — с помощью параметра —add-port .
Например, чтобы открыть порт 8080 в публичной зоне для текущего сеанса, который вы запустили, выполните:
sudo firewall-cmd —zone=public —add-port=8080/tcp
Протокол может быть tcp , udp , sctp или dccp .
sudo firewall-cmd —zone=public —list-ports
Чтобы порт —permanent открытым после перезагрузки, добавьте правило к постоянным настройкам, выполнив ту же команду с флагом —permanent или выполнив:
Синтаксис удаления порта такой же, как и при добавлении порта. Просто используйте —remove-port вместо —add-port .
sudo firewall-cmd —zone=public —remove-port=8080/tcp
Открытие порта или сервиса
С помощью FirewallD вы можете разрешить трафик для определенных портов на основе предопределенных правил, называемых службами.
Чтобы получить список всех доступных по умолчанию услуг, введите:
sudo firewall-cmd —get-services
Вы можете найти дополнительную информацию о каждой службе, открыв связанный файл .xml в каталоге /usr/lib/firewalld/services . Например, служба HTTP определяется так:
Чтобы разрешить входящий 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 http
Если вы хотите оставить порт 80 открытым после перезагрузки, вам нужно будет ввести ту же команду еще раз, но на этот раз с параметром —permanent :
sudo firewall-cmd —permanent —zone=public —add-service=http
Используйте —list-services вместе с параметром —permanent чтобы проверить свои изменения:
sudo firewall-cmd —permanent —zone=public —list-services
Синтаксис удаления службы такой же, как и при добавлении службы. Просто используйте —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 :
Чтобы порт 32400 открытым после перезагрузки, добавьте правило к постоянным настройкам, выполнив ту же команду с параметром —permanent .
sudo firewall-cmd —zone=public —remove-port=32400/tcp
Создание новой службы 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
В следующем примере мы открываем порты 1900 UDP и 32400 TCP.
Сохраните файл и перезагрузите сервис FirewallD:
sudo firewall-cmd —reload
Теперь вы можете использовать услугу plexmediaserver в своих зонах так же, как и любую другую услугу.
Включение FirewallD
В CentOS 8 firewalld установлен и включен по умолчанию. Если по какой-то причине он не установлен в вашей системе, вы можете установить и запустить демон, набрав:
sudo dnf install firewalldsudo systemctl enable firewalld —now
Вы можете проверить статус службы межсетевого экрана с помощью:
sudo firewall-cmd —state
Если брандмауэр включен, то команда должна печатать running . В противном случае вы увидите, что not running .
Работа с зонами Firewalld
После включения службы FirewallD в первый раз public зона устанавливается как зона по умолчанию. Вы можете просмотреть зону по умолчанию, набрав:
sudo firewall-cmd —get-default-zone
Чтобы получить список всех доступных зон, введите:
sudo firewall-cmd —get-zones
По умолчанию всем сетевым интерфейсам назначается зона по умолчанию. Чтобы проверить, какие зоны используются вашим сетевым интерфейсом, введите:
sudo firewall-cmd —get-active-zones
public
interfaces: eth0 eth1
Приведенный выше вывод говорит нам, что оба интерфейса eth0 и eth1 назначены публичной зоне.
Вы можете распечатать настройки конфигурации зоны с помощью:
sudo firewall-cmd —zone=public —list-all
Из выходных данных выше мы видим, что публичная зона активна и установлена по умолчанию, используемая как интерфейсами eth0 и eth1 . Кроме того, разрешены соединения, относящиеся к клиенту DHCP и SSH.
Если вы хотите проверить конфигурации всех доступных типов зон:
sudo firewall-cmd —list-all-zones
Команда выводит на печать огромный список с настройками всех доступных зон.
Изменение зоны интерфейса
Вы можете легко изменить Зону интерфейса, используя параметр —zone в сочетании с параметром —change-interface . Следующая команда назначит интерфейс eth1 рабочей зоне:
sudo firewall-cmd —zone=work —change-interface=eth1
Проверьте изменения, набрав:
work
interfaces: eth1
public
interfaces: eth0
Изменение зоны по умолчанию
Чтобы изменить зону по умолчанию, используйте параметр —set-default-zone за которым следует имя зоны, которую вы хотите сделать по умолчанию.
Например, чтобы изменить зону по умолчанию на домашнюю, вы должны выполнить следующую команду:
sudo firewall-cmd —set-default-zone=home
Проверьте изменения с помощью:
Если вы не изменили его, зона по умолчанию будет public , и все сетевые интерфейсы назначены этой зоне.
Зона по умолчанию — это зона, которая используется для всего, что явно не назначено другой зоне.
Вы можете увидеть зону по умолчанию, набрав:
Чтобы увидеть активные зоны и назначенные им сетевые интерфейсы:
Выходные данные ниже показывают, что интерфейсы eth0 и eth1 назначены public зоне:
Из выходных данных выше мы видим, что публичная зона активна и использует цель по умолчанию — REJECT . Выходные данные также показывают, что зона используется интерфейсами eth0 и eth1 и разрешает DHCP-клиент и трафик SSH.
Изменение цели зоны
Цель определяет поведение зоны по умолчанию для входящего трафика, который не указан. Для него можно установить один из следующих вариантов: по default , ACCEPT , REJECT и DROP .
Чтобы установить цель зоны, укажите зону с параметром —zone и цель с параметром —set-target .
Например, чтобы изменить цель public зоны на DROP вы должны запустить:
sudo firewall-cmd —zone=public —set-target=DROP
Назначение интерфейса другой зоне
Вы можете создавать определенные наборы правил для разных зон и назначать им разные интерфейсы. Это особенно полезно, когда на вашем компьютере несколько интерфейсов.
Чтобы назначить интерфейс другой зоне, укажите зону с параметром —zone и интерфейс с параметром —change-interface .
Например, следующая команда назначает интерфейс eth1 work зоне:
Например, чтобы изменить зону по умолчанию на home вы должны выполнить следующую команду:
Создание новых зон
Firewalld также позволяет создавать свои собственные зоны. Это удобно, когда вы хотите создать правила для каждого приложения.
Порт пересылки с 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
Прежде чем приступить к изучению этого руководства, убедитесь, что вы вошли на свой сервер с учетной записью пользователя с привилегиями sudo или с пользователем root. Лучше всего запускать административные команды от имени пользователя sudo, а не root. Если у вас нет пользователя sudo в вашей системе CentOS, вы можете создать его, следуя этим инструкциям .
Услуги Firewalld
С помощью firewalld вы можете разрешить трафик для определенных портов и / или источников на основе предопределенных правил, называемых службами.
Чтобы порт 80 —permanent открытым после перезагрузки, выполните ту же команду еще раз с параметром —permanent или выполните:
Синтаксис удаления службы такой же, как и при ее добавлении. Просто используйте —remove-service вместо флага —add-service :
Например, чтобы создать определение службы для Plex Media Server, вы можете использовать служебный файл SSH:
Создание набора правил с помощью FirewallD
В следующем примере мы покажем, как настроить брандмауэр, если у вас был веб-сервер. Мы предполагаем, что ваш сервер имеет только один интерфейс eth0 , и вы хотите разрешить входящий трафик только по портам SSH, HTTP и HTTPS.
Порты пересылки
Чтобы перенаправить трафик с одного порта на другой, сначала включите маскировку для желаемой зоны с помощью параметра —add-masquerade . Например, чтобы включить маскировку для external зоны, введите:
Перенаправлять трафик с одного порта на другой по IP-адресу
Чтобы сделать правило пересылки постоянным, используйте:
Вы узнали, как настраивать и управлять службой firewalld в вашей системе CentOS 8.
Обязательно разрешите все входящие соединения, которые необходимы для правильного функционирования вашей системы, ограничив при этом все ненужные соединения.
Вы узнали, как настраивать и управлять службой FirewallD в вашей системе CentOS.

