Administración de servicios y puertos

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, profundizará en el control del tráfico que puede entrar en su sistema mediante firewalld.

Imagine que su equipo es un edificio. De forma predeterminada, el firewall mantiene todas las puertas cerradas. Para permitir la entrada de visitantes legítimos, como el tráfico web o las transferencias de archivos, debe abrir puertas específicas. En términos de redes, estas puertas se denominan «puertos» o «servicios».

Aprenderá dos formas importantes de cambiar estas reglas:

  1. Temporal (runtime): Es como escribir una nota en una pizarra. Funciona ahora, pero desaparecerá cuando llegue el personal de limpieza, es decir, después de reiniciar o recargar el sistema.
  2. Permanente: Es como grabar un letrero en piedra. Permanece después de las recargas y los reinicios.

Esta diferencia entre el estado runtime y el permanente es uno de los conceptos más importantes de Firewalld. Permite a los administradores probar los cambios de forma segura antes de decidir si desean conservarlos.

Al finalizar este laboratorio, podrá permitir temporalmente el tráfico web para realizar pruebas, abrir de forma permanente un puerto personalizado específico y comprender cómo guardar los cambios.

Permitir temporalmente un servicio

En este paso, permitirá el tráfico correspondiente al servicio HTTP.

Nota sobre el entorno del laboratorio: Durante la configuración establecimos la zona predeterminada como trusted para mantener activa la conexión de su terminal. Por eso, técnicamente, todos los puertos ya están abiertos. Sin embargo, trabajaremos como si estuviéramos en un servidor seguro donde todo está bloqueado, para que aprenda los comandos correctos para abrir puertos.

Agregaremos la regla http como configuración runtime (temporal).

Esta diferencia entre el estado runtime y el permanente es una de las funciones de seguridad más útiles de Firewalld. Permite comprobar si una regla funciona antes de incorporarla a la configuración a largo plazo.

Primero, compruebe qué servicios están permitidos explícitamente en la zona actual.

sudo firewall-cmd --list-services

Al principio, es posible que no aparezcan muchos servicios. Ahora, agregue el servicio http a la lista de servicios permitidos.

sudo firewall-cmd --add-service=http

Si la operación se realiza correctamente, el terminal mostrará simplemente success.

Verifique que el servicio esté permitido mostrando de nuevo la lista de servicios.

sudo firewall-cmd --list-services

Ahora debería ver http en la lista. Recuerde que, como no indicamos al firewall que esta regla fuera «permanente», se comporta como la nota de la pizarra: por el momento, solo existe en la memoria.

Abrir un puerto de forma permanente

A veces necesita abrir directamente un número de «puerta» específico en lugar de un servicio con nombre. Por ejemplo, el puerto 8080 se utiliza habitualmente para probar servidores web.

La elección entre un servicio y un puerto también es importante desde el punto de vista conceptual. Un servicio es un conjunto con nombre que normalmente se asigna a uno o varios puertos conocidos, mientras que una regla de puerto sin más es más literal y de nivel inferior. Ambas opciones son válidas, pero los nombres de servicios suelen ser más fáciles de leer y mantener.

En este caso, queremos que la regla permanezca aunque se reinicie el servidor. Para ello, usaremos la opción --permanent.

Ejecute el siguiente comando para abrir de forma permanente el puerto TCP 8080.

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

La salida debería ser success.

Concepto fundamental: Cuando utiliza --permanent, está editando el archivo de configuración, la «tabla de piedra», pero no está cambiando inmediatamente el firewall activo.

Vamos a comprobarlo. Consulte los puertos que están actualmente en ejecución en el estado runtime.

sudo firewall-cmd --list-ports

Verá que la lista está vacía o que no muestra 8080. El firewall aún no conoce la nueva regla porque todavía no ha leído el archivo de configuración actualizado.

Ahora, compruebe la configuración permanente para confirmar que la regla se guardó correctamente en el disco.

sudo firewall-cmd --permanent --list-ports

Aquí debería ver 8080/tcp. Esto confirma que la regla está «en espera» para aplicarse la próxima vez que el firewall cargue su configuración.

Recargar el firewall

Ahora tiene la siguiente situación:

  • Tiene una regla temporal que permite http (del paso 1).
  • Tiene una regla permanente que permite 8080, guardada pero aún inactiva (del paso 2).

Para activar la regla permanente, debe recargar el firewall. De este modo, Firewalld vuelve a leer sus archivos de configuración y los aplica.

Desde el punto de vista operativo, la recarga es el momento en que se unen los estados runtime y permanente. La recarga reemplaza el conjunto de reglas activo en memoria por lo que está definido en el disco. Por eso, los experimentos temporales desaparecen si no decide guardarlos de forma permanente.

Advertencia: La recarga restablece el firewall al estado descrito en los archivos de configuración. Como la regla http era únicamente temporal y no estaba en el archivo de configuración, ¡se perderá!

Ejecute el comando de recarga.

sudo firewall-cmd --reload

Ahora, verifique qué ha ocurrido. Primero, compruebe si el puerto 8080 está activo.

sudo firewall-cmd --list-ports

¡Correcto! Debería ver 8080/tcp. La regla permanente se ha cargado en el sistema activo.

Ahora, compruebe qué ocurrió con el servicio http.

sudo firewall-cmd --list-services

El servicio http ya no aparece. Esto demuestra que la recarga elimina todos los cambios que solo estaban en el estado runtime. Este es un error frecuente entre principiantes: ¡recuerde siempre convertir en permanentes las reglas importantes!

Verificar la configuración completa

En este último paso, utilizará el comando más útil para la administración diaria del firewall. En lugar de comprobar los servicios y los puertos por separado, puede consultar de una vez toda la configuración de la zona activa.

Esta vista general es valiosa porque los errores del firewall suelen producirse al olvidar que varios tipos de reglas se combinan para determinar el comportamiento real del equipo. Consultar la zona completa reduce ese riesgo.

Use la opción --list-all para ver la configuración general.

sudo firewall-cmd --list-all

La salida le ofrece un resumen completo de la zona activa, que en la configuración de nuestro laboratorio es trusted:

  • target: ACCEPT.
  • interfaces: La interfaz de red activa, por ejemplo, eth0.
  • services: Muestra los servicios estándar permitidos. Observe que http no aparece porque se perdió después de la recarga.
  • ports: Muestra los puertos personalizados abiertos, por ejemplo, 8080/tcp.

Este comando es excelente para solucionar problemas porque muestra exactamente qué está haciendo el firewall en ese momento.

Resumen

En este laboratorio, ha aprendido a distinguir entre las reglas temporales y permanentes del firewall. Ha aprendido lo siguiente:

  1. Reglas runtime: Cómo agregar un servicio como http de forma inmediata, pero temporal.
  2. Reglas permanentes: Cómo usar la opción --permanent para guardar una regla, como la apertura del puerto 8080, para el futuro.
  3. Recarga: Cómo aplicar los cambios permanentes al entorno runtime mediante --reload, así como el efecto secundario de descartar las reglas temporales.
  4. Verificación: Cómo usar --list-all para consultar el estado completo del firewall.

Ahora está construyendo una base sólida para controlar de forma segura y persistente el acceso a la red.