Firewalld — это программа для управления брандмауэром в операционной системе Linux. Она помогает обеспечивать безопасность сети: контролирует и фильтрует трафик.
В статье разбираем, как выполняется настройка Firewall в CentOS, дистрибутиве Linux.
Брандмауэр (или фаервол) — система сетевой безопасности, которая контролирует и фильтрует трафик в соответствии с заранее определенным набором правил. Это промежуточная система между интернетом и устройством.
Ядро Linux содержит подсистему netfilter, которая используется для обработки сетевого трафика. Netfilter отслеживает сетевые пакеты и решает, что дальше с ними делать: пропустить, блокировать или даже изменить адрес, чтобы помочь пакетам правильно дойти до своего места назначения.
Брандмауэр в Linux использует подсистему ядра netfilter, которая позволяет фильтровать входящие, исходящие и пересылаемые пакеты сетевых данных. Существуют два инструмента для подключения к подсистеме netfilter: iptables и firewalld.
В этой статье мы рассмотрим, как настроить брандмауэр с помощью firewalld в дистрибутиве CentOS.
Для управления firewalld мы будем использовать консольную утилиту firewall-cmd.
Команда firewall-cmd используется для управления брандмауэром firewalld в Linux. Вот основной синтаксис этой команды:
firewall-cmd опции
Синтаксис для управления зонами:
firewall-cmd --конфигурация --zone=зона опции
Если вы хотите сохранить изменения после перезагрузки, вместо --конфигурация укажите --permanent. При этом если вы ничего не укажите, изменения будут действовать только до перезагрузки.
--zone=зона: указывается зона, к которой применяется команда, например, --zone=public.
Часто используемые опции:
--permanent: изменения применяются к постоянным настройкам брандмауэра, которые сохраняются между перезагрузками. Без этой опции изменения применяются только временно и не сохраняются после перезагрузки.
--reload: перезапускает файрвол и применяет все изменения.
--get-default-zone: выводит текущую зону по умолчанию.
--set-default-zone: устанавливает зону по умолчанию.
--get-zones: выводит все доступные зоны.
--new-zone: создает новую зону.
--delete-zone: удаляет зону.
--list-all: вывести подробную информацию о текущих настройках зоны.
--add-service=<имя_службы>: разрешить доступ к определенной сетевой службе (например, --add-service=http).
--remove-service=<имя_службы>: удалить разрешение на доступ к сетевой службе.
--add-port=<порт>/<протокол>: разрешить доступ к определенному порту и протоколу (например, --add-port=80/tcp).
--remove-port=<порт>/<протокол>: удалить разрешение на доступ к порту и протоколу.
--list-services: вывести список всех доступных служб.
--list-ports: вывести список всех открытых портов.
--query-service: позволяет проверить, разрешен ли доступ к определенному сервису.
--query-port: показывает, разрешен ли доступ к определенному порту и протоколу.
Примеры использования firewall-cmd:
Добавление разрешения на доступ к веб-серверу (HTTP) и сохранение изменений:
firewall-cmd --permanent --zone=public --add-service=http
Удаление разрешения на доступ к порту 8080:
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
Вывод списка всех доступных служб:
firewall-cmd --list-services
Чтобы перезапустить брандмауэр и применить изменения, используйте команду firewall-cmd --reload.
Установка и включение
Firewalld установлен по умолчанию в CentOS 7, но если его нет в вашей системе, вы можете установить пакет, набрав:
sudo yum install firewalld
Проверить статус брандмауэра с помощью:
sudo firewall-cmd --state
Если вы только что установили или никогда раньше не активировали Firewall, команда выведет not running. Если брандмауэр включен, вы увидите running.
Чтобы активировать службу firewalld, введите:
sudo systemctl start firewalld
sudo systemctl enable firewalld
Настройка
Добавьте сервисы, которые вы хотите разрешить через Firewall. Например, чтобы разрешить HTTP и SSH, выполните:
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --add-service=ssh --permanent
Если вы хотите разрешить доступ к конкретному порту, используйте следующую команду (замените "8080" на тот номер порта, доступ к которому вы разрешаете):
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
Удалите ненужные сервисы или порты (если необходимо):
sudo firewall-cmd --zone=public --remove-service=<имя_службы> --permanent
sudo firewall-cmd --zone=public --remove-port=<порт>/<протокол> --permanent
После внесения изменений перезагрузите firewalld:
sudo firewall-cmd --reload
Проверьте текущие правила Firewall:
sudo firewall-cmd --list-all
Это основные настройки firewalld в CentOS. Вы можете адаптировать эти команды в соответствии с вашими потребностями: разрешать входящие соединения, необходимые для правильного функционирования вашей системы, ограничивая при этом ненужные.
Для размещения высоконагруженных проектов с большим количеством трафика заказывайте в RU-CENTER VDS-хостинг с поддержкой ОС CentOS. Преимущества VDS-хостинга RU-CENTER: