¿ReCAPTCHA es suficiente para evitar conjeturas de contraseña de fuerza bruta?

23

Me preguntaba si reCAPTCHA era lo suficientemente fuerte como para evitar que BruteForce los bots o si necesitaba agregar más seguridad, como enviar un correo único al usuario cada 5 intentos para que alguien intente iniciar sesión en la cuenta y bloquear la cuenta mientras el correo no está marcado.

El objetivo es evitar la adivinación automática de contraseñas en un sitio web.

    
pregunta JohnnyBgud 14.12.2015 - 13:38
fuente

7 respuestas

20

ReCaptcha es excelente desde el punto de vista del cliente, pero no es perfecto.

La técnica de correo que mencionas se llama bloqueo de cuenta y es un elemento disuasivo muy eficaz contra los ataques de fuerza bruta. Lo implementaría porque es una capa adicional independiente del lado del cliente por completo.

Otra medida que puedes implementar es la regulación. No es realista que un humano envíe 2 solicitudes en 1 segundo (o cualquier valor que considere apropiado), por lo que limita la frecuencia de las conexiones aceptadas. En iptables harías algo como esto:

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

(Ejemplo tomado de debian-administration.org .) Esto limitará las solicitudes a puerto 22 a 3 / minuto, cualquier otra solicitud será eliminada. Esto puede ser útil para otras operaciones además de las rutinas de inicio de sesión.

    
respondido por el Purefan 14.12.2015 - 13:59
fuente
10

Normalmente, un CAPTCHA está destinado a garantizar que la información de "usuario" sea de una persona real.

Aunque podría ayudar a prevenir ataques automatizados contra un mecanismo de inicio de sesión en un sitio web, es probable que tenga un impacto negativo en la experiencia del usuario (nombre de usuario, contraseña y CAPTCHA) a menos que el sistema pueda configurarse para habilitar solo el CAPTCHA después de uno o dos inicios de sesión fallidos .

El mecanismo alternativo para controlar los ataques sin comprometer la experiencia del usuario es una política de control de acceso en el sitio web que incluye un límite en el número de intentos fallidos de inicio de sesión durante un período de tiempo determinado, seguido de una duración de bloqueo. Esto ayudará a derrotar tanto los ataques automatizados como los dirigidos (es decir, los ataques de adivinación de contraseñas basados en usuarios y los ataques automatizados), por lo que, de hecho, obtiene 2 por 1.

Si se debe imponer un bloqueo temporizado (es decir, un restablecimiento automático después de unos 10 minutos) o si se debe bloquear la cuenta y esperar a que el usuario válido responda de alguna manera es una llamada de evaluación basada en el escenario particular, es decir, cosas como la sensibilidad de los datos , tamaño de la población de usuarios, número de personal de la mesa de ayuda disponible, etc.

Notificar al usuario sobre múltiples inicios de sesión fallidos podría ayudar a que el usuario esté al tanto de posibles intentos de acceso no autorizado, pero también podría dar lugar a muchas llamadas de asistencia no deseadas, así que establezca la barra a un nivel que funcione para usted.

    
respondido por el R15 14.12.2015 - 14:01
fuente
3

reCAPTCHA ciertamente hace que la contraseña sea más difícil, pero no imposible. Los hackers configuran sitios con objetos valiosos (juegos, descargas, etc.), que están protegidos por captcha, y redirigen su captcha allí. Los usuarios que intenten obtener su descarga resolverán tus captchas, lo que permitirá a los piratas informáticos usarlo para adivinar otra contraseña. El bloqueo de la cuenta es más efectivo, ya que solo el propietario del correo electrónico puede desbloquear la cuenta. También es más perjudicial para los usuarios.

Tenga en cuenta que tanto el cierre de captcha como el bloqueo de cuenta son experiencias terribles para el usuario, y su sitio debe ser bastante bueno / único para poder costear tales técnicas. Dele a sus usuarios al menos un par de intentos antes de que solicite resolver un captcha por primera vez; de lo contrario, los usuarios simplemente podrán pasar al siguiente sitio que ofrece los mismos servicios que usted.

    
respondido por el Dmitry Grigoryev 14.12.2015 - 16:01
fuente
1

