Introducción
Abrir un servicio de red es solo la mitad de la tarea de administración. También debe controlar qué tráfico permite el firewall del host. En los sistemas Red Hat, firewalld gestiona la política del firewall a través de zonas, servicios, puertos y reglas enriquecidas (rich rules).
En este laboratorio, se ha preparado un pequeño servicio HTTP para usted en el puerto TCP 8088. Inspeccionará la zona predeterminada, abrirá el puerto en tiempo de ejecución, hará que la regla sea permanente, reemplazará la apertura general del puerto por una regla enriquecida con restricción de origen y auditará el estado final del firewall.
Inspeccionar el firewall y la línea base del servicio
En este paso, inspeccionará el estado actual de firewalld y el servicio de red preparado. El firewall debe estar ejecutándose antes de que realice cambios en las reglas.
La configuración inicial mantiene de forma permanente el acceso SSH y el acceso al terminal de LabEx en el navegador a través de 3002/tcp en la zona public. Conserve estas reglas de administración al modificar la política del firewall para la aplicación.
Acceda al directorio del proyecto.
cd /home/labex/project
Compruebe que firewalld se está ejecutando. En este entorno, utilice sudo firewall-cmd tanto para operaciones de lectura como de escritura.
sudo firewall-cmd --state
Muestre la zona predeterminada.
sudo firewall-cmd --get-default-zone
Inspeccione la zona activa. Observe que ssh está permitido para que la sesión SSH de LabEx permanezca accesible.
sudo firewall-cmd --list-all
Confirme que el servicio web de práctica se está ejecutando y escuchando en el puerto 8088.
systemctl is-active rhcsa-fw-web.service
ss -ltn | grep ':8088'
curl -s http://127.0.0.1:8088/
Compruebe que el puerto 8088/tcp aún no está abierto de forma general en firewalld.
sudo firewall-cmd --query-port=8088/tcp || echo "port 8088 is not open in the zone"
Abrir un puerto en tiempo de ejecución
En este paso, añadirá una regla de firewall en tiempo de ejecución. Las reglas de tiempo de ejecución surten efecto inmediatamente, pero desaparecen después de que firewalld se recarga, a menos que también las haga permanentes.
Abra el puerto TCP 8088 en la configuración actual de tiempo de ejecución. Debido a que no se especifica ninguna zona, firewall-cmd aplica el cambio a la zona predeterminada que inspeccionó anteriormente.
sudo firewall-cmd --add-port=8088/tcp
Consulte la regla de tiempo de ejecución. Un resultado de yes significa que el firewall activo permite actualmente el puerto.
sudo firewall-cmd --query-port=8088/tcp
Enumere los puertos en tiempo de ejecución. Esto le ofrece una vista compacta de los puertos abiertos manualmente en la zona activa.
sudo firewall-cmd --list-ports
Compruebe la configuración permanente. Debería seguir informando no porque la configuración de tiempo de ejecución y la permanente son independientes; una regla solo de tiempo de ejecución funciona ahora, pero se perdería cuando firewalld se recargue.
sudo firewall-cmd --permanent --query-port=8088/tcp || echo "port 8088 is not permanent yet"
Hacer permanente la regla del puerto
En este paso, añadirá el mismo puerto a la configuración permanente y recargará firewalld. La recarga aplica la configuración permanente al firewall en tiempo de ejecución.
Añada la regla de puerto permanente. La opción --permanent escribe la regla en la configuración de firewalld en lugar de cambiar solo el firewall en ejecución.
sudo firewall-cmd --permanent --add-port=8088/tcp
Recargue firewalld. La recarga reconstruye el firewall en tiempo de ejecución a partir de la configuración permanente, razón por la cual este paso prueba si su regla guardada puede sobrevivir a una recarga.
sudo firewall-cmd --reload
Consulte tanto la configuración de tiempo de ejecución como la permanente. El primer comando comprueba el firewall activo y el segundo comprueba la configuración guardada.
sudo firewall-cmd --query-port=8088/tcp
sudo firewall-cmd --permanent --query-port=8088/tcp
Ambos comandos deberían devolver yes.
Reemplazar el puerto abierto con una regla enriquecida
En este paso, restringirá el acceso en lugar de dejar el servicio abierto a cualquier origen. Una regla enriquecida (rich rule) puede incluir una dirección de origen y un puerto de destino en una sola regla.
Elimine la apertura general del puerto permanente. Esto prepara el firewall para una regla más específica; de lo contrario, la regla enriquecida estaría presente, pero la regla de puerto general seguiría permitiendo cualquier origen.
sudo firewall-cmd --permanent --remove-port=8088/tcp
Añada una regla enriquecida que permita 8088/tcp solo desde la red de documentación 192.0.2.0/24. Las reglas enriquecidas son útiles cuando una regla simple de servicio o puerto no es lo suficientemente específica, como cuando se requieren restricciones de dirección de origen.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.0.2.0/24" port port="8088" protocol="tcp" accept'
Recargue firewalld para aplicar el cambio permanente.
sudo firewall-cmd --reload
Confirme que el puerto general ya no está abierto. El resultado esperado no significa que el servicio ya no está expuesto por una regla de puerto general.
sudo firewall-cmd --query-port=8088/tcp || echo "broad port rule removed"
Enumere las reglas enriquecidas. La salida de las reglas enriquecidas es la evidencia de que la regla más específica basada en el origen reemplazó la apertura general.
sudo firewall-cmd --list-rich-rules
Auditar el estado final del firewall
En este paso, auditará el estado final. La verificación final es un hábito administrativo importante: confirme que el servicio se está ejecutando, que SSH sigue permitido, que el puerto general está cerrado y que existe la regla restringida.
Enumere la zona activa.
sudo firewall-cmd --list-all
Enumere las reglas enriquecidas permanentes.
sudo firewall-cmd --permanent --list-rich-rules
Confirme que SSH sigue permitido.
sudo firewall-cmd --query-service=ssh
Confirme que el servicio en sí sigue respondiendo localmente. El acceso local de loopback verifica el proceso del servicio; firewalld controla el tráfico de la zona entrante por separado.
curl -s http://127.0.0.1:8088/
Resumen
Ha practicado la administración del firewall del host con firewalld. Inspeccionó la zona predeterminada, confirmó que un servicio de red se estaba ejecutando, añadió una regla de puerto en tiempo de ejecución, hizo permanente una regla, recargó firewalld, reemplazó una apertura general con una regla enriquecida restringida por origen y auditó el estado final del firewall.



