Download_Link
Участник клуба
Net-filter, как мы все знаем, это брандмауэр в Linux. Firewalld - это динамический демон для управления брандмауэрами с поддержкой сетевых зон. В более ранней версии, RHEL и CentOS 6, мы использовали iptables в качестве демона для инфраструктуры фильтрации пакетов. В RHEL / CentOS 7/8 , Fedora и openSUSE - интерфейс rong> iptables заменяется на firewalld .
Настроить и использовать FirewallD
Рекомендуется начать использовать Firewalld вместо iptables, поскольку это может прекратиться в будущем. Однако iptables по-прежнему поддерживаются и могут быть установлены с помощью команды yum . Мы не можем хранить Firewalld и iptables одновременно в одной системе, что может привести к конфликту.
В iptables мы использовали конфигурацию как INPUT, OUTPUT и FORWARD CHAINS, но здесь, в Firewalld , концепция использует зоны . По умолчанию в firewalld доступны разные зоны, о которых пойдет речь в этой статье.
Основная зона, которая похожа на общественную зону и приватную зону . Чтобы все работало с этими зонами, нам нужно добавить интерфейс с поддержкой указанной зоны, а затем мы можем добавить службы в firewalld.
По умолчанию доступно множество сервисов, одна из лучших особенностей firewalld - это то, что он поставляется с предопределенными сервисами, и мы можем взять эти сервисы в качестве примера, чтобы добавить наши сервисы, просто скопировав их.
Firewalld также отлично работает с мостами IPv4 , IPv6 и Ethernet . У нас может быть отдельная конфигурация времени выполнения и постоянная конфигурация в firewalld.
Давайте начнем с того, как работать с зонами и создавать собственные сервисы, а также о гораздо более интересном использовании firewalld.
Наша среда тестирования
Операционная система : CentOS Linux, выпуск 7.0.1406 (Core)
IP-адрес : 192.168.0.55
Имя хоста : server1.tecmintlocal.com
Наши детали установки
Шаг 1. Установка Firewalld в CentOS
1. Пакет Firewalld по умолчанию устанавливается в RHEL / CentOS 7/8 , Fedora и openSUSE . Если нет, вы можете установить его с помощью следующей команды yum .
# yum install firewalld -y
Установить Firewalld
2. После установки пакета firewalld пришло время проверить, запущена ли служба iptables или нет. Если она запущена, вам необходимо остановить и замаскировать (больше не использовать) службу iptables с помощью следующих команд.
# systemctl status iptables
# systemctl stop iptables
# systemctl mask iptables
Отключить службу Iptables
Шаг 2: Обсуждение компонентов Firewalld
3. Прежде чем приступить к настройке firewalld, я хотел бы обсудить каждую зону. По умолчанию доступно несколько зон. Нам нужно назначить интерфейс на зону. Зона определяет, что зона, которой было доверено или которой было отказано, соответствует уровню интерфейса для установления соединения. Зона может содержать сервисы и порты.
Здесь мы собираемся описать каждую зону, доступную в Firewalld.
Список зон Firewalld
# firewall-cmd --get-зоны
Найти доступные зоны в Firewalld
Список зон Firewalld по умолчанию
# firewall-cmd --get-default-zone
Зона по умолчанию Firewalld
Список всех зон Firewalld
# firewall-cmd --list-все-зоны
Примечание . Вывод вышеуказанной команды не уместится на одной странице, так как в нем будут перечислены все зоны, такие как блок, dmz, удаление, внешняя, домашняя, внутренняя, общедоступная, доверенная и рабочая. Если зоны имеют какие-либо расширенные правила, включенные службы или порты также будут перечислены с соответствующей информацией о зоне.
Шаг 3. Установка зоны Firewalld по умолчанию
4. Если вы хотите установить зону по умолчанию как внутреннюю, внешнюю, временную, рабочую или любую другую зону, вы можете использовать следующую команду, чтобы установить зону по умолчанию. Здесь по умолчанию используется « внутренняя » зона.
# firewall-cmd --set-default-zone = internal
5. После настройки зоны проверьте зону по умолчанию, используя команду ниже.
# firewall-cmd --get-default-zone
Установить зону Firewalld по умолчанию
6. Здесь наш интерфейс enp0s3. Если нам нужно проверить нашу зону, в которой интерфейс ограничен, мы можем использовать команду ниже.
# firewall-cmd --get-zone-of-interface = enp0s3
Проверить зону интерфейса
7. Еще одна интересная особенность firewalld - icmptype - один из типов icmp, поддерживаемых firewalld. Чтобы получить список поддерживаемых типов icmp, мы можем использовать следующую команду.
# firewall-cmd --get-icmptypes
Шаг 4: Создание собственных сервисов в Firewalld
8. Сервисы - это набор правил с портами и опциями, который используется Firewalld. Включенные службы будут автоматически загружены при запуске службы Firewalld .
По умолчанию доступно множество сервисов, чтобы получить список всех доступных сервисов, используйте следующую команду.
# firewall-cmd --get-services
Список служб Firewalld
9. Чтобы получить список всех доступных по умолчанию служб, перейдите в следующий каталог, здесь вы получите список служб.
# cd / usr / lib / firewalld / services /
Список служб Firewalld по умолчанию
10. Чтобы создать свой собственный сервис, вам необходимо определить его в следующем месте. Например, здесь я хочу добавить службу для порта RTMP 1935 , сначала сделайте копию любой из служб.
# cd / etc / firewalld / services /
# cp /usr/lib/firewalld/services/ssh.xml / etc / firewalld / services /
Затем перейдите в место, где был скопирован наш служебный файл, затем переименуйте файл ssh.xml в rtmp.xml , как показано на рисунке ниже.
# cd / etc / firewalld / services /
Создать службу Firewalld
Добавить службу Firewalld
11. Затем откройте и отредактируйте файл как заголовок, описание, протокол и номер порта , которые нам нужно использовать для службы RTMP, как показано на рисунке ниже.
Настроить службу Firewalld
12. Чтобы эти изменения активировались, перезапустите службу firewalld или перезагрузите настройки.
# firewall-cmd --reload
13. Чтобы подтвердить добавление службы или нет, выполните команду ниже, чтобы получить список доступных служб.
# firewall-cmd --get-services
Подтвердите добавленную службу в брандмауэре
Шаг 5: Назначение сервисов зонам Firewalld
14. Здесь мы увидим, как управлять брандмауэром с помощью команды firewall-cmd . Чтобы узнать текущее состояние брандмауэра и всех активных зон, введите следующую команду.
# firewall-cmd --state
# firewall-cmd --get-активные-зоны
15. Для того, чтобы получить общественную зону для интерфейса enp0s3 , это по умолчанию интерфейс, который определен в /etc/firewalld/firewalld.conf файла как DefaultZone = общественность .
Чтобы перечислить все доступные службы в этой зоне интерфейса по умолчанию.
# firewall-cmd --get-service
Шаг 6: Добавление сервисов в зоны Firewalld
16. В приведенных выше примерах мы видели, как создавать наши собственные службы путем создания службы rtmp , здесь мы увидим, как добавить службу rtmp в зону.
# firewall-cmd --add-service = rtmp
17. Чтобы удалить добавленную зону, введите.
# firewall-cmd --zone = public --remove-service = rtmp
Вышеупомянутый шаг был временным. Чтобы сделать его постоянным, нам нужно запустить приведенную ниже команду с параметром –permanent .
# firewall-cmd --add-service = rtmp --permanent
# firewall-cmd --reload
18. Определите правила для диапазона сетевых источников и откройте любой из портов. Например, если вы хотите открыть диапазон сети, скажите « 192.168.0.0/24 » и порт « 1935 », используйте следующие команды.
# firewall-cmd --permanent --add-source = 192.168.0.0 / 24
# firewall-cmd --permanent --add-port = 1935 / tcp
Не забудьте перезагрузить службу firewalld после добавления или удаления любых служб или портов.
# firewall-cmd --reload
# firewall-cmd --list-all
Открытый порт в Firewalld
Шаг 7. Добавление расширенных правил для диапазона сети
19. Если я хочу разрешить такие службы, как http, https, vnc-server, PostgreSQL, вы должны использовать следующие правила. Сначала добавьте правило и сделайте его постоянным, перезагрузите правила и проверьте статус.
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "http" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "http" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "https" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "https" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "vnc-server" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "vnc-server" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "postgresql" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "postgresql" accept' --permanent
Теперь диапазон сети 192.168.0.0/24 может использовать вышеуказанный сервис с моего сервера. Опция –permanent может использоваться в каждом правиле, но мы должны определить правило и проверить доступ клиента, после чего мы должны сделать его постоянным.
20. После добавления вышеуказанных правил не забудьте перезагрузить правила брандмауэра и составить список правил, используя:
# firewall-cmd --reload
# firewall-cmd --list-all
Список всех активных правил FirewallD
# человек firewalld
Вот и все, мы видели, как настроить сетевой фильтр с помощью Firewalld в RHEL / CentOS и Fedora .