Otro medio de seguridad adicional es la autenticación de 2 factores. Aquí es donde los usuarios registran su número de teléfono celular (móvil) y cada vez que inician sesión, el servidor envía un código a través de un mensaje SMS que debe ingresar el usuario antes de obtener acceso. Al igual que con toda la seguridad, esto agrega un nivel de molestia para el usuario, pero es extremadamente efectivo.

Un medio de seguridad mucho más simple es restringir contraseñas cortas / fáciles. Si su usuario puede hacer de "1234" su contraseña, entonces es mucho más probable que un bot adivine eso que "ihatelongpasswordssomuch"

    
respondido por el Dean MacGregor 14.12.2015 - 17:49
fuente
1

He visto sitios que usan un CAPTCHA después de un número "bajo" de intentos de contraseña incorrecta (como 3) y luego bloquean la cuenta por un período de tiempo (como una hora) después de un número "alto" de incorrecto intentos de contraseña (como 10). De hecho, esto significa que los ataques de fuerza bruta están limitados a un máximo de 10 conjeturas por hora, realizadas por un operador humano, no muy atractivas desde el punto de vista del atacante.

    
respondido por el Micheal Johnson 14.12.2015 - 23:01
fuente
1

Muchas respuestas parecen implicar que reCAPTCHA verifica que la entrada es humana ... no lo hace. Hay un montón de código abierto OCR utilidades (tanto para el cliente como para el servidor) que permiten que cualquier script automatizado analice el texto de una imagen. Por lo tanto, cualquier cosa basada en texto, incluso cálculos, se puede falsificar fácilmente.

OCR agrega mucho tiempo para cada conjetura y también requiere muchos más recursos (potencia de cálculo), pero al final solo retrasa al atacante. Por lo tanto, nunca debe usarse como el único mecanismo de defensa, solo que, por supuesto, uno es mejor que ninguno. Si es posible, use las nuevas verificaciones basadas en imágenes (seleccione todas las imágenes que muestren una flor). Los mecanismos basados en insumos (como Google está probando actualmente) también son fácilmente spoofed analizando tu hardware correctamente.

También recomendaría mantener un historial de IP, agentes de usuario, cualquier cosa identificable cuando se haya introducido una contraseña incorrecta para cualquier usuario. Si tuviera que imponer una fuerza bruta a un usuario, alternaría entre muchos usuarios, utilizando varios proxies diferentes y utilizando un spoofer de agente de usuario para que pareciera aleatorio, pero con suficiente información todo se puede detectar y bloquear.

    
respondido por el Stephan Bijzitter 14.12.2015 - 23:40
fuente
1

reCaptcha es bastante bueno pero no es perfecto.

Una herramienta como fail2ban es otra forma efectiva. Configure el sitio web para registrar fallas y luego configure fail2ban para monitorear el registro y cuando detecte x número de fallas de una dirección IP en un tiempo establecido, agrega una regla de firewall para que el servidor se desconecte de esa dirección IP para una cantidad de tiempo predeterminada.

Ventajas:

  • No tiene que pagar por el ancho de banda (aunque probablemente sea pequeño)
  • No se están consumiendo recursos del servidor del sitio web ni de la base de datos ya que la dirección IP sigue intentando
  • Bloquea cualquier otro intento de pirateo que pueda estar ocurriendo desde esa dirección IP
  • Úsalo para otros intentos de pirateo diferentes

Desventajas:

  • Si se arruina, podría ser un desafío tener su IP bloqueada durante un período, pero esto puede solucionarse agregando su IP a una lista blanca.
  • instancias donde los ip son compartidos por múltiples usuarios. Esto puede poner en desventaja a algunos usuarios, pero si se trata de un lugar grande como un campus o una red corporativa, es de esperar que sus sistemas también detecten algo. Es un intento de hackeo.
respondido por el Trevor 15.12.2015 - 04:54
fuente

Lea otras preguntas en las etiquetas