馃攼 Taller Avanzado: fail2ban con nginx personalizado
馃幆 Objetivo
Implementar una imagen Docker personalizada de nginx para registrar intentos fallidos y monitorear con fail2ban.
馃摝 Paso 1: Crear imagen personalizada de nginx
1. Crea una carpeta vac铆a con nombre nginx-fail2ban y dentro un archivo llamado Dockerfile con este contenido:
FROM nginx:latest
# Instala bash y herramientas necesarias
RUN apt update && apt install -y bash procps
# Crea el directorio de logs
RUN mkdir -p /var/log/nginx
# Redirecciona logs de nginx a archivos tradicionales
RUN sed -i 's|access_log /dev/stdout|access_log /var/log/nginx/access.log|' /etc/nginx/nginx.conf \
&& sed -i 's|error_log /dev/stderr|error_log /var/log/nginx/error.log|' /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
2. Desde esa carpeta, construye la imagen:
sudo docker build -t nginx-fail2ban .
馃惓 Paso 2: Crear contenedor del servidor web
sudo docker run -dit --name servidor_web --network red_segura \
--ip 172.25.0.10 nginx-fail2ban
馃攳 Paso 3: Verificar que nginx est茅 corriendo
sudo docker exec -it servidor_web bash
cat /proc/1/cmdline
Si el log no se muestra con cat /var/log/nginx/access.log, puedes ver registros directamente con:
sudo docker logs servidor_web
馃И Paso 4: Simular ataques desde cliente
sudo docker exec -it cliente sh
for i in $(seq 1 10); do curl http://172.25.0.10/admin; done
馃摑 Paso 5: Crear filtro fail2ban en firewall
nano /etc/fail2ban/filter.d/nginx-404.conf
Contenido del archivo:
[Definition]
failregex = ^ -.*"GET /admin HTTP.*" 404
ignoreregex =
馃敀 Paso 6: Configurar jail
nano /etc/fail2ban/jail.local
Contenido del archivo:
[nginx-404]
enabled = true
port = http
filter = nginx-404
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 600
馃殌 Paso 7: Reiniciar fail2ban y verificar estado
sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status nginx-404
馃搶 Paso 8: Verificar bloqueo con iptables
sudo iptables -L -n -v
馃棶️ Entregables
- Captura del Dockerfile utilizado
- Captura del log de intentos (access.log o docker logs)
- Archivos
jail.localy filtro personalizado - Captura del resultado de
fail2ban-client status nginx-404 - Captura de las reglas en
iptables
馃帀 ¡Taller completado! Has creado un entorno seguro donde los intentos de acceso indebido son monitoreados y bloqueados autom谩ticamente con fail2ban en un servidor nginx dentro de Docker.
Comentarios
Publicar un comentario