Home » Настройка файрвола с Firewalld на CentOS
Настройка файрвола с Firewalld на CentOS

Настройка файрвола с Firewalld на CentOS

В этой статье разберёмся, как быстро и грамотно настроить файрвол с помощью Firewalld на CentOS. Почему это важно? Потому что безопасность сервера — это не только про «чтобы не взломали», но и про стабильность, контроль, автоматизацию и уверенность, что твой сервер не станет зомби в ботнете. Firewalld — современный инструмент, который позволяет гибко управлять сетевыми правилами, не превращая жизнь в ад из iptables-правил и скриптов. Если ты хочешь быстро поднять сервер, не потерять контроль над трафиком и не тратить часы на дебаг, эта статья для тебя.

Как работает Firewalld?

Firewalld — это динамический менеджер для управления правилами файрвола в Linux. Он работает поверх iptables (или nftables в новых версиях), но предлагает более удобный и человекоориентированный интерфейс. Вместо того чтобы писать километровые цепочки правил, ты оперируешь понятиями зоны и сервисы. Это как если бы iptables был DOS, а Firewalld — Windows 95 (но без синего экрана смерти).

  • Зоны — это профили безопасности для разных интерфейсов или сетей (например, public, home, internal, trusted и т.д.).
  • Сервисы — это преднастроенные наборы портов и протоколов (например, ssh, http, https), которые можно разрешать или запрещать для каждой зоны.
  • Firewalld поддерживает runtime (временные) и permanent (постоянные) изменения — можно тестировать правила на лету, не боясь отрубить себе ssh.

Всё это позволяет быстро переключаться между конфигурациями, не перезапуская сервисы и не теряя соединения. Для автоматизации — просто космос.

Быстрая настройка Firewalld на CentOS

Давай по шагам, без воды и философии. Всё, что тебе нужно — root-доступ к серверу на CentOS (7, 8 или Stream, разницы почти нет).

  1. Установка и запуск Firewalld


sudo yum install firewalld
sudo systemctl enable firewalld --now
sudo systemctl status firewalld

Если всё ок — статус active (running). Если нет — смотри логи journalctl -xe.

  1. Базовая проверка и знакомство с зонами


sudo firewall-cmd --get-active-zones
sudo firewall-cmd --get-zones

По умолчанию всё висит на зоне public. Это значит — минимальный доступ, только самые необходимые сервисы.

  1. Открываем нужные порты и сервисы

Например, чтобы разрешить SSH и HTTP:


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

Если нужен нестандартный порт (например, 8080 для тестового веб-сервера):


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

  1. Проверяем, что открыто


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

  1. Отключаем ненужные сервисы


sudo firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
sudo firewall-cmd --reload

  1. Работа с runtime и permanent

Все команды без --permanent действуют до перезагрузки firewalld. Для тестов — идеально. Для продакшена — всегда добавляй --permanent и не забывай --reload.

Практические примеры и кейсы

Кейс Решение с Firewalld Плюсы Минусы
Открыть только SSH и HTTP для всех
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload
Просто, быстро, безопасно SSH открыт для всех — риск брутфорса
Ограничить SSH только для своей подсети
sudo firewall-cmd --permanent --new-zone=trusted
sudo firewall-cmd --permanent --zone=trusted --add-source=192.168.1.0/24
sudo firewall-cmd --permanent --zone=trusted --add-service=ssh
sudo firewall-cmd --reload
SSH доступен только из офиса/дома Нужно знать свою подсеть, не забудь про VPN
Открыть порт для временного теста
sudo firewall-cmd --zone=public --add-port=9000/tcp
После перезагрузки firewalld порт закроется Можно забыть добавить –permanent и потерять доступ
Быстро закрыть всё, кроме одного порта
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
sudo firewall-cmd --zone=public --remove-service=http --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
Минимизация поверхности атаки Можно случайно отрубить себе доступ

Сравнение: Firewalld vs iptables vs nftables

