[Pregunta]: Lógica para un sistema de seguridad contra ataques de fuerza bruta en el login

(1/2) > >>

Leguim:
Básicamente estoy pensando como podría hacer un sistema nuevo de seguridad que prevenga ataques de fuerza bruta en el login.

Es decir, que un usuario determinado intente constantemente con diferentes contraseñas (se espera que tenga un diccionario de contraseñas) hasta poder ingresar a la cuenta de la victima.
Me vinieron algunas ideas pero como todo está muy fresco seguro hay cosas que estoy dejando pasar.

El sistema funcionaría de la siguiente manera, cada vez que un usuario ingrese una contraseña incorrecta el sistema le incrementará a +1 una variable que podemos llamar "attempt" (no estoy seguro si en una $_SESSION o en un campo nuevo en la bd para la cuenta de usuario que aplique), al llegar a las 40 tentativas lo que ocurrirá sería bloquear el login para ese usuario. Absolutamente nadie podrá iniciar sesión en esa cuenta por lo menos durante un periodo de tiempo que aún no defino bien, quizás una 6 horas no estoy seguro.

Por supuesto puede ocurrir que la persona que desee ingresar sesión sea el propio usuario, no el atacante. Entonces se le podría enviar un mail justo en el momento de bloquear el login explicándole lo ocurrido, recomendándole el uso de una contraseña segura, por supuesto algo que se me ocurrió es poder darle la posibilidad a el dueño de la cuenta en las opciones de privacidad de querer que su cuenta quede bloqueada (el login) ante estos casos o que no quede.

En fín, en el correo que se le enviará se le dirá que además de la recomendación del uso de contraseñas seguras y esa opción nueva de privacidad, estaría un código que deberá ingresar en un determinado formulario para que se pueda desbloquear el login nuevamente sin que tenga que esperar las 6h.

Es una idea muy fresca así que espero puedan darme más ideas, o mejoras a todo esto.

Tachikomaia:
Yo he usado páginas en que si erras el password 3 veces no lo puedes volver a poner durante unos minútos o algo así. No leí todo pero no he visto que dijeses algo nuevo y bueno, al contrario, 40 intentos me parece un disparate.

Leguim:
Cita de: Tachikomaia en 13 Febrero 2021, 00:04 am

Yo he usado páginas en que si erras el password 3 veces no lo puedes volver a poner durante unos minútos o algo así. No leí todo pero no he visto que dijeses algo nuevo y bueno, al contrario, 40 intentos me parece un disparate.


Tiene que ver con que si haces 3 intentos y ya te bloquea el login y después tenes que hacer todo ese trámite con el correo es algo tedioso, imaginate también una persona X que está intentando ingresar a unas 10 cuentas o más y que sólo por molestar se equivoca en cada una 3 veces, le terminó bloqueando el login a 10 cuentas. (no hay muchas personas con tanto tiempo libre pero puede pasar). Igualmente según lo que dijiste te bloquea unos minutos, no unas 6 horas como dije que podría hacer, por eso tanto el tiempo, cantidad de intentos y algunas otras variables puedo cambiar.

#!drvy:
En época de Messenger, la gente podía bloquear la cuenta de otros mediante un intento masivo de contraseñas incorrectas lo cual hacia que Hotmail (y por ende Messenger) bloquease la cuenta durante X tiempo y no había forma de quitarlo ni siquiera para el usuario real salvo contactar con soporte de Microsoft xD

Está bien implementar un anti-bruteforce, siempre que el usuario real tenga la posibilidad de saltárselo en caso de que se haya activado. 40 intentos me parece un poco excesivo. Normalmente se trabaja sobre 10 como mucho. Al fin y al cabo son X contraseñas que pueden probar cada Y horas, si pones 40 cada 6, quiere decir que van a poder probar 160 contraseñas cada 24 horas. Eso hay que intentar reducirlo al máximo.

Desde luego, no lo implementes ni por sesión ni por cookies. Impleméntalo a nivel de base de datos. De nada te sirve que el atacante borre las cookies (en el que también se borra la sesión) y se salte el límite.


De todos modos, lo que se hace hoy en día es autentificación en 2 pasos. Ahí aunque la contraseña se vea comprometida, solo el usuario con código 2FA puede acceder.

https://es.wikipedia.org/wiki/Autenticaci%C3%B3n_de_m%C3%BAltiples_factores

Saludos

Leguim:
Hola!

Estuve leyendo lo que mandaste, está interesante pero creo que me va a venir mejor en mi sistema, el bloquear el login.

Estas entonces son las características (en base a sus sugerencias):
------------------------------------------------
- El usuario tiene que poder saltarlo en caso de activación.
- 10 intentos fallidos y se bloqueará el login.
- La variable "attempt" pasará a ser un nuevo dato en la base de datos correspondiente para cada usuario.
- Cada vez que el usuario inicie sesión ese contador "attempt" se le reinicializará en 0.
- En opciones de privacidad podrá modificar este "bloqueo de login" (sería recomendable dejarlo desactivado para aquellos que tengan una contraseña muy segura) pero por defecto estará activado el bloqueo de login.
------------------------------------------------

Creo que quedó interesante si bien son pilares básicos, a el sistema seguramente le tenga que poner alguna que otra cosita con la que me vaya a encontrar mientras programo pero me gustó.

Gracias por los aportes.

messenger la tenes adentro  :xD

Navegación

[0] Índice de Mensajes

[#] Página Siguiente