¿Es una buena práctica prohibir una dirección IP si se realizan demasiados intentos de inicio de sesión?

51

Dado que una dirección IP no representa necesariamente un dispositivo específico, sino probablemente toda una red / empresa / etc. ¿Tiene algún sentido bloquear una dirección IP si hay una cantidad significativa de intentos de inicio de sesión falsos?

Estaba planeando implementar la comprobación de IP y los intentos de un usuario / cuenta / correo electrónico específicos, pero no estoy seguro de si es mejor dejar la IP por completo.

Por otra parte, esto permite que un atacante intente una gran cantidad de contraseñas para cada usuario sin que nunca se las elimine (al mismo tiempo, se impide que los usuarios puedan iniciar sesión desde su Las cuentas estarán bloqueadas por un tiempo).

¿Cuál es el enfoque correcto para prevenir algo así (posiblemente sin usar hardware dedicado)?

    
pregunta Levit 27.05.2014 - 15:40
fuente

4 respuestas

67

La respuesta a esta pregunta depende en gran medida de la postura de seguridad de su sitio, que decide si el riesgo de acceso no autorizado es mayor o menor que el riesgo de denegación de servicio para algunos usuarios.

Para los sitios de alto riesgo, podría optar por la opción de bloqueo, especialmente donde es probable que la mayoría de la base de usuarios sean usuarios domésticos y, por lo tanto, tengan direcciones IP distintas.

Un compromiso podría ser que detecte ataques de adivinación de contraseñas, agregue algo de anti-automatización (por ejemplo, CAPTCHA) a los inicios de sesión desde esa dirección IP por un tiempo. Eso tiene el efecto de hacer que el ataque sea más difícil de lograr y no bloquee completamente a los usuarios legítimos del sitio.

Si aún tienes muchos inicios de sesión no válidos con el CAPTCHA completado, parecería que estás viendo un ataque más específico (ya que es probable que tengan que pagar por un servicio de resolución de CAPTCHA si tu CAPTCHA es bueno), y en ese momento me inclinaría más por bloquear la dirección IP por un tiempo y redirigir a los usuarios a un mensaje que explique el bloqueo (se ha detectado algo parecido a "actividad maliciosa desde su dirección IP, póngase en contacto con el servicio de asistencia en [your_support_email_here]).

    
respondido por el Rоry McCune 27.05.2014 - 16:02
fuente
14

Como dijo @Rory, depende de su postura de seguridad, pero si no es un sitio de alto riesgo y le preocupa bloquear a varios usuarios que compartan la misma IP, un método que podría usar sería rastrear la cantidad de intentos de inicio de sesión por IP y aplicar una regulación muy moderada (para un humano) que haría que un ataque de fuerza bruta sea prohibitivo.

Por ejemplo, si se han intentado más de X intentos desde una dirección IP determinada en el último segundo (donde X es su número estimado de intentos de inicio de sesión simultáneos por segundo desde una sola dirección IP) envíe un 403 (o mejor, un 429 ) con un mensaje que dice algo así como "Se han realizado demasiados intentos recientemente, espere unos momentos e inténtelo de nuevo".

De esta manera, es muy improbable que un ser humano tenga un problema, incluso si tiene una IP compartida, mientras que cualquier ataque de fuerza bruta se limitará a X por segundo, lo que es cientos a miles de veces más lento que un no - Ataque estrangulado.

Si desea hacerlo un poco más seguro sin tener que recurrir a la prohibición automática, también puede enviar un correo electrónico automatizado a asistencia siempre que se haya alcanzado el límite máximo de inicio de sesión un número excesivo de veces (quizás 100) desde una sola IP . De esa manera usted podría inspeccionar los registros y decidir por sí mismo si esa dirección IP en particular vale la pena o no. Prohibida.

Este enfoque intercambia un poco de seguridad por facilidad de uso, ya que estamos evitando los captchas o cualquier otra cosa que pueda ralentizar a un humano.

    
respondido por el thomij 27.05.2014 - 18:53
fuente
0

Me gustaría mencionar otro problema: esto puede ser una catástrofe de usabilidad ...

Este bloque puede ser muy molesto (me ha pasado más de una vez). Considere el caso de un proveedor de Internet con direcciones IPv6 nativas donde IPv4 solo está disponible a través de NAT. Digamos que hay 1000 personas detrás de este NAT, es decir, 1000 personas con la misma dirección IP. Si usted prohíbe solo a uno de ellos por su dirección (¿probablemente IPv4?), También prohibiría a las otras 999 personas. ¿Suena esto como una buena idea? No lo creo. No estoy seguro de los efectos secundarios si comprueba la dirección IPv6.

(el escenario anterior con IPv4 solo sobre NAT se aplica al menos para algunos de los principales proveedores de Internet en Alemania)

    
respondido por el mozzbozz 25.02.2015 - 17:53
fuente
0

Otra solución viable es crear un mecanismo alternativo para que el usuario inicie sesión. El usuario podría usar este mecanismo alternativo cuando el mecanismo de inicio de sesión habitual se haya desactivado (debido a demasiados intentos fallidos de inicio de sesión de Mallory)

Este mecanismo alternativo normalmente solicitaría mucha más información para garantizar que solo el usuario real pueda iniciar sesión correctamente. Por ejemplo, además de la contraseña, podemos requerir que el usuario proporcione uno o más de estos:

  • un código SMS

  • un dongle de hardware

  • un código enviado a un correo electrónico (seguro)

Este mecanismo alternativo no debe tener una tasa limitada (de lo contrario, Mallory simplemente enviaría correo basura con basura para lograr la denegación de servicio).

Dado que no está limitado en la velocidad, las entradas deben ser lo suficientemente largas para resistir los ataques "infinitos" de fuerza bruta.

    
respondido por el Pacerier 16.02.2015 - 04:37
fuente

Lea otras preguntas en las etiquetas