Fail2ban es una herramienta eficaz para proteger tu servidor Nginx contra ataques de denegación de servicio (DDoS) y fuerza bruta. A continuación, se detallan los pasos para instalar y configurar Fail2ban con Nginx.
Instalación de Fail2ban
En Ubuntu/Debian, ejecuta:
apt-get install fail2ban
Configuración
Configuración de Nginx
Configura Nginx para limitar el número de solicitudes por dirección IP y registrar la información de las IP bloqueadas en el log de errores.
Configuración de Fail2ban
Filtro de Fail2ban
Crea el archivo de filtro en /etc/fail2ban/filter.d/nginx-req-limit.conf
con el siguiente contenido:
[Definition]
failregex = limiting requests, excess:.* by zone.*client: <HOST>
ignoreregex =
Jail de Fail2ban
Crea o edita el archivo jail.local
en /etc/fail2ban/jail.local
y añade la siguiente configuración:
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10
Reiniciar Fail2ban
Después de guardar los archivos de configuración, reinicia Fail2ban:
service fail2ban restart
Pruebas y Monitoreo
Para asegurarte de que Fail2ban está funcionando correctamente, monitorea el archivo de log de Fail2ban:
tail -f /var/log/fail2ban.log
También puedes verificar el estado de una jail específica:
fail2ban-client status nginx-req-limit
Depuración
Para depurar configuraciones de Fail2ban, usa:
fail2ban-client -d
Y para probar los filtros:
fail2ban-regex /var/log/nginx/example.com.error.log /etc/fail2ban/filter.d/nginx-req-limit.conf