Tengo una aplicación web que está expuesta a Internet y estoy interesado en crear alertas o en priorizar la revisión manual de inicios de sesión fallidos en la aplicación web.
- ¿Qué umbrales o fórmulas deben usarse para determinar cuándo un inicio de sesión fallido debe revisarse con más detalle? (Supongamos que una alerta podría activarse por usuario o por IP).
Algunas fórmulas que probé, pero tuve problemas con la aplicación consistente incluyen:
- Inicios de sesión exitosos / fallidos por IP
- Inicios de sesión exitosos / fallidos por usuario
- ¿Alguna vez el usuario ha iniciado sesión correctamente en esta IP? (Si no es así, sé más conservador)
Realicé una auditoría de prueba de concepto contra las aplicaciones web existentes y noté que hubo algunos casos de uso legítimos para la aplicación que desvían la aplicación directa de las relaciones anteriores:
- El usuario está detrás de un NAT o Proxy compartido (oficina remota).
- El usuario está en un dispositivo doméstico (o móvil) y la IP de origen siempre está cambiando.
- La máquina se comparte entre muchos usuarios, y eso tiene una IP constante pero muchos usuarios
Algunas cosas que intento evitar (lista incompleta) incluyen:
- Brute forzando nombres de usuario o contraseñas. (el período de bloqueo es de 24 horas)
- DoSing la aplicación al bloquear intencionalmente a los usuarios
- Cualquier ataque por encima de una BotNet o TOR
- Ataques internos / actividad sospechosa de usuarios internos.
La solución ideal tendría una consideración para el escenario a continuación, pero cualquier enfoque general, documento técnico académico o investigación sería útil.
- Escenario opcional: un atacante está usando cuentas títere de calcetines para agregar inicios de sesión exitosos a la cuenta fallida, lo que lo hace aparecer como un NAT arriba.