Sono sufficienti reCAPTCHA per evitare tentativi di password brute-force?

23

Mi chiedevo se reCAPTCHA fosse abbastanza strong da impedire BruteForce dai bot o se avessi bisogno di aggiungere più sicurezza, come inviare una mail univoca all'utente ogni 5 tentativi che qualcuno provasse ad accedere all'account e bloccare l'account mentre la posta non è selezionata.

L'obiettivo è impedire l'identificazione automatica delle password su un sito Web.

    
posta JohnnyBgud 14.12.2015 - 13:38
fonte

7 risposte

20

ReCaptcha è eccezionale dal punto di vista del cliente, ma non è perfetto.

La tecnica di posta che si menziona si chiama blocco dell'account ed è un deterrente molto efficace contro gli attacchi di forza bruta. Lo implementerei perché è un livello aggiunto indipendente dal lato client completamente.

Un'altra misura che puoi implementare è la limitazione. Non è realistico per un essere umano inviare 2 richieste entro 1 secondo (o qualsiasi valore tu ritenga appropriato), quindi limiti la frequenza delle connessioni accettate. In iptables faresti qualcosa del genere:

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

(Esempio tratto da debian-administration.org .) Ciò limiterà le richieste al porto 22 a 3 / minuto, qualsiasi altra richiesta verrà eliminata. Questo può essere utile per altre operazioni oltre alle routine di accesso.

    
risposta data 14.12.2015 - 13:59
fonte
10

Un CAPTCHA è normalmente pensato per garantire che l'input "utente" provenga da una persona reale.

Sebbene possa aiutare a prevenire attacchi automatici contro un meccanismo di accesso al sito Web, è probabile che abbia un impatto negativo sull'esperienza utente (nome utente, password e CAPTCHA) a meno che il sistema possa essere configurato per abilitare il CAPTCHA solo dopo uno o due accessi non riusciti .

Il meccanismo alternativo per il controllo degli attacchi senza compromettere l'esperienza utente è un criterio di controllo accessi sul sito Web che include un limite al numero di tentativi di accesso non riusciti durante un determinato periodo di tempo, seguito da una durata di blocco. Ciò contribuirà a sconfiggere sia gli attacchi automatizzati che mirati (ad esempio gli attacchi basati su indentazione delle password basati sugli utenti e gli attacchi automatici), quindi in pratica ottieni 2 per 1.

Se imporre un blocco temporizzato (ovvero un reset automatico dopo dire 10 minuti) o se bloccare l'account e attendere che l'utente valido risponda in qualche modo è una chiamata di giudizio basata sul particolare scenario, ad es. cose come la sensibilità dei dati , la dimensione della popolazione di utenti, il numero del personale di help desk disponibile ecc.

La notifica all'utente di più accessi non riusciti potrebbe aiutare a rendere l'utente consapevole dei potenziali tentativi di accesso non autorizzato, ma potrebbe anche comportare numerose chiamate di assistenza indesiderate, quindi imposta la barra a un livello che funzioni per te.

    
risposta data 14.12.2015 - 14:01
fonte
3

reCAPTCHA rende sicuramente difficile indovinare la password, ma non impossibile. Gli hacker installano siti con gadget (giochi, download, ecc.), Che sono protetti da captcha e reindirizzeranno il tuo captcha lì. Gli utenti che cercano di ottenere il loro download risolveranno i tuoi captcha, consentendo agli hacker di utilizzarlo per indovinare un'altra password. Il blocco dell'account è più efficace, poiché solo il proprietario dell'e-mail può sbloccare l'account. È anche più dirompente per gli utenti.

Ricorda che sia il captcha che il blocco dell'account sono terribili esperienze utente e il tuo sito dovrebbe essere abbastanza buono / unico da poter permettersi tali tecniche. Dai ai tuoi utenti almeno un paio di tentativi prima di chiedere di risolvere un captcha per la prima volta, altrimenti gli utenti possono semplicemente passare al sito successivo che offre gli stessi servizi del tuo.

    
risposta data 14.12.2015 - 16:01
fonte
1

