В этой статье мы расскажем, как работать с firewalld в CentOS.
Что такое брандмауэр в Linux
Брандмауэр — программа, предназначенная для контроля входящего и исходящего сетевого трафика. Брандмауэр работает по принципу фильтрации пакетов. Когда данные поступают в систему или отправляются из нее, они проходят через брандмауэр, который применяет к ним заранее настроенные правила. Эти правила могут блокировать, разрешать или перенаправлять трафик. Брандмауэр помогает защищать систему от несанкционированного доступа, атак и других сетевых угроз, а также распределять трафик в сети.
Что такое firewalld
Firewalld — гибкий инструмент для управления брандмауэром, который по умолчанию установлен во многих RHEL-based дистрибутивах Linux: CentOS, Fedora, Red Hat. Он заменяет классические iptables и nftables, предоставляя более удобный интерфейс для управления правилами фильтрации трафика, NAT и других сетевых функций.
Главная особенность firewalld — динамическое управление. В отличие от iptables и nftables, firewalld позволяет вносить изменения в сетевые правила и конфигурацию безопасности без необходимости перезагрузки системы или самого брандмауэра. Поэтому его удобно использовать для систем, которые должны работать без простоев.
Настройка firewalld в CentOS
Для работы с firewalld существует две утилиты: firewall-cmd для управления через терминал и firewall-config с графическим интерфейсом. В статье для настройки будет использоваться утилита firewall-cmd.
Установка firewalld
Как правило, firewalld в CentOS установлен по умолчанию. Проверить, работает ли firewalld на вашем сервере, можно с помощью команды:
sudo systemctl status firewalld
Если firewalld работает, вы увидите следующее:
Настройка firewalld
Если на вашем сервере не установлен firewalld, установите его с помощью команды:
sudo yum install firewalld
После установки запустите службу и включите автоматический запуск fitewalld при загрузке системы:
sudo systemctl start firewalld
sudo systemctl enable firewalld
Затем проверьте статус с помощью команды:
sudo systemctl status firewalld
Знакомство с текущими параметрами firewalld
Прежде чем приступить к настройке firewalld, важно ознакомиться с текущей конфигурацией брандмауэра. Это позволит лучше понять, какие порты и сервисы уже настроены и какие зоны активны.
Firewalld использует концепцию зон для управления трафиком. Каждая зона содержит набор правил, которые применяются к подключенным интерфейсам. Как правило, по умолчанию все сетевые интерфейсы привязаны к зоне public. Чтобы узнать, какая зона используется по умолчанию, воспользуйтесь командой:
firewall-cmd --get-default-zone
Чтобы узнать, какие зоны активны и контролируют трафик сетевых интерфейсов, выполните следующую команду:
firewall-cmd --get-active-zones
Для просмотра всех настроек активной зоны используйте команду:
sudo firewall-cmd --list-all
Знакомство с альтернативными зонами
В firewalld, помимо зоны public, существуют и другие зоны. Чтобы узнать список доступных зон, введите команду:
firewall-cmd --get-zones
Чтобы посмотреть конфигурацию конкретной зоны, воспользуйтесь командой:
sudo firewall-cmd --zone=название_зоны --list-all
Чтобы посмотреть конфигурацию всех существующих зон, используйте команду:
sudo firewall-cmd --list-all-zones
Настройка портов
Одна из главных задач при работе с брандмауэром — это управление доступом к портам. Firewalld позволяет легко добавлять и удалять порты из конфигурации.
Для открытия определенного порта (например, HTTP на порту 80) выполните команду:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
Ключ --permanent используется для того, чтобы правило работало постоянно, в том числе и после перезагрузки сервера.
Чтобы изменения вступили в силу, выполните команду:
sudo firewall-cmd --reload
Если вы хотите, чтобы правило работало только до перезагрузки сервера, используйте команду:
sudo firewall-cmd --zone=public --add-port=80/tcp
Чтобы закрыть ранее открытый порт, используйте команду:
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
Для вступления изменений в силу введите:
sudo firewall-cmd --reload
Настройка сервисов
Вместо настройки конкретных портов в firewalld можно работать с предустановленными сервисами. Это удобный способ разрешить или запретить доступ к популярным сервисам, таким как SSH.
Посмотреть список сервисов можно с помощью команды:
sudo firewall-cmd --list-services
Узнать информацию о сервисе можно с помощью команды:
sudo firewall-cmd --info-service=название_сервиса
Для добавления определенного сервиса, например SSH, выполните команду:
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload
Если вы хотите запретить доступ к какому-либо сервису, используйте следующую команду:
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
sudo firewall-cmd --reload
Настройка зон
Зоны в firewalld позволяют применять различные правила безопасности в зависимости от того, к какой сети подключен интерфейс. Например, вы можете настроить более строгие правила для публичной сети и более мягкие для внутренней.
Для начала посмотрим, какие зоны доступны в системе:
sudo firewall-cmd --get-zones
Чтобы привязать сетевой интерфейс к нужной зоне, воспользуйтесь командой:
sudo firewall-cmd --zone=home --change-interface=eth0 --permanent
sudo firewall-cmd --reload
Где:
- home — название зоны,
- eth0 — имя сетевого интерфейса.
Для добавления или удаления правил для конкретной зоны используйте команды, аналогичные настройке портов и сервисов. Например, чтобы открыть порт в зоне home, воспользуйтесь командой:
sudo firewall-cmd --zone=home --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
Где:
- home — название зоны,
- 8080 — номер порта.
Чтобы изменить зону по умолчанию, используйте команду:
sudo firewall-cmd --set-default-zone=название_зоны
После выполнения команды изменятся все интерфейсы, использующие зону по умолчанию.
Настройка NAT
NAT (Network Address Translation) — технология, используемая для преобразования IP-адресов в сетевых пакетах при их передаче через маршрутизатор или другой сетевой узел. Основная задача NAT — преобразование внутренних (частных) IP-адресов в публичные и обратно, что позволяет устройствам в локальной сети взаимодействовать с внешними сетями (например, с интернетом), используя один или несколько публичных IP-адресов.
Firewalld поддерживает NAT через использование маскарадинга. Маскарадинг используется для того, чтобы скрыть исходные IP-адреса при отправке трафика из локальной сети в глобальную. Для включения NAT выполните следующую команду:
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
Теперь все пакеты, исходящие из зоны public, будут маскироваться под внешний IP-адрес интерфейса.
Для настройки перенаправления портов (например, перенаправление трафика с порта 80 на порт 8080) выполните команду:
sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
sudo firewall-cmd --reload
Эта команда перенаправит все входящие соединения с порта 80 на порт 8080 на вашем сервере.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