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
allowespecí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.



