Поиск по сайту:

Серия RHCSA: Основы межсетевого экрана и управление сетевым трафиком с помощью FirewallD и Iptables. Часть 11


Проще говоря, брандмауэр — это система безопасности, которая контролирует входящий и исходящий трафик в сети на основе набора предопределенных правил (например, назначения/источника пакета или типа трафика). .

В этой статье мы рассмотрим основы firewalld, демона динамического брандмауэра по умолчанию в Red Hat Enterprise Linux 7, и службы iptables, устаревшей версии. служба брандмауэра для Linux, с которой хорошо знакомо большинство системных и сетевых администраторов и которая также доступна в RHEL 7.

Сравнение FirewallD и Iptables

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

Firewalld должен быть установлен по умолчанию в вашей системе RHEL, хотя он может быть и не запущен. Вы можете проверить это с помощью следующих команд (firewall-config — инструмент настройки пользовательского интерфейса):


yum info firewalld firewall-config

и,


systemctl status -l firewalld.service

С другой стороны, служба iptables не включена по умолчанию, но ее можно установить.


yum update && yum install iptables-services

Оба демона можно запустить и разрешить запуск при загрузке с помощью обычных команд systemd:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Читайте также: Полезные команды для управления службами Systemd

Что касается файлов конфигурации, служба iptables использует /etc/sysconfig/iptables (которого не будет, если пакет не установлен в вашей системе). На компьютере RHEL 7, используемом в качестве узла кластера, этот файл выглядит следующим образом:

В то время как firewalld хранит свою конфигурацию в двух каталогах: /usr/lib/firewalld и /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

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


man firewalld.conf
man firewall-cmd
man iptables

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

Использование Iptables для управления сетевым трафиком

Возможно, вам захочется обратиться к разделу «Настройка брандмауэра Iptables — часть 8» серии статей Сертифицированный инженер Linux Foundation (LFCE), чтобы освежить память о внутренних компонентах iptables. прежде чем продолжить. Таким образом, мы сможем сразу перейти к примерам.

Пример 1. Разрешение как входящего, так и исходящего веб-трафика.

TCP-порты 80 и 443 — это порты по умолчанию, используемые веб-сервером Apache для обработки обычных (HTTP) и безопасных (HTTPS<)) веб-трафик. Вы можете разрешить входящий и исходящий веб-трафик через оба порта интерфейса enp0s3 следующим образом:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Пример 2. Блокировка всех (или некоторых) входящих подключений из определенной сети.

В некоторых случаях вам может потребоваться заблокировать весь (или некоторые) тип трафика, исходящий из определенной сети, например 192.168.1.0/24:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

отбросит все пакеты, поступающие из сети 192.168.1.0/24, тогда как


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

разрешит входящий трафик только через порт 22.

Пример 3. Перенаправление входящего трафика в другое место назначения.

Если вы используете свой компьютер RHEL 7 не только в качестве программного брандмауэра, но и в качестве аппаратного брандмауэра, так что он находится между двумя разными сетями, в вашей системе должна быть уже включена переадресация IP. . Если нет, вам необходимо отредактировать /etc/sysctl.conf и установить для параметра net.ipv4.ip_forward значение 1 следующим образом:


net.ipv4.ip_forward = 1

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


sysctl -p /etc/sysctl.conf

Например, у вас может быть установлен принтер во внутреннем ящике с IP 192.168.0.10, а служба CUPS прослушивает порт 631 (оба на сервере печати и на брандмауэре). Чтобы пересылать запросы на печать от клиентов по другую сторону брандмауэра, вам следует добавить следующее правило iptables:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Помните, что iptables считывает свои правила последовательно, поэтому убедитесь, что политики по умолчанию или более поздние правила не переопределяют правила, описанные в примерах выше.

Начало работы с FirewallD

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

Чтобы вывести список активных зон:


firewall-cmd --get-active-zones

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


firewall-cmd --zone=public --list-all

Поскольку подробнее о зонах можно прочитать в руководстве по безопасности RHEL 7, здесь мы перечислим лишь некоторые конкретные примеры.

Пример 4. Разрешение служб через брандмауэр

Чтобы получить список поддерживаемых сервисов, используйте.


firewall-cmd --get-services

Чтобы разрешить веб-трафик http и https через брандмауэр (действительно немедленно и при последующих загрузках):


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Если–zone опущен, используется зона по умолчанию (вы можете проверить это с помощью firewall-cmd –get-default-zone).

Чтобы удалить правило, замените слово «добавить» на «удалить» в приведенных выше командах.

Пример 5: Переадресация IP/портов

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


firewall-cmd --zone=MyZone --query-masquerade

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

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


firewall-cmd --zone=public --add-masquerade

или используйте маскировку в external. Вот что нам нужно сделать, чтобы воспроизвести Пример 3 с помощью firewalld:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

И не забудьте перезагрузить брандмауэр.

Дополнительные примеры вы можете найти в части 9 серии статей RHCSA, где мы объяснили, как разрешить или отключить порты, которые обычно используются веб-сервером и ftp-сервером, и как изменить соответствующее правило, когда порт по умолчанию для этих служб изменены. Кроме того, вы можете обратиться к вики firewalld за дополнительными примерами.

Читайте также: Полезные примеры FirewallD для настройки брандмауэра в RHEL 7

Заключение

В этой статье мы объяснили, что такое брандмауэр, какие службы доступны для его реализации в RHEL 7, а также предоставили несколько примеров, которые помогут вам начать работу с ним. задача. Если у вас есть какие-либо комментарии, предложения или вопросы, сообщите нам об этом, используя форму ниже. Заранее спасибо!