Введение
Брандмауэр firewall-cmd — это современный инструмент для управления firewalld в дистрибутивах Linux. Он позволяет быстро открывать порты, разрешать сервисы и блокировать нежелательный трафик. После выполнения этого руководства у вас будет готовый брандмауэр, настроенный всего за несколько минут, и вы сможете защитить свой сервер от внешних угроз.
Требования
- Система на базе Linux (Ubuntu 22.04, CentOS 9, Debian 12 или любая другая дистрибутива с
firewalld). - Права администратора (
sudo). - Установленный пакет
firewalld(обычно включён по умолчанию в современных дистрибутивах).
Пошаговая инструкция
Шаг 1: Включить и запустить firewalld
Проверьте, установлен ли firewalld: sudo systemctl status firewalld. Если служба остановлена, запустите её: sudo systemctl start firewalld. Убедитесь, что она автоматически запускается после перезагрузки: sudo systemctl enable firewalld.
Шаг 2: Добавить постоянное правило для сервиса
Чтобы открыть порт навсегда, выполните: sudo firewall-cmd --zone=public --add-port=80/tcp --permanent. Примените изменения командой sudo firewall-cmd --reload.
Шаг 3: Добавить временное правило
Для временного разрешения доступа используйте: sudo firewall-cmd --zone=public --add-port=8080/tcp --temporary. Это правило сохраняется только до перезагрузки системы.
::in-article-ad::
Шаг 4: Проверить активные правила
Просмотрите все действующие правила: sudo firewall-cmd --zone=public --list-all. Для просмотра постоянных правил добавьте --permanent, например sudo firewall-cmd --zone=public --list-all --permanent.
Шаг 5: Отключить ненужный сервис
Если служба больше не нужна, удалите её правило: sudo firewall-cmd --zone=public --remove-service=ssh --permanent. После чего выполните sudo firewall-cmd --reload.
Шаг 6: Сбросить правила до значений по умолчанию
Чтобы удалить все пользовательские правила, сбросьте конфигурацию: sudo firewall-cmd --clear-rules. Для полного сброса используйте sudo firewall-cmd --set-default-zone=public.
Проверка результата
После выполнения шагов проверьте, что порт открыт: sudo firewall-cmd --zone=public --query-port=80/tcp. Если вы видите yes, правило действует. Для постоянных правил используйте --permanent в конце команды.
Возможные проблемы
- Служба firewalld не запускается – проверьте системные логи:
sudo journalctl -u firewalld. Частая причина — конфликт с другими сетевыми инструментами (например,iptables). - Команда
firewall-cmdне найдена – установите пакет:sudo apt install firewalld(Debian/Ubuntu) илиsudo yum install firewalld(RHEL/CentOS). - Правило не вступает в силу – убедитесь, что вы добавили
--permanent, если нужно постоянное изменение, и выполнилиsudo firewall-cmd --reload.