Настроить и использовать FirewallD
Рекомендуется начать использовать Firewalld вместо iptables, поскольку это может прекратиться в будущем. Однако iptables по-прежнему поддерживаются и могут быть установлены с помощью команды yum . Мы не можем хранить Firewalld и iptables одновременно в одной системе, что может привести к конфликту.
В iptables мы использовали конфигурацию как INPUT, OUTPUT и FORWARD CHAINS, но здесь, в Firewalld , концепция использует зоны . По умолчанию в firewalld доступны разные зоны, о которых пойдет речь в этой статье.
Основная зона, которая похожа на общественную зону и приватную зону . Чтобы все работало с этими зонами, нам нужно добавить интерфейс с поддержкой указанной зоны, а затем мы можем добавить службы в firewalld.
По умолчанию доступно множество сервисов, одна из лучших особенностей firewalld - это то, что он поставляется с предопределенными сервисами, и мы можем взять эти сервисы в качестве примера, чтобы добавить наши сервисы, просто скопировав их.
Firewalld также отлично работает с мостами IPv4 , IPv6 и Ethernet . У нас может быть отдельная конфигурация времени выполнения и постоянная конфигурация в firewalld.
Давайте начнем с того, как работать с зонами и создавать собственные сервисы, а также о гораздо более интересном использовании firewalld.
Наша среда тестирования
Операционная система : CentOS Linux, выпуск 7.0.1406 (Core)
IP-адрес : 192.168.0.55
Имя хоста : server1.tecmintlocal.com

