Este proyecto simula la implementación y configuración de un firewall personalizado en un entorno Linux, utilizando UFW como interfaz de gestión y reglas avanzadas mediante IPTables. El objetivo es mejorar la postura defensiva de una máquina servidor, controlar el tráfico entrante y saliente, y proteger servicios críticos frente a ataques internos.
- Ubuntu Server
- UFW (Uncomplicated Firewall)
- IPTables
- Nmap
- hping3 / netcat
- Verificación de conectividad entre interfaces
- Aplicación de políticas predeterminadas de UFW (deny incoming, allow outgoing)
- Definición de puertos y servicios esenciales permitidos
- Integración de reglas avanzadas de IPTables para refuerzo (DROP, REJECT, filtrado por protocolo/IP)
- Simulación de escaneos y ataques para validación
- Revisión de logs y documentación
El informe documenta el comportamiento del firewall bajo diferentes condiciones, evidencia el bloqueo de escaneos, ataques ICMP y puertos no autorizados, y ofrece recomendaciones de mejora alineadas a los CIS Benchmarks (nivel 1). Se incluye comparación entre enfoques UFW y reglas manuales con IPTables.
This project simulates the implementation and configuration of a custom firewall in a Linux environment, using UFW as a management interface and advanced rules with IPTables. The objective is to improve the defensive posture of a server machine, control incoming and outgoing traffic, and protect critical services against internal attacks.
- Ubuntu Server
- UFW (Uncomplicated Firewall)
- IPTables
- Nmap
- hping3 / netcat
- Connectivity check between interfaces
- Application of UFW default policies (deny incoming, allow outgoing)
- Definition of essential ports and allowed services
- Integration of advanced IPTables rules for hardening (DROP, REJECT, protocol/IP filtering)
- Attack and scan simulation for validation
- Log review and documentation
The report documents the firewall behavior under various conditions, evidences the blocking of scans, ICMP attacks, and unauthorized ports, and offers improvement recommendations aligned with CIS Benchmarks (Level 1). A comparison between UFW and manual IPTables rules is also included.
Paso | Acción | Herramienta | Resultado esperado |
---|---|---|---|
1️⃣ | Verificar el estado inicial de red y firewall | ifconfig, ss -tulnp, ufw status, iptables -L | Confirmar que la interfaz de red está activa, detectar servicios en escucha y validar que no existen reglas previas activas |
2️⃣ | Aplicar políticas predeterminadas y permitir servicios esenciales | UFW | Solo puertos específicos accesibles (ej. 22/SSH) |
3️⃣ | Crear reglas personalizadas para proteger el sistema | IPTables | Bloqueo de puertos, protocolos o IPs sospechosas |
4️⃣ | Simular escaneos y ataques | nmap, hping3, netcat | Comprobar que el firewall bloquea intentos no autorizados |
5️⃣ | Revisar registros y ajustar reglas | UFW logging, dmesg | Validar que los eventos sospechosos sean registrados |
6️⃣ | Documentar configuraciones y recomendaciones | Markdown (README.md) | Informe estructurado con reglas, pruebas y medidas alineadas a CIS |
En este primer paso nos aseguramos que el entorno esté limpio y funcional antes de aplicar reglas de firewall.
De esta forma garantizamos que cualquier bloqueo posterior sea atribuible únicamente a las reglas que aplicaremos y no a configuraciones residuales.
La máquina tenga una IP válida (verificado con ifconfig)
No existan servicios inesperados abiertos (ss -tulnp)
El firewall UFW esté inactivo (ufw status)
No haya reglas previas en IPTables (iptables -L)
Estableceremos las reglas mínimas para que la máquina solo permita conexiones salientes y bloquee cualquier intento de conexión entrante no autorizado. Esto es una medida base recomendada por los CIS Benchmarks para servidores.
🎯 El objetivo será:
-
Bloquear todo el tráfico entrante por defecto (deny incoming)
-
Permitir todo el tráfico saliente (allow outgoing)
-
Habilitar el acceso por SSH (puerto 22) para administración remota (opcional)
-
Activar el firewall UFW y verificar el estado
Resultado esperado:
🔒 Todo tráfico entrante no autorizado es bloqueado por defecto.
✅ El tráfico saliente (como actualizaciones del sistema) se mantiene habilitado.
🔓 El puerto 22/tcp queda accesible para conexiones SSH (seguridad remota).
📊 El estado del firewall se puede verificar con ufw status verbose.
🛡️ En este paso sentamos la base de una política de mínimo privilegio, recomendada por los CIS Brenchmarks (Control 9.1).
Ahora fortaleceremos la seguridad más allá de las políticas generales de UFW, aplicando reglas directas en IPTables para controlar con precisión el tráfico basado en protocolos, puertos, y direcciones IP.
🔸 3.1 Establecer políticas predeterminadas
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
🔸 3.2 Permitir tráfico legítimo y conexiones establecidas
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Primero implementamos un enfoque "default deny" y luego evita bloqueos innecesarios y mantiene la funcionalidad normal del sistema sin exponer puertos.
🔸 3.3 Definir reglas explícitas de filtrado
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Permitir SSH
sudo iptables -A INPUT -p tcp --dport 23 -j DROP # Bloquear Telnet
sudo iptables -A INPUT -s 203.0.113.45 -j DROP # Bloquear IP específica
Estas reglas personalizadas permiten construir una política de defensa efectiva, basada en el principio de mínimo privilegio.
En esta etapa realizamos pruebas de escaneo contra el Firewall configurado con reglas iptables, desde un host externo (máquina física con Windows) utilizando Zenmap (Nmap GUI).
El objetivo fue validar que los servicios no autorizados (puertos no permitidos explícitamente) estén correctamente bloqueados por el firewall.
nmap -sS -p- 192.168.0.106
nmap -sV -p22,23,80 192.168.0.106
🔐 Resultado esperado
Puerto 22 (SSH): Permitido
Puerto 23 (Telnet): Bloqueado
Puerto 80 (HTTP): Bloqueado
Todos los demás puertos: Bloqueados
Donde 192.168.0.106
corresponde a la dirección IP de la máquina con iptables activo (Kali Linux en VirtualBox).
✅ Resultados
-
El escaneo con -p- (todos los puertos) no detectó ningún puerto abierto, lo que demuestra que las políticas DROP en iptables están funcionando correctamente.
-
El escaneo dirigido a puertos 22, 23 y 80 solo detectó el puerto 22 como abierto, cumpliendo con la regla de permitir SSH y bloquear Telnet y HTTP.
-
Se demostró resistencia a técnicas básicas de reconocimiento pasivo y activo.
En este paso se valida que los eventos sospechosos (intentos de conexión, escaneos, paquetes ICMP, etc.) estén siendo registrados por el sistema y el firewall. Esta fase es clave para detectar actividad no autorizada y afinar las reglas establecidas previamente.
Se activó el registro del firewall con:
sudo ufw logging on
Y se visualizaron eventos bloqueados con:
sudo dmesg | grep "IN="
Para complementar la revisión, se utilizó Gufw, la interfaz gráfica de UFW, permitiendo visualizar:
-
Las reglas permitidas (puerto 22/tcp habilitado)
-
Reportes de actividad de red
-
Historial de activación del firewall
En esta última etapa se recopila toda la evidencia generada a lo largo del proyecto para producir un informe técnico claro, estructurado y alineado con buenas prácticas de ciberseguridad.
El objetivo es que cualquier profesional de TI o auditor pueda comprender fácilmente qué configuraciones se aplicaron, cómo se comportó el firewall ante intentos de escaneo o acceso no autorizado, y qué medidas se recomiendan para entornos reales.
- Capturas de pantalla de reglas configuradas (UFW e IPTables)
- Escaneos realizados con
nmap
y resultados bloqueados - Registros generados por
dmesg
y GUI de Gufw
- Bloqueo de todas las conexiones entrantes por defecto
- Permisos explícitos solo a servicios esenciales como SSH
- Registro de eventos y análisis de paquetes ICMP y escaneos
- Refuerzo de políticas con IPTables para control detallado de puertos y direcciones IP
- Activar el monitoreo continuo de logs (
ufw logging on
) - Aplicar reglas más estrictas en redes productivas (permitir solo IPs confiables)
- Integrar alertas automáticas ante eventos de DROP o BLOCK repetidos
- Evaluar la adopción de herramientas como
fail2ban
osuricata
para detección temprana
Este informe sirve como referencia para configurar firewalls en entornos Linux, reforzando la seguridad perimetral incluso en escenarios simulados de red.
🛡️ Proyecto completo y validado: Firewall Personalizado con UFW + IPTables