Skip to content

Laboratorio 5.2. Configuración de cortafuegos con UFW en Ubuntu 24

Datos de la práctica

  • Módulo: Seguridad Informática (0226)
  • Ciclo: CFGM Sistemas Microinformáticos y Redes (SMR)
  • Entorno: Oracle VM VirtualBox — Ubuntu 24.04 LTS
  • Modalidad: Individual

Descripción general

En este laboratorio configurarás y verificarás el cortafuegos de un servidor Ubuntu usando UFW.
Partirás de un sistema sin protección, analizarás su exposición, aplicarás una política de seguridad real y comprobarás su efecto desde otra máquina.


Entorno de trabajo

Necesitas dos máquinas virtuales en VirtualBox conectadas a la misma red interna (labnet):

Máquina Sistema Rol
Servidor Ubuntu 24.04 LTS Máquina que se va a proteger con UFW
Cliente Ubuntu 24.04 LTS Máquina desde la que se verifican las reglas

Antes de empezar, verifica que ambas máquinas tienen IP en el mismo segmento y se comunican entre sí.


Sesión 1: Análisis del estado inicial y primeras reglas

Paso 1: Preparación del entorno

Instala los siguientes servicios en la máquina Servidor. Estos servicios simulan un servidor mal configurado que se irá securizando durante el laboratorio:

sudo apt update
sudo apt install apache2 vsftpd openssh-server -y

Verifica que los tres servicios están activos:

sudo systemctl status apache2
sudo systemctl status vsftpd
sudo systemctl status ssh

Evidencia requerida

Captura del estado de los tres servicios activos.


Paso 2: Análisis de la exposición inicial

Antes de activar UFW, analiza qué puertos tiene abiertos el servidor. Ejecuta en la máquina Servidor:

ss -tlnp

Ejecuta también en la máquina Cliente un escaneo de puertos hacia el servidor:

nmap -sV <IP_del_servidor>

Evidencia requerida

  • Captura de la salida de ss -tlnp en el servidor.
  • Captura del resultado del escaneo Nmap desde el cliente.
  • Tabla elaborada por ti con los puertos abiertos detectados, el servicio que los usa y una valoración del riesgo (Alto / Medio / Bajo).

Paso 3: Verificación de conectividad antes de UFW

Desde la máquina Cliente, comprueba que puedes acceder a todos los servicios del servidor:

# Comprobar conectividad básica
ping <IP_del_servidor>

# Comprobar acceso web
curl http://<IP_del_servidor>

# Comprobar acceso FTP
ftp <IP_del_servidor>

# Comprobar acceso SSH
ssh usuario@<IP_del_servidor>

Evidencia requerida

  • Captura de cada comprobación mostrando que la conexión es exitosa.

Paso 4: Activación de UFW con política restrictiva

Activa UFW en la máquina Servidor con política restrictiva.
Antes de activarlo, añade la regla de SSH para no perder el acceso:

sudo ufw allow ssh
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

Verifica el estado:

sudo ufw status verbose

Evidencia requerida

  • Captura del estado de UFW tras la activación.

Paso 5: Verificación del efecto de la política restrictiva

Desde la máquina Cliente, repite las comprobaciones del paso 3:

ping <IP_del_servidor>
curl http://<IP_del_servidor>
ftp <IP_del_servidor>

Evidencia requerida

  • Captura de cada intento de conexión.
  • Responde en tu informe: ¿qué servicios han quedado bloqueados y cuáles siguen accesibles? ¿Por qué SSH sigue funcionando?

Paso 6: Apertura selectiva de puertos

El servidor debe ofrecer únicamente el servicio web seguro (HTTPS) y acceso SSH desde la red interna. Aplica las siguientes reglas:

# Permitir HTTPS
sudo ufw allow 443/tcp

# Permitir HTTP temporalmente (para pruebas)
sudo ufw allow 80/tcp

# Restringir SSH solo a la red interna
sudo ufw delete allow ssh
sudo ufw allow from 192.168.1.0/24 to any port 22

Verifica el estado final de las reglas:

sudo ufw status numbered

Evidencia requerida

  • Captura del estado numerado de UFW con todas las reglas.
  • Desde el cliente, comprueba que puedes acceder por HTTP y SSH, pero no por FTP. Captura los resultados.

Sesión 2: Reglas avanzadas, logs y verificación final

Paso 7: Bloqueo de servicios inseguros

Añade reglas explícitas para bloquear protocolos inseguros, aunque no haya servicio activo en esos puertos.
Esto evita que un servicio instalado en el futuro quede expuesto accidentalmente:

sudo ufw deny 21/tcp     # FTP
sudo ufw deny 23/tcp     # Telnet
sudo ufw deny 25/tcp     # SMTP sin cifrar
sudo ufw deny 110/tcp    # POP3 sin cifrar

Evidencia requerida

  • Captura del estado de UFW con las nuevas reglas añadidas.

Paso 8: Reglas por IP de origen

Simula el siguiente escenario: el administrador de sistemas solo debe poder conectarse por SSH desde su equipo (la máquina cliente). Cualquier otro equipo debe tener SSH bloqueado.

Primero elimina la regla actual de SSH:

sudo ufw status numbered
sudo ufw delete <numero_de_la_regla_ssh>

Ahora crea una regla que permita SSH únicamente desde la IP del cliente:

sudo ufw allow from <IP_del_cliente> to any port 22

