Evitar la desventaja del bloqueo de cuenta basado en IP

1

Por lo tanto, estamos tratando de evitar ataques de fuerza bruta en nuestra página de inicio de sesión del servidor web. Actualmente, solo hacemos el bloqueo basado en IP si x intentos fallidos de la dirección IP Y ocurren durante un período de tiempo z Después de una revisión de seguridad, nos dimos cuenta de que podríamos estar bloqueando a los usuarios que comparten una IP, que el artículo de OWASP sobre el tema Confirmado es un problema legítimo. Ahora estamos considerando cambiar el algoritmo para restringir por nombre de usuario y por dirección IP. ¿Es una mala idea? No estoy terriblemente preocupado de que un atacante en la misma IP que la víctima intencionalmente intente bloquear la cuenta de la víctima, pero tal vez sea más fácil de lo que creo.

psuedocode para nuevo algoritmo:

username = x
ipAddress = y
// if we're here, user has entered bad credentials

if( tooManyAttempts( x, y ) )
   lockAccount
else 
   ...
end if

def tooManyAttempts (username, ipAddress)
   attemptsPerTime = getAttempts ( username, ipAddress )
   if( attemptsPerTime > attemptsAllowedPerTime )
      return true
   else 
      return false
   end if
end

def getAttempts ( aUsername, anIpAddress)
   query database for attempts records
      where value in column username  equals aUsername AND
            value in column ipAddress equals anIpAddress
   return number of records
end
    
pregunta AlexMA 20.02.2015 - 21:24
fuente

2 respuestas

1

Cualquier sistema que incremente la cantidad de tiempo para intentos adicionales frustrará los ataques de fuerza bruta en su servicio. CAPTCHA, como se mencionó anteriormente, es un método sólido para hacer esto, ya que proporciona un período de tiempo de espera de 5 a 10 segundos entre intentos, por ejemplo, el tercer intento y la escalada del período de tiempo de espera siguiendo una progresión puede frustrar fácilmente cualquier intento de fuerza bruta. Incluso puede tener un límite en unos 5 minutos, y si un intento se realiza dentro de ese período, simplemente restablece el período incluso si es un inicio de sesión válido. (Verificando un máximo de 12 contraseñas por hora, por ejemplo, hace que la fuerza bruta sea prácticamente imposible).

Las prohibiciones basadas en IP serían ineficaces contra un ataque a gran escala, como quizás contra una red de bots, a menos que la prohibición de IP fuera específica de la cuenta.

Como idea, las cookies podrían usarse para frustrar a algunos atacantes, si se requiere el uso de cookies, podría generar un hash aleatorio de algún tipo que autentifique su / ubicación / como válido y cualquier intento que no provenga de esa ubicación es Sujeto a un proceso CAPTCHA o 2FA. (La autenticación exitosa podría permitirles agregar la cookie). Siguiendo este método, podría prohibir que un segmento completo se autentique por X minutos u horas A MENOS QUE tengan la cookie. Lo que solo daría como resultado que se prohibiera a una víctima si el atacante estaba utilizando su máquina, O se robó la cookie.

Tiempos divertidos.

    
respondido por el Desthro 21.02.2015 - 00:28
fuente
0

Solo requiere un CAPTCHA después de X intentos desde la dirección IP Y y / o el nombre de usuario U, de esa manera nadie se bloquea mientras el ataque aún se evita. Una opción razonable podría ser recortar la dirección IP y simplemente concentrarse en los intentos de inicio de sesión específicos de la cuenta (tal vez sean necesarias tres huelgas = CAPTCHA). Eso debería mitigar cualquier preocupación importante de la fuerza bruta para un servicio basado en la web, ya que tres intentos no equivalen a prácticamente nada en ese contexto. Para los problemas de alguien que tenga una idea bastante clara de cuál podría ser la contraseña para U (compañeros de habitación y similares), considere la posibilidad de ofrecer autenticación de dos factores (2FA). Recomendaría enviar un correo electrónico al usuario en cualquier momento en que sea necesario utilizar un CAPTCHA según ese esquema, haciéndole saber que algo está mal al tiempo que ofrece restablecer las contraseñas al mismo tiempo para que los intentos no sean legítimos.

    
respondido por el AJAr 20.02.2015 - 21:32
fuente

Lea otras preguntas en las etiquetas