- Home »

Настройка файрвола с 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, разницы почти нет).
- Установка и запуск Firewalld
sudo yum install firewalld
sudo systemctl enable firewalld --now
sudo systemctl status firewalld
Если всё ок — статус active (running). Если нет — смотри логи journalctl -xe
.
- Базовая проверка и знакомство с зонами
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --get-zones
По умолчанию всё висит на зоне public. Это значит — минимальный доступ, только самые необходимые сервисы.
- Открываем нужные порты и сервисы
Например, чтобы разрешить 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
- Проверяем, что открыто
sudo firewall-cmd --zone=public --list-all
- Отключаем ненужные сервисы
sudo firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
sudo firewall-cmd --reload
- Работа с runtime и permanent
Все команды без --permanent
действуют до перезагрузки firewalld. Для тестов — идеально. Для продакшена — всегда добавляй --permanent
и не забывай --reload
.
Практические примеры и кейсы
Кейс | Решение с Firewalld | Плюсы | Минусы |
---|---|---|---|
Открыть только SSH и HTTP для всех |
|
Просто, быстро, безопасно | SSH открыт для всех — риск брутфорса |
Ограничить SSH только для своей подсети |
|
SSH доступен только из офиса/дома | Нужно знать свою подсеть, не забудь про VPN |
Открыть порт для временного теста |
|
После перезагрузки firewalld порт закроется | Можно забыть добавить –permanent и потерять доступ |
Быстро закрыть всё, кроме одного порта |
|
Минимизация поверхности атаки | Можно случайно отрубить себе доступ |
Сравнение: 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 или выделенный сервер можно прямо здесь на блоге.
Официальная документация и полезные ссылки:
Пробуй, экспериментируй, автоматизируй — и пусть твой сервер будет не только быстрым, но и защищённым!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.