Наши детали установки
Шаг 1. Установка Firewalld в CentOS
1. Пакет Firewalld по умолчанию устанавливается в RHEL / CentOS 7/8 , Fedora и openSUSE . Если нет, вы можете установить его с помощью следующей команды yum .
# yum install firewalld -y

Установить Firewalld
2. После установки пакета firewalld пришло время проверить, запущена ли служба iptables или нет. Если она запущена, вам необходимо остановить и замаскировать (больше не использовать) службу iptables с помощью следующих команд.
# systemctl status iptables
# systemctl stop iptables
# systemctl mask iptables

Отключить службу Iptables
Шаг 2: Обсуждение компонентов Firewalld
3. Прежде чем приступить к настройке firewalld, я хотел бы обсудить каждую зону. По умолчанию доступно несколько зон. Нам нужно назначить интерфейс на зону. Зона определяет, что зона, которой было доверено или которой было отказано, соответствует уровню интерфейса для установления соединения. Зона может содержать сервисы и порты.
Здесь мы собираемся описать каждую зону, доступную в Firewalld.
- Зона отбрасывания : любые входящие пакеты отбрасываются, если мы используем эту зону отбрасывания. Это то же самое, что мы используем для добавления iptables -j drop . Если мы используем правило отбрасывания, это означает, что ответа нет, будут доступны только исходящие сетевые подключения.
- Зона блокировки : зона блокировки будет запрещать входящие сетевые подключения, которые отклоняются с помощью icmp-host -hibited. Будут разрешены только установленные соединения внутри сервера.
- Публичная зона : Чтобы принять выбранные соединения, мы можем определить правила в публичной зоне. Это позволит открывать только определенный порт на нашем сервере, другие соединения будут отключены.
- Внешняя зона : эта зона будет действовать как параметры маршрутизатора с включенной маскировкой, другие соединения будут отброшены и не будут приниматься, будет разрешено только указанное соединение.
- Зона DMZ : если нам нужно разрешить доступ к некоторым услугам для общественности, вы можете определить его в зоне DMZ. Это также имеет функцию приема только выбранных входящих соединений.
- Рабочая зона: в этой зоне мы можем определять только внутренние сети, т.е. разрешен трафик частных сетей.
- Домашняя зона : эта зона специально используется в домашних зонах, мы можем использовать эту зону, чтобы доверять другим компьютерам в сети, чтобы они не нанесли вред вашему компьютеру, как и каждая зона. Это тоже разрешает только выбранные входящие соединения.
- Внутренняя зона : аналогична рабочей зоне с выбранными разрешенными соединениями.
- Доверенная зона : если мы установили доверенную зону, весь трафик будет приниматься.
Список зон Firewalld
# firewall-cmd --get-зоны

