Endurecimiento de un Endpoint Linux con Firewall y Gestión de Servicios

CompTIABeginner
Practicar Ahora

Introducción

El endurecimiento de endpoints (endpoint hardening) es un proceso crítico para asegurar cualquier sistema informático. Implica reducir la "superficie de ataque" del sistema, haciéndolo menos vulnerable a las amenazas de seguridad. Dos aspectos fundamentales para endurecer un sistema Linux son la gestión de los servicios en ejecución y la implementación de un firewall.

En este laboratorio, obtendrá experiencia práctica con estas prácticas de seguridad esenciales. Aprenderá a:

  • Identificar y deshabilitar servicios que no son esenciales para la función del sistema.
  • Instalar y configurar el Uncomplicated Firewall (UFW), una interfaz fácil de usar para gestionar las reglas de filtrado de red en Linux.

Al final de este laboratorio, tendrá una comprensión práctica de cómo aplicar técnicas básicas de endurecimiento a un endpoint Linux.

Identificar y Deshabilitar Servicios Innecesarios

En este paso, aprenderá a identificar los servicios activos en su sistema Linux y a deshabilitar aquellos que no sean necesarios. Reducir el número de servicios en ejecución minimiza la superficie de ataque potencial, ya que cada servicio podría tener vulnerabilidades.

Primero, listemos todos los servicios activos. En algunos entornos Linux, especialmente en contenedores, el comando systemctl no está disponible. Podemos usar el comando service como alternativa.

Ejecute el siguiente comando en su terminal para ver el estado de todos los servicios:

service --status-all

Verá una lista de servicios. Un [ + ] junto al nombre de un servicio indica que está en ejecución, mientras que un [ - ] indica que está detenido.

 [ - ]  acpid
 [ - ]  apparmor
 [ + ]  apache2
 [ - ]  atop
 [ - ]  atopacct
 [ + ]  cron
...

Observe que apache2, un servidor web, está en ejecución. Para un endpoint de propósito general que no necesita alojar un sitio web, este servicio es innecesario y debe ser deshabilitado.

Para detener el servicio apache2, use el comando service con stop. Necesita privilegios de sudo para gestionar los servicios del sistema.

sudo service apache2 stop

Ahora, verifique que el servicio se ha detenido comprobando su estado nuevamente:

service apache2 status

La salida confirmará que el servicio Apache2 ya no está en ejecución.

○ apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2025-08-05 14:44:53 CST; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 5892 ExecStop=/usr/sbin/apachectl graceful-stop (code=exited, status=0/SUCCESS)
   Main PID: 4800 (code=exited, status=0/SUCCESS)
        CPU: 50ms

Al deshabilitar los servicios innecesarios, ha dado un paso simple pero efectivo para endurecer su sistema.

Instalar y Configurar Uncomplicated Firewall (UFW)

En este paso, instalará el Uncomplicated Firewall (UFW). UFW es una interfaz frontal fácil de usar para el potente pero complejo firewall iptables. Proporciona una forma simplificada de configurar reglas comunes del firewall.

Primero, actualice su lista de paquetes e instale el paquete ufw.

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

Una vez completada la instalación, UFW estará instalado pero aún no activo. Puede verificar su estado con el siguiente comando:

sudo ufw status

La salida mostrará que el firewall está inactivo:

Status: inactive

Para activar el firewall, debe habilitarlo. Este comando iniciará el firewall y lo configurará para que se inicie automáticamente al arrancar el sistema.

Nota: Al habilitar un firewall en un servidor remoto, debe asegurarse de tener una regla que permita el acceso SSH. De lo contrario, podría quedarse sin acceso. Para este entorno de laboratorio, es seguro continuar.

Habilite UFW ahora:

sudo ufw enable

Se le pedirá que confirme la operación. El comando habilitará el firewall y puede interrumpir las conexiones existentes.

Firewall is active and enabled on system startup

Verifiquemos el estado nuevamente, esta vez con la opción verbose para ver más detalles, incluidas las políticas predeterminadas.

sudo ufw status verbose

La salida ahora mostrará que el firewall está activo y enumerará las políticas predeterminadas. Por defecto, UFW deniega todo el tráfico entrante y permite todo el tráfico saliente, lo cual es un punto de partida seguro.

Status: active
Logging: off
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

Dado que el firewall ahora está activo y bloquea todas las conexiones entrantes por defecto, necesitamos permitir el acceso SSH para asegurar que podamos continuar administrando el sistema de forma remota.

Agregue una regla para permitir las conexiones SSH:

sudo ufw allow ssh

Verá una confirmación de que la regla ha sido agregada:

Rule added
Rule added (v6)

Esto asegura que el acceso SSH permanezca disponible mientras el firewall está activo.

Crear y Probar Reglas Básicas del Firewall