Un altro mezzo di sicurezza aggiuntivo è l'autenticazione a 2 fattori. È qui che gli utenti registrano il loro numero di telefono cellulare (mobile) e ogni volta che effettuano l'accesso il server invia un codice tramite un messaggio SMS che deve essere inserito dall'utente prima di ottenere l'accesso. Come per tutte le cose di sicurezza, questo aggiunge uno strato di fastidio per l'utente, ma è estremamente efficace.

Un mezzo di sicurezza molto più semplice consiste nel limitare password brevi / facili. Se il tuo utente è autorizzato a rendere "1234" la propria password, è molto più probabile che un bot lo indovini di "ihatelongpasswordssomuch"

    
risposta data 14.12.2015 - 17:49
fonte
1

Ho visto siti che utilizzano un CAPTCHA dopo un numero "basso" di tentativi di password errati (come 3) e quindi bloccano l'account per un periodo di tempo (ad esempio un'ora) dopo un numero "alto" di errori tentativi di password (come 10). In pratica, questo significa che gli attacchi di forza bruta sono limitati a un massimo di 10 tentativi all'ora, eseguiti da un operatore umano - non molto allettanti dal punto di vista di un attaccante.

    
risposta data 14.12.2015 - 23:01
fonte
1

Molte risposte sembrano implicare che reCAPTCHA verifichi che l'input sia umano ... non lo è. C'è un gran numero di OCR open source utilità (sia lato client che lato server) che consentono a qualsiasi script automatico di analizzare il testo da un'immagine. Quindi qualsiasi cosa basata su testo, anche calcoli, può essere facilmente falsificata.

L'OCR aggiunge molto tempo per ogni ipotesi e richiede anche molte più risorse (potenza di calcolo), ma alla fine ritarda l'aggressore. Non dovrebbe quindi mai essere usato come l'unico meccanismo difensivo, solo ovviamente uno è meglio di niente. Se possibile, utilizzare le nuove verifiche basate sull'immagine (selezionare tutte le immagini che mostrano un fiore). I meccanismi basati sull'input (come Google sta attualmente testando) sono anche facilmente falsificati analizzando correttamente l'hardware.

Vorrei anche consigliare di mantenere una cronologia di IP, user-agent, qualsiasi cosa identificabile quando una password errata è stata inserita per qualsiasi utente. Se fossi costretto a forzare un utente, vorrei alternare molti utenti, usando molti proxy diversi e usando uno spoofer user-agent per farlo sembrare casuale, ma con informazioni sufficienti tutto può essere rilevato e bloccato.

    
risposta data 14.12.2015 - 23:40
fonte
1

reCaptcha è abbastanza buono ma non perfetto.

Uno strumento come fail2ban è un altro modo efficace. Configurare il sito Web per registrare errori e quindi configurare fail2ban per monitorare il registro e quando rileva il numero x di errori da un indirizzo IP in un determinato periodo di tempo, aggiunge una regola del firewall in modo che il server passi offline a quell'indirizzo ip per un quantità di tempo predeterminata.

Vantaggi:

  • Non devi pagare per la larghezza di banda (anche se probabilmente piccola)
  • Nessuna risorsa del server del sito web e del database consumati come indirizzo IP continua a provare
  • Blocca qualsiasi altro tentativo di hacking che potrebbe accadere da quell'indirizzo ip
  • Usalo per altri tentativi di hack

Svantaggi:

  • Se ti metti a letto, potrebbe essere una sfida avere il tuo IP bloccato per un certo periodo, ma questo può essere aggirato aggiungendo i tuoi IP a una lista bianca.
  • istanze
  • in cui gli ip sono condivisi da più utenti. Ciò potrebbe svantaggiare alcuni utenti, ma se si tratta di un luogo grande come un campus o una rete aziendale, i loro sistemi si spera che possano rilevare anche qualcosa. È un tentativo di hacking.
risposta data 15.12.2015 - 04:54
fonte

Leggi altre domande sui tag