Проверка сетевого трафика и путей доступа к службам брандмауэра

LinuxBeginner
Практиковаться сейчас

Введение

Если сетевая служба недоступна, проверяйте путь доступа по уровням: состояние службы, прослушиваемый сокет, локальный запрос, правило брандмауэра и итоговый доступ. Это поможет избежать открытия портов в брандмауэре для службы, которая даже не прослушивает порт.

В этой лабораторной работе небольшая HTTP-служба прослушивает TCP-порт 8088, но firewalld блокирует этот порт. Вам предстоит проинспектировать путь доступа к службе и добавить недостающее постоянное правило брандмауэра.

Проверка состояния службы

На этом этапе вы подтвердите, что прикладная служба запущена, прежде чем переходить к проверке правил брандмауэра.

Перейдите в каталог проекта и создайте рабочую директорию.

cd /home/labex/project
mkdir -p firewall-path

Проверьте состояние службы.

systemctl is-active rhce-http-demo.service | tee firewall-path/service-state.txt

Прочитайте команду запуска службы.

systemctl show rhce-http-demo.service -p ExecStart | tee firewall-path/exec-start.txt

Служба активна, поэтому следующий вопрос заключается в том, прослушивает ли она ожидаемый порт.

Проверка прослушиваемого сокета

На этом этапе вы подтвердите, что хост прослушивает TCP-порт 8088.

Отобразите прослушиваемые TCP-сокеты для порта 8088.

sudo ss -ltnp 'sport = :8088' | tee firewall-path/socket.txt

Протестируйте службу через интерфейс loopback.

curl -s http://127.0.0.1:8088/ | tee firewall-path/loopback-response.txt

Служба отвечает локально, значит, само приложение работает корректно.

Поиск отсутствующего правила брандмауэра

На этом этапе вы проверите настройки firewalld для порта службы. Наличие локального сокета не означает автоматически, что брандмауэр разрешает доступ к этому порту.

Выведите список открытых портов в зоне по умолчанию.

sudo firewall-cmd --list-ports | tee firewall-path/ports-before.txt

Запросите статус порта 8088/tcp.

sudo firewall-cmd --query-port=8088/tcp | tee firewall-path/query-before.txt || true

Запрос должен вернуть no, что означает отсутствие правила в firewalld.

Открытие порта службы

На этом этапе вы добавите постоянное правило в firewalld и перезагрузите конфигурацию брандмауэра.

Добавьте правило для порта на постоянной основе.

sudo firewall-cmd --add-port=8088/tcp --permanent

Перезагрузите firewalld.

sudo firewall-cmd --reload

Снова запросите статус порта.

sudo firewall-cmd --query-port=8088/tcp | tee firewall-path/query-after.txt

Теперь брандмауэр разрешает доступ к порту службы.

Проверка полного пути доступа к службе

На этом этапе вы комплексно проверите службу, сокет, правило брандмауэра и получение ответа.

Проверьте состояние службы.

systemctl is-active rhce-http-demo.service

Выведите список портов брандмауэра.

sudo firewall-cmd --list-ports | tee firewall-path/ports-after.txt

Снова отправьте запрос к службе.

curl -s http://127.0.0.1:8088/ | tee firewall-path/final-response.txt

Путь доступа к приложению полностью восстановлен: служба активна, сокет прослушивается, правило брандмауэра добавлено, а HTTP-ответ получен успешно.

Резюме

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