¿Cómo proteger a nuestro servidor del ataque de fuerza bruta? [cerrado]

5

Uno de los ataques cibernéticos más comunes es Bruteforce. ¿Cuáles son los mecanismos disponibles para proteger este ataque y cómo la industria aplica estos mecanismos para mitigar los ataques (mejores prácticas)?

    
pregunta Ihebhamad 14.06.2018 - 00:07
fuente

3 respuestas

5

Los ataques de fuerza bruta tienen 2 lados de impacto. Una es recuperar las credenciales mediante series de adivinación de contraseñas y la otra es crear una denegación de servicio (DDoS) lanzando un gran número de intentos.

La industria utiliza múltiples mecanismos en una combinación para mitigar el ataque, ya que la implementación de un solo control puede no ser adecuada.

Los posibles controles de mitigación podrían ser:

  • Bloqueo de cuentas basado en fallas continuas de inicio de sesión
  • Crear una pausa en el proceso de autenticación después del inicio de sesión múltiple fallas
  • Bloqueo de direcciones IP: donde se inician múltiples intentos de inicio de sesión para múltiples cuentas
  • Permitir que los usuarios con altos privilegios inicien sesión desde una IP / IP particular
  • intentos de inicio de sesión con varios nombres de usuario desde una dirección IP
  • Acelera / bloquea el tráfico cuando el inicio de sesión intenta acceder a un formulario de cuenta varias direcciones IP a la vez
  • Ralentice la adivinación usando cookies del dispositivo (Referencia: enlace )
  • Use un CAPTCHA para prevenir ataques automatizados
  • Utilice la autenticación de 2 factores para evitar ataques

Ahora, la razón por la que es importante usar la combinación de controles es garantizar que los usuarios legítimos no se vean afectados o no puedan acceder a los recursos.

Por ejemplo, si implementamos solo "Bloqueo de cuenta después de varios intentos fallidos", los atacantes pueden simplemente abusar de este control y simplemente bloquear miles de cuentas de usuario enviando una serie de intentos de fuerza bruta. Como resultado, esto resulta ser una DDoS y los usuarios legítimos sufrirán el acceso a sus recursos.

Por lo tanto, siempre se recomienda usar una combinación de los controles mencionados anteriormente según el contexto del requisito para evitar el impacto de los ataques de fuerza bruta.

    
respondido por el Sayan 14.06.2018 - 03:24
fuente
3

Para evitar ataques de fuerza bruta, puede utilizar los siguientes métodos:

ralentiza artificialmente los intentos de inicio de sesión a través de la suspensión.

Esto era algo común para los sitios web de PHP. El problema con esto es, por supuesto, que ocupa algunos recursos en su servidor web.

usar captchas

requiere que un inicio de sesión resuelva un captcha.

limitación de velocidad

puede hacer un límite de velocidad por IP, pero ... también hay NAT, lo que hace que esto sea algo incómodo para algunos usuarios finales. Además, puede utilizar otros tipos de huellas digitales del dispositivo para no bloquear a demasiados usuarios.

autenticación de dos factores

Incluso puedes hacer esto por correo electrónico. algunos usuarios finales odian esto porque para iniciar sesión también necesita revisar sus correos ahora.

bloquea la cuenta después de 10 intentos, luego solicita a los usuarios que desbloqueen la cuenta a través del correo electrónico

es algo factible, pero esto significa que un atacante puede bloquear cuentas constantemente.

Editar: también hay cierto potencial de suplantación de identidad (gracias por el comentario)

hashcash

Nunca fue realmente adoptado ampliamente. Básicamente, le pide al cliente que "craquea" parcialmente un hash (usted especifica los primeros n bits y requiere que el cliente encuentre una entrada cuyo hash comience con esos n bits). Puedes hacer esto arbitrariamente difícil (como 1s en una computadora moderna).

desventajas: requiere más potencia de CPU del cliente, también es necesario verificar el hash que también requiere cierta potencia de CPU del servidor (aunque mucho, mucho menos que del cliente).

externalice el problema

Usa login a través de facebook, google o lo que sea. Siempre una opción ... puede que no siempre sea tu mejor opción.

No a todos les gusta esto porque puede terminar filtrando información sobre qué sitios visitan sus usuarios en esos sitios. (también podría no ser compatible con GDPR si está en la UE)

Detección "humana"

Aparte de los captchas, existen otros métodos para diferenciar a los robots de los seres humanos, como verificar su agente de usuario, consultar referencias, verificar qué funciones admite su navegador, etc., pero probablemente sea más fácil usar un proveedor de CAPTCHA existente que ya lo hace. de todas formas.

Puede ser realmente creativo con esto, como apilar divs uno sobre otro y diseñarlos con CSS y modificarlos con JS de manera que el "inicio de sesión" correcto sea el único visible y los otros no, lo que significa que un bot tiene un es difícil decir qué "inicio de sesión" es el correcto. Es divertido idear métodos para diferenciar a los robots de los humanos ... pero, una vez más, generalmente es más fácil utilizar un servicio CAPTCHA existente.

También ... con la accesibilidad en mente ... solo la imagen CAPTCHAs hará que sea imposible para algunas personas usar. Los buenos proveedores de CAPTCHA al menos también proporcionan CAPTCHA de audio. Entonces ... no crees tu propio CAPTCHA. Luego están los lectores de pantalla ... que su "detección humana" podría interferir. (Hm, no estoy seguro si usar un proveedor externo de CAPTCHA es compatible con GPDR?)

aceleración a nivel de red

Puedes hacer esto si tienes la infraestructura correcta. Si tiene un proveedor de alojamiento, es posible que ya lo hagan de todos modos después de demasiadas solicitudes (como protección general de DoS).

iphoneypotting

No estoy seguro si alguien hace esto en la práctica, pero esencialmente una vez que estás seguro de que una cuenta está siendo obligada por la fuerza bruta, uno de sus intentos de inicio de sesión tiene éxito y les da un sitio web simulado que convence al robot de que el inicio de sesión fue exitoso pero no En realidad exitoso.

    
respondido por el mroman 15.06.2018 - 14:35
fuente
1

Hay muchos métodos mediante los cuales puedes intentar frustrar el forzado brutal: La autenticación de dos factores, los CAPTCHA, la limitación de velocidad y, por supuesto, los requisitos de complejidad de pw son algunos.

La respuesta de "qué debo usar" se basará en su modelo de riesgo; Si usted es un sitio pequeño que no vale la pena el tiempo y el esfuerzo para piratear, las reglas de complejidad y / o limitación de velocidad pueden ser más que suficientes. Si está ejecutando un sitio de comercio electrónico como Amazon con toneladas de datos confidenciales, 2FA puede ser más relevante.

Primero debe considerar qué es posible hacer, y luego dentro de lo que es razonable hacer, dados sus recursos y nivel de riesgo.

    
respondido por el Angelo Schilling 14.06.2018 - 00:19
fuente

Lea otras preguntas en las etiquetas