Ahora que UFW está activo, aprenderá a crear reglas para controlar el tráfico de red. Agregaremos reglas para permitir servicios específicos y necesarios, mientras bloqueamos todo lo demás por defecto.

Primero, asegurémonos de que nuestras políticas predeterminadas estén configuradas correctamente. Es una buena práctica definirlas explícitamente.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Dado que ya tenemos configurado el acceso SSH desde el paso anterior, agreguemos una regla para una aplicación personalizada. Imaginemos que estamos ejecutando una aplicación web personalizada en el puerto 8080. Necesitamos crear una regla para permitir el tráfico a este puerto específico.

sudo ufw allow 8080/tcp

Este comando permite específicamente el tráfico entrante en el puerto TCP 8080.

Rule added
Rule added (v6)

Para ver una lista de las reglas actuales, puede usar ufw status con la opción numbered. Esto facilita la gestión o eliminación de reglas más adelante.

sudo ufw status numbered

La salida mostrará sus nuevas reglas con un número junto a cada una.

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 8080/tcp                   ALLOW IN    Anywhere
[ 3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 4] 8080/tcp (v6)              ALLOW IN    Anywhere (v6)

Ahora ha configurado el firewall para permitir solo el tráfico esencial, mejorando significativamente la seguridad de su sistema.

Revisar Registros del Sistema para Actividad del Firewall

En este paso, aprenderá a habilitar y revisar el registro (logging) de UFW. Los registros son esenciales para monitorear el tráfico de red, identificar posibles amenazas de seguridad y solucionar problemas de conectividad.

El registro de UFW no está habilitado por defecto. Puede habilitarlo con un comando simple.

sudo ufw logging on

Verá una confirmación de que el registro ha sido habilitado.

Logging enabled

Los registros de UFW se escriben en el archivo /var/log/ufw.log. Tenga en cuenta que el archivo de registro puede no existir inmediatamente después de habilitar el registro; se creará automáticamente cuando se escriba la primera entrada de registro.

Puede ver el archivo de registro en tiempo real utilizando el comando tail con la opción -f (follow/seguir). Si el archivo aún no existe, el comando esperará a que se cree:

sudo tail -f /var/log/ufw.log

Este comando mostrará las últimas líneas del registro y esperará nuevas entradas. En un entorno activo, vería aparecer entradas de registro a medida que el firewall bloquea o permite conexiones. Dado que este entorno de laboratorio no tiene tráfico externo intentando acceder a él, es posible que no vea nuevas entradas. Presione Ctrl+C para dejar de seguir el registro.

Una entrada de registro típica para un paquete bloqueado se ve así:

Sep 10 12:00:00 ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:02:03:04:05:06:07:08:09:0a:0b:0c SRC=192.168.1.10 DST=192.168.1.20 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=12345 PROTO=TCP SPT=54321 DPT=23 WINDOW=0 RES=0x00 SYN URGP=0

Aquí hay un desglose rápido de los campos importantes:

  • [UFW BLOCK]: Indica la acción tomada por el firewall.
  • SRC: La dirección IP de origen del paquete.
  • DST: La dirección IP de destino.
  • PROTO: El protocolo de red (ejemplo: TCP, UDP).
  • DPT: El puerto de destino.

También puede buscar eventos específicos en el archivo de registro usando grep. Por ejemplo, para encontrar todos los intentos de conexión bloqueados, puede ejecutar:

sudo grep "UFW BLOCK" /var/log/ufw.log

Si el archivo de registro aún no existe o está vacío, este comando no devolverá resultados, lo cual es normal. Una vez que ocurra actividad del firewall, se escribirán entradas de registro y podrá buscarlas. Este comando filtrará el registro y mostrará solo las líneas que contienen la cadena "UFW BLOCK", lo cual es extremadamente útil para identificar patrones de actividad sospechosa.

Resumen

¡Felicitaciones! Ha completado con éxito este laboratorio sobre el endurecimiento de un endpoint Linux.

En este laboratorio, adquirió experiencia práctica con tareas de seguridad fundamentales. Ha aprendido a:

  • Identificar los servicios en ejecución en un sistema Linux utilizando el comando service.
  • Detener y deshabilitar servicios innecesarios para reducir la superficie de ataque del sistema.
  • Instalar, habilitar y configurar el Uncomplicated Firewall (UFW).
  • Crear reglas allow específicas para servicios esenciales como SSH y aplicaciones personalizadas.
  • Habilitar y revisar los registros de UFW para monitorear la actividad del firewall y detectar posibles amenazas.

Estas son habilidades fundamentales para cualquier administrador de sistemas o desarrollador responsable de mantener entornos Linux seguros y robustos. Al aplicar estas técnicas, puede mejorar significativamente la postura de seguridad de sus sistemas.