Inspección de tráfico y rutas de servicio del firewall

LinuxBeginner
Practicar Ahora

Introducción

Cuando un servicio de red no está accesible, es necesario verificar la ruta por capas: estado del servicio, socket en escucha, solicitud local, regla de firewall y, finalmente, el acceso externo. Esto evita que abra puertos en el firewall para un servicio que ni siquiera está en ejecución.

En este laboratorio, un pequeño servicio HTTP escucha en el puerto TCP 8088, pero firewalld no permite el tráfico a través de ese puerto. Usted inspeccionará la ruta del servicio y añadirá la regla de firewall permanente que falta.

Comprobar el estado del servicio

En este paso, confirmará que el servicio de la aplicación se está ejecutando antes de revisar las reglas del firewall.

Acceda al directorio del proyecto y cree un espacio de trabajo.

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

Compruebe el estado del servicio.

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

Lea el comando de ejecución del servicio.

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

El servicio está activo, por lo que la siguiente pregunta es si está escuchando en el puerto esperado.

Inspeccionar el socket en escucha

En este paso, confirmará que el host está escuchando en el puerto TCP 8088.

Muestre los sockets TCP en escucha para el puerto 8088.

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

Pruebe el servicio a través de la interfaz de loopback.

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

El servicio responde localmente, lo que significa que la aplicación funciona correctamente.

Encontrar la regla de firewall faltante

En este paso, comprobará si el puerto del servicio está configurado en firewalld. Que un socket local esté activo no significa automáticamente que el firewall permita el tráfico hacia ese puerto.

Enumere los puertos abiertos en la zona predeterminada.

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

Consulte el puerto 8088/tcp.

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

La consulta debería devolver no, lo que indica que falta la regla en firewalld.

Abrir el puerto del servicio

En este paso, añadirá una regla permanente a firewalld y recargará el firewall.

Añada la regla de puerto permanente.

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

Recargue firewalld.

sudo firewall-cmd --reload

Vuelva a consultar el puerto.

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

Ahora el firewall permite el tráfico en el puerto del servicio.

Verificar la ruta completa del servicio

En este paso, verificará el servicio, el socket, la regla del firewall y la respuesta de forma conjunta.

Compruebe el estado del servicio.

systemctl is-active rhce-http-demo.service

Muestre la lista de puertos del firewall.

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

Solicite el servicio nuevamente.

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

La ruta de la aplicación está completa: el servicio está activo, el socket está escuchando, la regla del firewall está presente y la respuesta HTTP funciona correctamente.

Resumen

Ha verificado la ruta de un servicio por capas: estado del servicio, socket en escucha, respuesta HTTP local, detección de puerto faltante en firewalld, reparación permanente del firewall y validación final de la respuesta.