Limitación de velocidad de Nginx en IP únicas

Limitación de velocidad de Nginx en IP únicas

Hemos estado lidiando con ataques constantes a nuestra URL de autenticación, estamos hablando de millones de solicitudes por día, supongo que están intentando forzar contraseñas por fuerza bruta.

Cada vez que bloqueábamos la IP con el firewall del servidor, unos segundos después los ataques comenzaban nuevamente desde una IP diferente.

Terminamos implementando una combinación de limitación mediante ataque en rack más código personalizado para bloquear dinámicamente las IP en el firewall. Pero a medida que mejoramos la seguridad de nuestro software, también lo hicieron los atacantes, y ahora vemos que cada solicitud que realizan se realiza desde una IP diferente, una llamada por IP, varias por segundo, no tantas, pero sigue siendo un problema.

Ahora estoy tratando de descubrir qué más puedo hacer para evitar esto. Intentamos recaptcha pero rápidamente nos quedamos sin la cuota mensual y nadie puede iniciar sesión.

Estoy investigando el limitador de velocidad de Nginx pero, por lo que puedo ver, también usa la IP, considerando que ahora rotan las IP para cada solicitud, ¿hay alguna manera de que esto funcione?

¿Alguna otra sugerencia sobre cómo manejar esto? ¿Quizás alguno de ustedes pasó por lo mismo?

Pila: Nginx y Rails 4, Ubuntu 16.

Respuesta1

Con la limitación de velocidad, filtró algunos de los pulverizadores de contraseñas de gran volumen, lo que ayuda. Sin embargo, la limitación de velocidad basada en IP por sí sola no funciona cuando el atacante tiene muchas direcciones IP, las rota rápidamente y limita las solicitudes a una velocidad humana.

Probamos recaptcha pero rápidamente nos quedamos sin la cuota mensual y nadie puede iniciar sesión.

Paga tu servicio CAPTCHA y observa cómo funciona a escala durante el mes. Si no te gusta el precio, miraalternativas.hCaptcha, por ejemplo, tiene un nivel básico gratuito.

Más fundamentalmente, reemplace las contraseñas con algo mejor, tal vez claves de seguridad de hardware o datos biométricos. O al menos complemente las contraseñas con factores de autenticación adicionales. Existen estándares para hacer esto, a saber, FIDO2. Y para las credenciales interactivas que no son del usuario, las claves ssh, los certificados x509 o las claves API generadas también son mejores que las contraseñas seleccionadas por el usuario.

información relacionada