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