DataLife Engine / CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

Основной брандмауэр в операционных системах Linux - это iptables. Но команды iptables сложны, и многим пользователям тяжело запомнить все опции и случаи, в которых их надо использовать. Поэтому разработчики дистрибутивов создают свои надстройки над iptables, которые помогают упростить управление фаерволом. У CentOS надстройка для управления iptables называется Firewalld.

У Firewalld есть несколько важных отличий, по сравнению с iptables. Здесь управление доступом к сети выполняется на уровне зон и сервисов, а не цепочек и правил. А также правила обновляются динамически, не прерывая запущенных сессий. В этой статье будет рассмотрена настройка Firewall CentOS 7 на примере Firewalld.


Содержание статьи

Основы использования Firewalld

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

Таким образом, чтобы разрешить или запретить какой-либо сервис, вам достаточно добавить или удалить его из текущей зоны или сменить зону интерфейса на ту, где он разрешён. Можно провести аналогию с политикой действий по умолчанию для пакетов в iptables. Зона trusted имеет политику ACCEPT и разрешает все подключения, зона block имеет политику DENY, которая запрещает все подключения, а все остальные зоны можно считать наследниками зоны block, плюс в них уже предопределены правила разрешения сетевых подключений для некоторых сервисов.

Также у Firewalld есть два вида конфигурации:

Теперь вы знаете всё необходимое, поэтому перейдём к утилите firewalld-cmd.

Синтаксис и опции firewall-cmd

Управлять настройками Firewalld можно как с помощью консольной утилиты firewall-cmd, так и в графическом интерфейсе. CentOS чаще всего используется на серверах, поэтому вам придётся работать в терминале. Давайте рассмотрим синтаксис утилиты:

firewall-cmd опции

Для управления зонами используется такой синтаксис:

firewall-cmd --конфигурация --zone=зона опции

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

Это далеко не все опции утилиты, но для этой статьи нам будет их достаточно.

Настройка Firewall в CentOS 7

1. Статус брандмауэра

Первым делом необходимо посмотреть состояние брандмауэра. Для этого выполните:

sudo systemctl status firewalld

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

Если служба Firewalld отключена, то необходимо её включить:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Теперь нужно посмотреть, запущен ли Firewalld, с помощью команды firewall-cmd:

sudo firewall-cmd --state

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

Если программа запущена и всё хорошо, то вы получите сообщение "running".

2. Управление зонами

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

sudo firewall-cmd --get-default-zone

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

В моем случае это зона public. Вы можете изменить текущую зону с помощью опции --set-default-zone:

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

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

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

sudo firewall-cmd --get-active-zones

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

В списке будут выведены зоны и интерфейсы, для которых они присвоены. Такой командой можно посмотреть конфигурацию для определённой зоны. Например, для зоны public:

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

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

3. Настройка сервисов

Вы можете посмотреть все предопределенные сервисы командой:

sudo firewall-cmd --get-services

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

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

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

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

А чтобы удалить этот сервис, выполните:

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

 

В обоих случаях мы использовали опцию --permanent, чтобы конфигурация сохранялась после перезагрузки. После изменений нужно обновить правила:

sudo firewall-cmd --reload

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

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

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

4. Как открыть порт в Firewalld

Если для нужной вам программы нет сервиса, вы можете открыть её порт вручную. Для этого просто добавьте нужный порт к зоне. Например порт 8083:

sudo firewall-cmd --zone=public --add-port=8083/tcp --permanent

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

Чтобы удалить этот порт из зоны, выполните:

sudo firewall-cmd --zone=public --remove-port=8083/tcp --permanent

Аналогично сервисам, чтобы открыть порт в firewall centos 7 надо перезагрузить брандмауэр.

sudo firewall-cmd --reload

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

5. Проброс портов Firewalld

Проборс портов в Firewalld настраивается намного проще, чем в iptables. Если вам нужно, например, перенаправить трафик с порта 2223 на порт 22, достаточно добавить к зоне перенаправление:

sudo firewall-cmd --zone=public --add-forward-port=port=2223:proto=tcp:toport=22

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

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

Затем уже можно добавить порт:

sudo firewall-cmd --zone=publiс --add-forward-port=port=2223:proto=tcp:toport=22:toaddr=192.168.56.4

6. Расширенные правила

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

rule family="семейтво" source значение destination значение log audit действие

Вот значение основных параметров:

Давайте рассмотрим несколько примеров. Нам необходимо заблокировать доступ к серверу для пользователя с IP 135.152.53.5:

sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=135.152.53.5 reject'

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

Или нам нужно запретить для этого же пользователя только доступ к порту 22:

sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=135.152.53.5 port port=22 protocol=tcp reject'

Посмотреть все расширенные правила можно командой:

sudo firewall-cmd --list-rich-rules

CentOS 7: Полный контроль над сетевым экраном Firewalld за 5 минут

Выводы

В этой статье мы разобрали, как выполняется настройка firewall в CentOS 7 и какие задачи можно с помощью него выполнить. Программой намного проще пользоваться, чем iptables, но по моему мнению надстройка фаервола от Ubuntu - ufw ещё проще в использовании.

https://youtu.be/bE9NoxzWp8s

16-10-2025, 06:54
Вернуться назад