Evidencia requerida

  • Captura del estado de UFW con la nueva regla.
  • Comprueba desde el cliente que puedes conectarte por SSH. Captura el resultado.
  • Responde en tu informe: ¿qué ocurriría si intentaras conectarte por SSH desde una tercera máquina con una IP diferente?

Paso 9: Activación y análisis de logs

Activa el registro de eventos de UFW y genera tráfico bloqueado para analizar los logs:

# Activar logs
sudo ufw logging on

# Ver los logs en tiempo real (deja este terminal abierto)
sudo tail -f /var/log/ufw.log

Desde la máquina Cliente, intenta conectarte a puertos bloqueados:

ftp <IP_del_servidor>
telnet <IP_del_servidor>
nmap -p 21,23,25 <IP_del_servidor>

Vuelve al terminal del servidor y observa las entradas generadas en el log.

Evidencia requerida

  • Captura del log de UFW mostrando los intentos bloqueados.
  • Identifica en el log: IP de origen, IP de destino, puerto y protocolo de al menos dos entradas bloqueadas.
  • Explica en tu informe qué información proporciona cada campo del log y para qué sirve en una auditoría de seguridad.

Paso 10: Simulación de un ataque de escaneo

Desde la máquina Cliente, realiza un escaneo completo de puertos contra el servidor:

nmap -sS -p 1-1024 <IP_del_servidor>

Evidencia requerida

  • Captura del resultado del escaneo desde el cliente.
  • Captura del log de UFW en el servidor mostrando los intentos de conexión generados por el escaneo.
  • Compara este resultado con el escaneo del paso 2 (antes de UFW). ¿Qué diferencia observas en la información que obtiene el atacante?

Paso 11: Eliminación de HTTP y configuración final

El servidor ya no debe servir HTTP sin cifrar. Elimina la regla de HTTP y deja únicamente HTTPS:

sudo ufw status numbered
sudo ufw delete allow 80/tcp

Verifica que HTTP queda bloqueado desde el cliente:

curl http://<IP_del_servidor>

Evidencia requerida

  • Captura del estado final de UFW con todas las reglas activas.
  • Captura del intento fallido de conexión HTTP desde el cliente.

Paso 12: Verificación final del estado de seguridad

Realiza un escaneo final desde el cliente para documentar el estado de seguridad del servidor tras todas las configuraciones:

nmap -sV <IP_del_servidor>

Evidencia requerida

  • Captura del resultado del escaneo final.
  • Tabla comparativa elaborada por ti con el estado antes y después de configurar UFW:
Puerto Servicio Estado inicial Estado final Motivo
22 SSH Abierto Abierto (restringido) Necesario para administración
80 HTTP Abierto Cerrado Protocolo inseguro
21 FTP Abierto Cerrado Protocolo inseguro

Ampliación voluntaria: iptables

Actividad voluntaria

Esta sección es voluntaria y no cuenta para la nota base. Permite explorar el motor que hay detrás de UFW.

A1: Visualizar las reglas de iptables generadas por UFW

sudo iptables -L -v -n --line-numbers

Observa cómo UFW ha traducido las reglas configuradas a reglas de iptables.
Identifica en la salida las reglas correspondientes a SSH, HTTPS y los puertos bloqueados.

Evidencia requerida

Captura de la salida de iptables e identificación de, al menos, tres reglas generadas por UFW.

A2: Añadir una regla directamente con iptables

Sin usar UFW, añade una regla que bloquee el tráfico ICMP (ping) entrante:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Verifica desde el cliente que el ping ya no funciona. Después elimina la regla:

sudo iptables -D INPUT -p icmp --icmp-type echo-request -j DROP

Evidencia requerida

Captura del ping fallido y del ping exitoso tras eliminar la regla.

Formato del informe

El informe se entregará en PDF con la siguiente estructura:

  1. Portada con nombre, título, fecha y curso.
  2. Índice.
  3. Desarrollo: una sección por cada paso (paso 1 a paso 12), con capturas integradas y comentadas.
  4. Tabla comparativa final (paso 12).
  5. Conclusiones: responde a las siguientes preguntas:
  6. ¿Cuál es la diferencia práctica entre tener un servicio parado y tener un puerto bloqueado por UFW?
  7. ¿Por qué es importante activar los logs del firewall en un entorno real?
  8. Si tuvieras que proteger un servidor web de producción, ¿qué reglas UFW aplicarías como mínimo?
  9. Ampliación (si se ha realizado).

Requisitos formales

  • Todas las capturas deben estar recortadas y tener pie de foto.
  • El texto debe explicar qué se ve en cada captura y qué significa.
  • Redacción en castellano o valenciano.

Criterios de evaluación

Criterio Descripción Puntuación
Pasos 1-3 Análisis inicial documentado con tabla de riesgos 2 puntos
Pasos 4-6 Activación de UFW y apertura selectiva correcta 2 puntos
Pasos 7-8 Reglas avanzadas por puerto y por IP 2 puntos
Pasos 9-10 Análisis de logs e interpretación del escaneo 2 puntos
Pasos 11-12 Configuración final y tabla comparativa 1 punto
Conclusiones Respuestas justificadas con lo observado 1 punto
Ampliación voluntaria Hasta +1 punto extra
Total 10 puntos

Penalizaciones

  • Capturas sin comentar: -0,25 puntos por captura.
  • Informe sin estructura o sin índice: -0,5 puntos.
  • Entrega fuera de plazo: -1 punto por día de retraso.