Найти доступные зоны в Firewalld
Список зон Firewalld по умолчанию
# firewall-cmd --get-default-zone

Зона по умолчанию Firewalld
Список всех зон Firewalld
# firewall-cmd --list-все-зоны
Примечание . Вывод вышеуказанной команды не уместится на одной странице, так как в нем будут перечислены все зоны, такие как блок, dmz, удаление, внешняя, домашняя, внутренняя, общедоступная, доверенная и рабочая. Если зоны имеют какие-либо расширенные правила, включенные службы или порты также будут перечислены с соответствующей информацией о зоне.
Шаг 3. Установка зоны Firewalld по умолчанию
4. Если вы хотите установить зону по умолчанию как внутреннюю, внешнюю, временную, рабочую или любую другую зону, вы можете использовать следующую команду, чтобы установить зону по умолчанию. Здесь по умолчанию используется « внутренняя » зона.
# firewall-cmd --set-default-zone = internal
5. После настройки зоны проверьте зону по умолчанию, используя команду ниже.
# firewall-cmd --get-default-zone

Установить зону Firewalld по умолчанию
6. Здесь наш интерфейс enp0s3. Если нам нужно проверить нашу зону, в которой интерфейс ограничен, мы можем использовать команду ниже.
# firewall-cmd --get-zone-of-interface = enp0s3

Проверить зону интерфейса
7. Еще одна интересная особенность firewalld - icmptype - один из типов icmp, поддерживаемых firewalld. Чтобы получить список поддерживаемых типов icmp, мы можем использовать следующую команду.
# firewall-cmd --get-icmptypes
Шаг 4: Создание собственных сервисов в Firewalld
8. Сервисы - это набор правил с портами и опциями, который используется Firewalld. Включенные службы будут автоматически загружены при запуске службы Firewalld .
По умолчанию доступно множество сервисов, чтобы получить список всех доступных сервисов, используйте следующую команду.
# firewall-cmd --get-services

Список служб Firewalld
9. Чтобы получить список всех доступных по умолчанию служб, перейдите в следующий каталог, здесь вы получите список служб.
# cd / usr / lib / firewalld / services /