Решение Управление Гибкость Автоматизация Поддержка зон Кривая обучения
iptables CLI, скрипты Максимальная Скрипты, Ansible Нет Крутая
nftables CLI, скрипты Очень высокая Скрипты, Ansible Нет Очень крутая
Firewalld CLI, GUI, D-Bus API Высокая Легко интегрируется Да Пологая

Firewalld — это баланс между удобством и мощью. Для большинства задач на сервере — идеальный выбор. Если нужен полный контроль и ты любишь боль — iptables/nftables.

Интересные фишки и нестандартные сценарии

  • Rich rules — расширенные правила для тонкой настройки (например, разрешить порт только для определённого IP):

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port port="3306" protocol="tcp" accept'
  • Интеграция с fail2ban — Firewalld отлично работает с fail2ban, который может динамически блокировать IP-шники атакующих.
  • Автоматизация через D-Bus API — можно писать свои скрипты на Python, которые будут управлять Firewalld в реальном времени (например, для динамического открытия портов под нагрузку).
  • GUI-утилиты — для любителей кликать мышкой есть firewall-config (GTK-интерфейс).
  • Контейнеры и виртуализация — Firewalld дружит с Docker и KVM, можно на лету менять правила для виртуальных интерфейсов.

Автоматизация и скрипты: новые возможности

Firewalld — находка для DevOps и автоматизации. Вот что можно делать:

  • Динамически открывать/закрывать порты в зависимости от нагрузки (например, через cron или systemd-timers).
  • Интегрировать с CI/CD пайплайнами — при деплое нового сервиса автоматически открывать нужные порты.
  • Использовать Ansible-модули (ansible.posix.firewalld) для массового управления кластерами серверов.
  • Писать свои утилиты на Python с использованием D-Bus API (официальная документация).

Пример скрипта для автоматического открытия порта на 1 час:


sudo firewall-cmd --zone=public --add-port=12345/tcp
sleep 3600
sudo firewall-cmd --zone=public --remove-port=12345/tcp

Похожие решения и альтернативы

  • UFW (Uncomplicated Firewall) — популярен на Ubuntu, но менее гибок для сложных сценариев.
  • CSF (ConfigServer Security & Firewall) — мощный, но громоздкий, больше подходит для хостинговых панелей.
  • iptables/nftables напрямую — для true-гиков, когда нужна максимальная кастомизация.

Firewalld — это золотая середина между удобством и мощью. Если ты на CentOS, Fedora или RHEL — это дефолтный и самый поддерживаемый вариант.

Статистика и интересные факты

  • По данным Datanyze, Firewalld используется на более чем 60% серверов с CentOS/RHEL.
  • Firewalld поддерживает более 50 преднастроенных сервисов «из коробки» (от samba до cockpit).
  • В CentOS 8 Firewalld по умолчанию работает поверх nftables, что даёт прирост производительности до 20% по сравнению с iptables.
  • Firewalld — проект с открытым исходным кодом, поддерживается Red Hat и сообществом (официальный сайт).

Выводы и рекомендации

Firewalld — это современный, удобный и мощный инструмент для управления сетевой безопасностью на CentOS. Он отлично подходит как для новичков, так и для опытных админов, которые ценят своё время и нервы. С Firewalld ты можешь:

  • Быстро настраивать доступ к сервисам и портам без риска отрубить себе ssh.
  • Гибко управлять зонами и профилями безопасности для разных интерфейсов и сетей.
  • Автоматизировать рутинные задачи и интегрировать файрвол в свои скрипты и пайплайны.
  • Масштабировать решения от одного VPS до целого кластера серверов.

Если ты ищешь надёжный и простой способ защитить свой сервер — Firewalld на CentOS это то, что нужно. Не забывай регулярно проверять свои правила, использовать зоны для разных сценариев и не открывать лишние порты «на всякий случай». А если нужен VPS или выделенный сервер для экспериментов и продакшена — заказать VPS или выделенный сервер можно прямо здесь на блоге.

Официальная документация и полезные ссылки:

Пробуй, экспериментируй, автоматизируй — и пусть твой сервер будет не только быстрым, но и защищённым!


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

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

Leave a reply

Your email address will not be published. Required fields are marked