Configuración de firewalld para permitir tráfico web en Linux

CompTIABeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, aprenderás los pasos fundamentales para configurar firewalld en un sistema Linux con el fin de permitir el tráfico web mediante la práctica directa en servidores reales. Utilizarás la herramienta de línea de comandos firewall-cmd para gestionar zonas y servicios del cortafuegos, una competencia esencial para cualquier administrador de sistemas responsable de la seguridad de los servidores. El objetivo principal es abrir los puertos estándar para HTTP y HTTPS, permitiendo que un servidor web sea accesible desde el exterior mientras se mantiene una postura de seguridad predeterminada robusta.

Comenzarás verificando el estado del servicio firewalld, asegurándote de que esté instalado, en ejecución y habilitado para iniciarse en el arranque del sistema. Luego, procederás a establecer la zona predeterminada del cortafuegos como public y experimentarás el impacto práctico de las reglas del cortafuegos ejecutando un servidor web sencillo en Python. Al añadir y eliminar reglas para los servicios http y https, comprobarás de primera mano cómo estas configuraciones afectan la conectividad de red real. La práctica concluye mostrándote cómo verificar tus configuraciones y explorar otras opciones disponibles en firewall-cmd para profundizar en tu aprendizaje.

Esta es una Práctica Guiada, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y ganar experiencia práctica. Los datos históricos muestran que esta es una práctica de nivel principiante con una tasa de finalización del 90%. Ha recibido una tasa de valoraciones positivas del 92% por parte de los alumnos.

Comprobar el estado y la zona predeterminada de firewalld

En este paso, comenzarás a trabajar con firewalld, una herramienta de gestión de cortafuegos potente y flexible para Linux. Antes de realizar cualquier cambio de configuración, es fundamental comprobar si el servicio está instalado y en ejecución, así como identificar sus ajustes predeterminados actuales. Esto te garantiza tener una base de referencia clara sobre la cual trabajar.

Primero, aseguremonos de que firewalld esté instalado en tu sistema. Aunque es posible que ya esté presente, ejecutar el comando de instalación es una forma segura de confirmarlo. Abre tu terminal y ejecuta los siguientes comandos para actualizar la lista de paquetes e instalar firewalld:

sudo apt-get update && sudo apt-get install -y firewalld

Una vez completada la instalación, firewalld debería estar activo por defecto. Para verificarlo, comprueba el estado del servicio firewalld utilizando el comando systemctl, que se emplea para gestionar servicios en las distribuciones modernas de Linux.

Ejecuta este comando para ver si firewalld está activo:

sudo systemctl status firewalld

La salida debería mostrar active (running), lo que indica que el cortafuegos está operativo.

Con el servicio en funcionamiento, ahora puedes inspeccionar su configuración. firewalld utiliza "zonas" para gestionar los niveles de confianza de las conexiones de red. Una zona es un conjunto predefinido de reglas. Vamos a averiguar qué zona está configurada actualmente como predeterminada.

Utiliza la utilidad firewall-cmd, la interfaz de línea de comandos principal para firewalld, para obtener la zona predeterminada:

sudo firewall-cmd --get-default-zone

Es probable que el comando devuelva public, que es la zona por defecto en las instalaciones nuevas.

public

Has comprobado con éxito el estado de firewalld e identificado su zona predeterminada. En los siguientes pasos, aprenderás cómo modificar esta configuración.

Establecer la zona predeterminada a public

En este paso, aprenderás cómo establecer la zona predeterminada para firewalld. La zona predeterminada se aplica a cualquier interfaz de red que no esté asignada explícitamente a otra zona. Aunque la zona predeterminada suele ser public en una instalación nueva, saber cómo configurarla es una habilidad fundamental para la gestión de tu cortafuegos. La zona public se utiliza típicamente para redes públicas no confiables, donde no confías en que otros equipos de la red no intenten dañar tu computadora.

Para cambiar la zona predeterminada, utilizarás el comando firewall-cmd con la opción --set-default-zone. Este cambio es persistente y se aplicará de inmediato.

En tu terminal, ejecuta el siguiente comando para establecer la zona predeterminada a public:

sudo firewall-cmd --set-default-zone=public

Tras ejecutar el comando, firewalld confirmará que el cambio se realizó correctamente.

success

Siempre es una buena práctica verificar que los cambios se hayan aplicado correctamente. Puedes hacerlo ejecutando de nuevo el comando --get-default-zone, tal como hiciste en el paso anterior.

sudo firewall-cmd --get-default-zone

La salida debería confirmar que la zona predeterminada es ahora public.

public

Has establecido y verificado con éxito la zona predeterminada de tu cortafuegos. Esto garantiza una postura de seguridad básica para cualquier conexión de red. En los pasos siguientes, añadirás reglas a esta zona para permitir tipos específicos de tráfico.

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.

Añadir el servicio https a la zona public y probar la configuración HTTPS

En este paso, continuarás configurando tu cortafuegos añadiendo el servicio https. Mientras que http permite el tráfico web estándar, la comunicación web moderna se basa en https (HTTP Seguro) para el cifrado y la seguridad. El servicio https corresponde al puerto TCP 443 y es esencial para cualquier servidor que maneje información sensible.

Antes de añadir el servicio HTTPS, comprobemos primero qué sucede cuando intentamos probar la conectividad HTTPS sin la regla del cortafuegos. Ejecuta el siguiente comando para verificar los servicios actuales del cortafuegos:

sudo firewall-cmd --zone=public --list-services

Deberías ver http en la lista, pero no https.