Список служб Firewalld по умолчанию
10. Чтобы создать свой собственный сервис, вам необходимо определить его в следующем месте. Например, здесь я хочу добавить службу для порта RTMP 1935 , сначала сделайте копию любой из служб.
# cd / etc / firewalld / services /
# cp /usr/lib/firewalld/services/ssh.xml / etc / firewalld / services /
Затем перейдите в место, где был скопирован наш служебный файл, затем переименуйте файл ssh.xml в rtmp.xml , как показано на рисунке ниже.
# cd / etc / firewalld / services /

Создать службу Firewalld

Добавить службу Firewalld
11. Затем откройте и отредактируйте файл как заголовок, описание, протокол и номер порта , которые нам нужно использовать для службы RTMP, как показано на рисунке ниже.

Настроить службу Firewalld
12. Чтобы эти изменения активировались, перезапустите службу firewalld или перезагрузите настройки.
# firewall-cmd --reload
13. Чтобы подтвердить добавление службы или нет, выполните команду ниже, чтобы получить список доступных служб.
# firewall-cmd --get-services

Подтвердите добавленную службу в брандмауэре
Шаг 5: Назначение сервисов зонам Firewalld
14. Здесь мы увидим, как управлять брандмауэром с помощью команды firewall-cmd . Чтобы узнать текущее состояние брандмауэра и всех активных зон, введите следующую команду.
# firewall-cmd --state
# firewall-cmd --get-активные-зоны
15. Для того, чтобы получить общественную зону для интерфейса enp0s3 , это по умолчанию интерфейс, который определен в /etc/firewalld/firewalld.conf файла как DefaultZone = общественность .
Чтобы перечислить все доступные службы в этой зоне интерфейса по умолчанию.
# firewall-cmd --get-service
Шаг 6: Добавление сервисов в зоны Firewalld
16. В приведенных выше примерах мы видели, как создавать наши собственные службы путем создания службы rtmp , здесь мы увидим, как добавить службу rtmp в зону.
# firewall-cmd --add-service = rtmp
17. Чтобы удалить добавленную зону, введите.
# firewall-cmd --zone = public --remove-service = rtmp
Вышеупомянутый шаг был временным. Чтобы сделать его постоянным, нам нужно запустить приведенную ниже команду с параметром –permanent .
# firewall-cmd --add-service = rtmp --permanent
# firewall-cmd --reload
18. Определите правила для диапазона сетевых источников и откройте любой из портов. Например, если вы хотите открыть диапазон сети, скажите « 192.168.0.0/24 » и порт « 1935 », используйте следующие команды.
# firewall-cmd --permanent --add-source = 192.168.0.0 / 24
# firewall-cmd --permanent --add-port = 1935 / tcp
Не забудьте перезагрузить службу firewalld после добавления или удаления любых служб или портов.
# firewall-cmd --reload
# firewall-cmd --list-all

Открытый порт в Firewalld
Шаг 7. Добавление расширенных правил для диапазона сети
19. Если я хочу разрешить такие службы, как http, https, vnc-server, PostgreSQL, вы должны использовать следующие правила. Сначала добавьте правило и сделайте его постоянным, перезагрузите правила и проверьте статус.
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "http" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "http" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "https" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "https" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "vnc-server" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "vnc-server" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "postgresql" accept'
# firewall-cmd --add-rich-rule 'rule family = "ipv4" source address = "192.168.0.0/24" service name = "postgresql" accept' --permanent
Теперь диапазон сети 192.168.0.0/24 может использовать вышеуказанный сервис с моего сервера. Опция –permanent может использоваться в каждом правиле, но мы должны определить правило и проверить доступ клиента, после чего мы должны сделать его постоянным.
20. После добавления вышеуказанных правил не забудьте перезагрузить правила брандмауэра и составить список правил, используя:
# firewall-cmd --reload
# firewall-cmd --list-all

Список всех активных правил FirewallD
# человек firewalld
Вот и все, мы видели, как настроить сетевой фильтр с помощью Firewalld в RHEL / CentOS и Fedora .