¿Tiene sentido la política de bloqueo de mi cuenta?

2

Tengo una aplicación basada en web donde los usuarios pueden iniciar sesión con nombre de usuario y contraseña.

Acabo de implementar una nueva función de bloqueo de cuenta y me preguntaba si tiene sentido o si la he arruinado por completo.

Los primeros 3 intentos de inicio de sesión no válidos solo muestran mi estándar:

Incorrect user name or password

pero almaceno cada intento fallido. Para cualquier intento posterior, bloqueo la cuenta durante más y más segundos y se la muestro al usuario:

The logon failed because your account is blocked due to a previous unsuccessful attempt. 
Please wait a 18 seconds and try again.

Si el recuento de inicio de sesión fallido es mayor a 10, bloqueo la cuenta durante 120 segundos, es el tiempo de espera máximo.

Si el usuario adecuado finalmente recuerda la contraseña correcta, tiene que esperar 2 minutos, eso es No está mal.

Pero un pirata informático solo puede probar una nueva contraseña cada 2 minutos, lo que pronto se vuelve aburrido.

Después de un inicio de sesión exitoso, mi cuenta de fallas se restablece a cero.

Todos los números aquí son configurables.

Problemas:

  • Después de algunos intentos, revelo que un nombre de usuario es válido, por mostrando un mensaje diferente, pero también podría apagarlo y siempre solo muestra el mensaje estándar.
  • Si el usuario real intenta iniciar sesión mientras otra persona está intentando entrar en su cuenta, ella no podrá iniciar sesión, por lo que esta es una negación de servicio. Pero dos minutos después de que el atacante se da por vencido, ella puede iniciar sesión sin tener que llamar a la mesa de ayuda.
pregunta Peter Hahndorf 16.02.2014 - 18:04
fuente

3 respuestas

2

Estoy de acuerdo contigo en las fallas, pero parece estar en la línea correcta.

  

Después de algunos intentos, revelo que un nombre de usuario es válido, al mostrar un mensaje diferente, pero también podría desactivarlo y solo mostrar el mensaje estándar.

Sí, también debe ejecutar el mismo comportamiento para nombres de usuario no válidos. Su sitio debe simular la política de bloqueo de estos usuarios. Esto ayudará a proteger contra Enumeration de nombre de usuario .

  

Si el usuario real intenta iniciar sesión mientras alguien más intenta ingresar en su cuenta, no podrá iniciar sesión, por lo que se trata de una denegación de servicio. Pero dos minutos después de que el atacante se da por vencido, puede iniciar sesión sin tener que llamar a la mesa de ayuda.

Tienes razón en que esto es un ataque de DOS contra el usuario. Tal vez debería simplemente calificar los intentos de límite después de X de intentos fallidos. Un retraso artificial de 5 segundos detendría la fuerza bruta pero permitiría a un usuario legítimo iniciar sesión. Los intentos deben medirse por el nombre de usuario y la dirección IP (por separado) y el acelerador debe ser entre hilos para evitar que un atacante envíe solicitudes en paralelo. De nuevo, la misma lógica debería aplicarse también a los nombres de usuario no válidos.

    
respondido por el SilverlightFox 17.02.2014 - 14:34
fuente
0

Una política de bloqueo de cuenta tiene sentido, ya que puede aumentar la complejidad de ingresar en una cuenta, ya que toma más tiempo forzar la cuenta. Sugeriría no dar salida a que el nombre de usuario es válido. Si el intento de inicio de sesión falla ... falla ... Dar salida al mensaje sobre un nombre de usuario correcto podría ser útil para un atacante. El rechazo si el servicio a un usuario legítimo es desafortunado, pero si el usuario llama a la mesa de ayuda, podría ser útil para alertar a los administradores sobre un intento de entrar en una cuenta. Para mí esto suena razonable pero no estoy seguro de cuáles son sus requisitos. En general, creo que las políticas de bloqueo son una buena idea, pero encontrar una política que no degrade la facilidad de uso de su aplicación es la parte más difícil, parece ser la parte más difícil. Espero que eso ayude a algunos sin embargo.

    
respondido por el dudebrobro 16.02.2014 - 18:24
fuente
0

Los intentos de inicio de sesión fallidos deben contarse en el lado del servidor por nombre de usuario y dirección IP. Si un atacante intentara atacar a Brute Force, cambiar la dirección IP no debería ayudarlo. Además, si el atacante también intentara atacar a Alice con fuerza bruta, entonces no podría, porque su dirección IP ya estaba agregada a la lista negra, mientras intentaba hackear a Bob antes. Bob tendrá bloqueada su cuenta, por lo que deberías enviarle un código de desbloqueo por correo electrónico. Iría por 5 intentos fallidos de inicio de sesión y luego BANEAR. Sin tiempo de espera, sin problemas.

    
respondido por el user40181 16.02.2014 - 18:28
fuente

Lea otras preguntas en las etiquetas