🛡️ Taller: Firewall con Docker e iptables
🎯 Objetivo
Simular un entorno de red segura con contenedores Docker, aplicando reglas de firewall usando iptables.
🧰 Requisitos
- Ubuntu con Docker instalado
- Conexión a internet para instalar paquetes
📦 Paso 1: Crear red personalizada
🐳 Paso 2: Crear los contenedores
- Servidor nginx:
sudo docker run -dit --name servidor_web --network red_segura \
--ip 172.25.0.10 nginx
- Cliente atacante:
sudo docker run -dit --name cliente --network red_segura \
--ip 172.25.0.20 alpine sh
- Firewall (usa una IP libre para evitar conflicto):
sudo docker run -dit --name firewall --network red_segura \
--ip 172.25.0.5 --cap-add=NET_ADMIN debian bash
🛠️ Paso 3: Configurar el contenedor firewall
sudo docker exec -it firewall bash
apt update && apt install iproute2 iptables curl -y
🔍 Paso 4: Probar conexión desde cliente
sudo docker exec -it cliente sh
apk add curl
curl 172.25.0.10
✅ Debería mostrar el HTML del servidor nginx
🚫 Paso 5: Aplicar regla de bloqueo en firewall
Ejecuta el comando como root para evitar errores de permisos:
sudo iptables -I FORWARD -s 172.25.0.20 -d 172.25.0.10 -p tcp --dport 80 -j DROP
🔁 Vuelve al cliente y repite el curl. Si todavía puedes acceder, verifica que el contenedor firewall esté correctamente enrutando el tráfico o considera aplicar la regla directamente en el host.
🧪 Paso 6: Verificar reglas
sudo iptables -L -v
⚠️ Alternativa: uso de DOCKER-USER para reglas efectivas
Si las reglas en la cadena FORWARD no bloquean el tráfico esperado, puedes insertar la regla en la cadena DOCKER-USER, que se procesa antes que las reglas gestionadas automáticamente por Docker:
sudo iptables -I DOCKER-USER -s 172.25.0.20 -d 172.25.0.10 -p tcp --dport 80 -j DROP
Luego repite la prueba desde el cliente para verificar si se bloquea correctamente.
📌 Opcional: limpiar reglas
sudo iptables -F
💡 Salir y gestionar contenedores
- Salir de un contenedor sin detenerlo:
exit
sudo docker stop firewall
sudo docker rm firewall
📝 Evaluación sugerida
- ✔️ Crear red y contenedores correctamente
- ✔️ Acceder al servidor desde el cliente
- ✔️ Aplicar regla iptables desde el contenedor firewall
- ✔️ Confirmar bloqueo de acceso al puerto 80
¡Taller finalizado con éxito! Puedes expandir este entorno integrando fail2ban, nginx logs, o tcpdump para análisis de tráfico.






Comentarios
Publicar un comentario