Añadir el servicio http a la zona public y probar con un servidor web
En este paso, añadirás una regla a tu cortafuegos para permitir el tráfico web y luego demostrarás el impacto práctico ejecutando un servidor web sencillo. Por defecto, firewalld bloquea la mayor parte del tráfico entrante para proteger tu sistema. Para permitir conexiones específicas, debes añadir reglas para los servicios que deseas exponer. firewalld utiliza "servicios" predefinidos, que son nombres fáciles de recordar para los puertos de red estándar. Por ejemplo, el servicio http corresponde al puerto TCP 80, el puerto estándar para el tráfico web no cifrado.
Primero, comprobemos el estado actual del cortafuegos para la zona pública antes de realizar cambios:
sudo firewall-cmd --zone=public --list-services
Notarás que http no está en la lista inicialmente, lo que significa que las conexiones externas al puerto 80 están bloqueadas.
Ahora, vamos a añadir el servicio http a la zona public. Utilizarás el comando firewall-cmd con la opción --add-service, especificando la zona que deseas modificar:
sudo firewall-cmd --zone=public --add-service=http
Este comando le indica a firewalld que modifique la zona public añadiendo la regla del servicio http. El cambio se aplica a la configuración de tiempo de ejecución (runtime), lo que significa que surte efecto de inmediato. Deberías ver un mensaje de confirmación:
success
Verifiquemos que el servicio se ha añadido consultando de nuevo la lista de servicios:
sudo firewall-cmd --zone=public --list-services
Ahora deberías ver http en la lista de servicios permitidos.
Para demostrar el impacto práctico, iniciemos un servidor web sencillo. Utilizaremos el servidor HTTP integrado de Python en el puerto 80:
cd /tmp
echo "<h1>Welcome to LabEx Firewall Demo</h1><p>This server is running on port 80</p>" > index.html
sudo python3 -m http.server 80
Ten en cuenta que necesitamos sudo porque el puerto 80 es un puerto privilegiado (por debajo del 1024). Mantén este servidor funcionando en una terminal separada.
Ahora, desde otra terminal, prueba la conexión:
curl http://localhost
La conexión funciona porque el servicio http ahora está permitido a través del cortafuegos. Ten en cuenta que las conexiones a localhost pueden omitir las reglas del cortafuegos, pero el punto clave es que las conexiones externas al puerto 80 ahora estarían permitidas por el cortafuegos.
Para ilustrar mejor las capacidades de gestión del cortafuegos, eliminemos temporalmente el servicio HTTP:
sudo firewall-cmd --zone=public --remove-service=http
Comprueba la lista de servicios para confirmar que se ha eliminado:
sudo firewall-cmd --zone=public --list-services
Deberías notar que http ya no está en la lista. Ahora vuelve a añadir el servicio:
sudo firewall-cmd --zone=public --add-service=http
Verifica que se ha añadido de nuevo:
sudo firewall-cmd --zone=public --list-services
Has aprendido con éxito cómo gestionar el servicio HTTP en el cortafuegos y has comprobado los cambios de configuración. El concepto clave es que sin la regla del servicio http, las conexiones externas al puerto 80 serían bloqueadas por el cortafuegos, incluso si hay un servidor web en funcionamiento. Puedes detener el servidor web con Ctrl+C cuando hayas terminado con la demostración.