Ahora, vamos a añadir el servicio https a la zona public. Utilizarás el comando firewall-cmd --add-service para permitir el tráfico https a través de la zona public. Esto garantiza que tu servidor pueda aceptar conexiones seguras de usuarios externos.

En tu terminal, ejecuta el siguiente comando para añadir el servicio https:

sudo firewall-cmd --zone=public --add-service=https

Este comando modifica la configuración de tiempo de ejecución de la zona public para incluir una regla para el servicio https. firewalld confirmará la adición exitosa de la regla.

success

Ahora verifiquemos que el servicio HTTPS se ha añadido comprobando de nuevo la lista de servicios:

sudo firewall-cmd --zone=public --list-services

Ahora deberías ver tanto http como https en la salida, confirmando que tu cortafuegos está configurado para permitir ambos tipos de tráfico web.

Para demostrar la diferencia práctica, también puedes comprobar qué puertos están abiertos ahora:

sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --list-services

El comando --list-services muestra los servicios por nombre, mientras que puedes observar que el servicio http corresponde al puerto 80 y https al puerto 443.

Has configurado tu cortafuegos para permitir tanto el tráfico web estándar (http) como el seguro (https). Esta es una configuración común y necesaria para alojar sitios web que manejan cualquier información sensible o requieren conexiones seguras.

Verificar que los servicios web se han añadido a la zona public

En este paso, confirmarás que los servicios http y https se añadieron correctamente a la zona public. Después de realizar cambios en la configuración, es una práctica recomendada fundamental verificar que se hayan aplicado según lo previsto. Esto garantiza que tu cortafuegos esté en el estado deseado y ayuda en la resolución de problemas.

Para ver la lista de todos los servicios permitidos actualmente en una zona, puedes usar el comando firewall-cmd con la opción --list-services. Dado que añadiste los servicios a la zona public, debes especificarla en el comando.

Ejecuta el siguiente comando en tu terminal para listar los servicios activos para la zona public:

sudo firewall-cmd --list-services --zone=public

La salida mostrará una lista de nombres de servicios. Deberías ver http y https en esta lista, junto con otros servicios que podrían estar habilitados por defecto, como dhcpv6-client y ssh.

dhcpv6-client ssh http https

Ver http y https en la salida confirma que has configurado con éxito el cortafuegos para permitir el tráfico web entrante. Tu sistema ahora está listo para servir contenido web tanto en puertos estándar como seguros.

Explorar los comandos disponibles con firewall-cmd --help

En este paso final, aprenderás a explorar las capacidades de firewall-cmd por tu cuenta. Las herramientas de línea de comandos suelen tener muchas opciones y características, y saber cómo acceder a su documentación integrada es una habilidad crucial para cualquier usuario de Linux. La opción --help es una forma universal de obtener una visión rápida de la sintaxis de un comando y sus opciones disponibles.

Para ver todos los comandos y opciones disponibles para firewall-cmd, ejecuta lo siguiente en tu terminal. Ten en cuenta que este comando no requiere sudo, ya que solo muestra información.

firewall-cmd --help

Este comando imprimirá una larga lista de opciones en tu terminal. Puedes desplazarte hacia arriba para verla completa. La salida comenzará de forma similar a esto:

Usage: firewall-cmd [OPTIONS...]

General Options
  -h, --help            Prints a short help text and exists
  -V, --version         Print the version string of firewalld
  -q, --quiet           Do not print status messages

Status Options
  --state               Get state of firewalld
  --reload              Reload firewall rules and keep state information
  --complete-reload     Reload firewall rules and lose state information
  --runtime-to-permanent
                        Save runtime configuration to permanent
...

Tómate un momento para revisar la salida. Verás secciones para "Zone Options" (Opciones de zona), "Service Options" (Opciones de servicio), "Port Options" (Opciones de puerto) y muchas más. Este es un recurso excelente para descubrir nuevas funciones o recordarte la sintaxis de un comando que no utilizas con frecuencia. Por ejemplo, puedes ver la opción --remove-service, que es la contraparte del comando --add-service que utilizaste anteriormente.

¡Felicidades! Has completado esta práctica de laboratorio y has aprendido las operaciones básicas de firewalld. Ahora puedes comprobar su estado, gestionar zonas y añadir servicios para permitir tráfico específico.

Resumen

En esta práctica de laboratorio, aprendiste los pasos fundamentales para gestionar y configurar firewalld en un sistema Linux mediante demostraciones prácticas de su impacto. Comenzaste asegurándote de que el servicio firewalld estuviera instalado, luego utilizaste comandos systemctl para iniciarlo, habilitarlo y comprobar su estado. También identificaste la zona predeterminada activa y aprendiste a cambiarla a public usando firewall-cmd, estableciendo una base clara para las reglas del cortafuegos.

Lo más destacado de esta práctica fue la demostración práctica de los efectos del cortafuegos utilizando un servidor web real. Configuraste un servidor HTTP sencillo en Python y experimentaste de primera mano cómo las reglas del cortafuegos controlan el acceso a la red. Al añadir y eliminar el servicio http de la zona public, fuiste testigo del impacto inmediato en la conectividad web, haciendo que el concepto abstracto de las reglas del cortafuegos fuera tangible y práctico.

Sobre esta base, configuraste el cortafuegos para permitir tanto el tráfico web estándar como el seguro añadiendo los servicios http y https a la zona public. Aprendiste a verificar tus cambios utilizando varias opciones de firewall-cmd y exploraste la relación entre los nombres de los servicios y sus números de puerto correspondientes. Finalmente, descubriste cómo acceder a la documentación de ayuda completa de firewall-cmd, lo que te capacita para explorar funciones avanzadas de forma independiente.