Введение
Открытие сетевой службы — это лишь половина административной задачи. Вы также должны контролировать, какой трафик разрешен межсетевым экраном хоста. В системах Red Hat firewalld управляет политикой безопасности с помощью зон, служб, портов и расширенных правил (rich rules).
В этой лабораторной работе для вас подготовлена небольшая HTTP-служба на TCP-порту 8088. Вы изучите настройки зоны по умолчанию, откроете порт в режиме runtime, сделаете правило постоянным, замените общее открытие порта на расширенное правило с ограничением по источнику и проведете аудит итогового состояния межсетевого экрана.
Проверка межсетевого экрана и базовой конфигурации службы
На этом этапе вы проверите текущее состояние firewalld и подготовленную сетевую службу. Перед изменением правил межсетевой экран должен быть запущен.
При подготовке среды в постоянной конфигурации зоны public сохранены правила доступа по SSH и к браузерному терминалу LabEx на 3002/tcp. Сохраните эти правила административного доступа при изменении политики межсетевого экрана для приложения.
Перейдите в каталог проекта.
cd /home/labex/project
Убедитесь, что firewalld запущен. В этой среде используйте sudo firewall-cmd как для операций чтения, так и для записи.
sudo firewall-cmd --state
Посмотрите зону по умолчанию.
sudo firewall-cmd --get-default-zone
Изучите активную зону. Обратите внимание, что ssh разрешен, поэтому SSH-сессия LabEx остается доступной.
sudo firewall-cmd --list-all
Убедитесь, что тестовая веб-служба запущена и прослушивает порт 8088.
systemctl is-active rhcsa-fw-web.service
ss -ltn | grep ':8088'
curl -s http://127.0.0.1:8088/
Проверьте, что порт 8088/tcp еще не открыт в firewalld для всех.
sudo firewall-cmd --query-port=8088/tcp || echo "port 8088 is not open in the zone"
Открытие порта в режиме Runtime
На этом этапе вы добавите правило межсетевого экрана в режиме runtime. Правила runtime вступают в силу немедленно, но исчезают после перезагрузки firewalld, если вы не сделаете их постоянными.
Откройте TCP-порт 8088 в текущей конфигурации runtime. Поскольку зона не указана, firewall-cmd применяет изменения к зоне по умолчанию, которую вы изучили ранее.
sudo firewall-cmd --add-port=8088/tcp
Запросите состояние правила runtime. Результат yes означает, что активный межсетевой экран в данный момент разрешает этот порт.
sudo firewall-cmd --query-port=8088/tcp
Выведите список портов runtime. Это даст вам компактный обзор портов, открытых вручную в активной зоне.
sudo firewall-cmd --list-ports
Проверьте постоянную конфигурацию. Она все еще должна возвращать no, так как конфигурации runtime и permanent разделены; правило, созданное только в runtime, работает сейчас, но будет потеряно при перезагрузке firewalld.
sudo firewall-cmd --permanent --query-port=8088/tcp || echo "port 8088 is not permanent yet"
Сделайте правило для порта постоянным
На этом этапе вы добавите тот же порт в постоянную конфигурацию и перезагрузите firewalld. Перезагрузка применяет постоянную конфигурацию к активному межсетевому экрану.
Добавьте постоянное правило для порта. Опция --permanent записывает правило в конфигурацию firewalld, а не просто изменяет работающий межсетевой экран.
sudo firewall-cmd --permanent --add-port=8088/tcp
Перезагрузите firewalld. Перезагрузка перестраивает активный межсетевой экран на основе постоянной конфигурации; именно поэтому этот шаг проверяет, сохранится ли ваше правило после перезагрузки.
sudo firewall-cmd --reload
Запросите конфигурацию как runtime, так и permanent. Первая команда проверяет активный межсетевой экран, а вторая — сохраненную конфигурацию.
sudo firewall-cmd --query-port=8088/tcp
sudo firewall-cmd --permanent --query-port=8088/tcp
Обе команды должны вернуть yes.
Замена открытого порта на расширенное правило
На этом этапе вы ограничите доступ вместо того, чтобы оставлять службу открытой для всех источников. Расширенное правило (rich rule) может включать адрес источника и порт назначения в одном правиле.
Удалите общее постоянное открытие порта. Это подготовит межсетевой экран к более строгому правилу; в противном случае расширенное правило будет присутствовать, но общее правило порта все равно будет разрешать доступ всем источникам.
sudo firewall-cmd --permanent --remove-port=8088/tcp
Добавьте расширенное правило, которое разрешает 8088/tcp только из сети документации 192.0.2.0/24. Расширенные правила полезны, когда простого правила для службы или порта недостаточно, например, когда требуются ограничения по IP-адресу источника.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.0.2.0/24" port port="8088" protocol="tcp" accept'
Перезагрузите firewalld, чтобы применить постоянные изменения.
sudo firewall-cmd --reload
Убедитесь, что общий порт больше не открыт. Ожидаемый результат no означает, что служба больше не доступна через общее правило порта.
sudo firewall-cmd --query-port=8088/tcp || echo "broad port rule removed"
Выведите список расширенных правил. Вывод расширенных правил подтверждает, что более узкое правило на основе источника заменило общее открытие порта.
sudo firewall-cmd --list-rich-rules
Аудит итогового состояния межсетевого экрана
На этом этапе вы проведете аудит итогового состояния. Финальная проверка — важная привычка администратора: убедитесь, что служба запущена, SSH по-прежнему разрешен, общий порт закрыт, а ограниченное правило существует.
Выведите список настроек активной зоны.
sudo firewall-cmd --list-all
Выведите список постоянных расширенных правил.
sudo firewall-cmd --permanent --list-rich-rules
Убедитесь, что SSH по-прежнему разрешен.
sudo firewall-cmd --query-service=ssh
Убедитесь, что сама служба по-прежнему отвечает локально. Доступ через локальный loopback проверяет процесс службы; firewalld контролирует входящий трафик зоны отдельно.
curl -s http://127.0.0.1:8088/
Резюме
Вы попрактиковались в администрировании межсетевого экрана хоста с помощью firewalld. Вы изучили зону по умолчанию, подтвердили работу сетевой службы, добавили правило порта в режиме runtime, сделали правило постоянным, перезагрузили firewalld, заменили общее открытие порта на расширенное правило с ограничением по источнику и провели аудит итогового состояния межсетевого экрана.



