Domanda:
Password errata - numero di tentativi - qual è un buon numero da consentire?
user93353
2016-10-09 17:32:13 UTC
view on stackexchange narkive permalink

La maggior parte dei siti software & sembra avere un blocco automatico o un blocco temporale predefinito dopo 3 tentativi sbagliati.

Ritengo che il numero potrebbe essere molto più alto: non consentire nuovi tentativi serve principalmente a prevenire attacchi di forza bruta automatizzati, credo. La probabilità che un attacco di forza bruta ottenga la password corretta in 4 tentativi è quasi la stessa di ottenerla in 3 tentativi, ovvero molto molto piccoli. Penso che questo possa essere mantenuto molto più alto senza compromettere la sicurezza.

So che esistono altre strategie come aumentare il tempo per riprovare dopo ogni nuovo tentativo - ma sto chiedendo una strategia semplice come il blocco dopo "n" tentativi - qual è un buon massimo "n"?

Questo dipende davvero dall'esperienza utente che desideri fornire.I tuoi utenti si aspettano un'elevata sicurezza dei loro account o accessi facili.Non possiamo calcolarlo per te e anche dal lato della sicurezza, dipende da molti fattori.Ad esempio, qual è la tua giustificazione per non bloccarti dopo 1 tentativo fallito?Una volta che lo capisci chiaramente per te stesso, la giustificazione per un numero più alto diventa più chiara.
Non limiterei affatto i tentativi per account per una tipica applicazione Internet, il rischio che un utente malintenzionato blocchi l'utente reale è troppo grave.Preferirei CAPTCHA basati su account e blocco basato su IP.Anche se i token una tantum inviati tramite e-mail potrebbero essere una soluzione per consentire all'utente legittimo di accedere anche durante un attacco.
@CodesInChaos: Non riuscire a limitare i tentativi di accesso è un enorme rischio per la sicurezza!Invece dovresti mitigare il sovraccarico del supporto aggiungendo un secondo fattore di autenticazione e / o aumentando i ritardi tra gli accessi.I CAPTCHA possono essere usati come secondo fattore, ma sono un'esperienza utente orribile per uso generale e probabilmente saranno un vero e proprio turn-off per i clienti.
@JulianKnight Dover rispondere ai CAPTCHA mentre il tuo account è sotto attacco è certamente meno fastidioso che non essere in grado di accedere affatto.I ritardi per account si comportano come un blocco per account, impedendo all'utente legittimo di accedere. Il secondo fattore è utile, ma pochi siti Web hanno la leva per costringere l'utente a utilizzarlo.
@CodesInChaos: sembri concentrato su un problema su diversi.Il DOS dovuto al fatto che qualcun altro ha bombardato il tuo login è solo uno scenario di attacco e, direi, non il più comune.I semplici tentativi di intrusione sono una ** molto ** più comune minaccia.L'impossibilità di limitare i tentativi di accesso non riusciti è una delle prime cose su cui verrai richiamato in un audit di sicurezza (ad es. Un Pen test o un IT Health Check).È davvero pericoloso.
Il requisito PCI è 5
solo come nota a margine: anche tre tentativi possono essere molti, se l'attaccante può provare le password su * ogni * account.Supponiamo che l'1% di ottenere la password corretta nei primi tre tentativi e di provare 1000 account -> 10 accessi riusciti (e 990 persone bloccate dai loro account).Limitare i tentativi per IP potrebbe quindi essere saggio (indipendentemente da altri meccanismi)
Come altri hanno notato, ci sono anche modi per indovinare la password: provare tutte le password per un singolo utente o provare le stesse password per tutti gli utenti.Avendo 4 tentativi prima del blocco / ritardo, consenti 1 ipotesi in più * per utente *, il che significa milioni di tentativi extra in una grande applicazione.
Personalmente ritengo che da qualche parte fino a 10 funzioni per la maggior parte delle configurazioni alfanumeriche (quindi non un PIN a 4 cifre).Realisticamente, se un utente non riesce a ricordare la propria password dopo 10 tentativi, l'hanno dimenticata e se un utente malintenzionato può indovinare la password sotto di essa, l'utente ha una password davvero cattiva ...
Dipende dai requisiti della tua password.Più complessi e unici sono i requisiti, meno è probabile che l'utente ricordi la tua password.Potresti rendere la tua esperienza utente negativa se le persone non possono nemmeno entrare nel tuo servizio e renderlo incline all'ingegneria sociale, come menzionato nella risposta principale.
"La maggior parte dei siti e del software sembra avere un blocco automatico o un blocco temporale predefinito dopo 3 tentativi sbagliati."Citazione necessaria.Dubito * seriamente * che la maggior parte dei principali siti blocchino il tuo account così rapidamente.So per certo che Google non lo fa (o almeno non lo sapeva pochi mesi fa).
C'era una volta una dozzina di dispositivi collegati al mio account Exchange aziendale e ogni volta che cambiavo la mia password (richiesta ogni 45 giorni, che è tutta un'altra discussione sul perché è terribile), tutti i miei dispositivi avrebbero provato ariautentica entro un minuto e finisci per bloccare il mio account.Alla fine ho dovuto costruire una procedura per disabilitare i dispositivi, cambiare la mia password, quindi accenderli tutti uno per uno mentre fissavo la password su ciascuno di essi.Ma abbastanza lentamente da non far scattare il blocco automatico.IMO, il blocco automatico degli account basato esclusivamente sul conteggio dei tentativi è una cattiva esperienza utente.
Per un singolo nome utente o una singola sorgente IP, infiniti tentativi, intervallati ad esempio da 3 secondi, sono molto più del necessario per sbarazzarsi degli attacchi automatici.Il blocco "3tries" era ed è una regola stupida che qualcuno ha creato senza alcun pensiero.
@jpmc26 Questo è certamente vero per la maggior parte delle banche, anche se molte di esse hanno molte altre restrizioni sulle password dubbie dovute al codice legacy: cose come la limitazione del set di caratteri e la lunghezza della password non sono affatto rare.
@jpaugh - sì, tutte le banche in cui ho il blocco dei conti dopo 3,4 tentativi.
Sei risposte:
mattdm
2016-10-09 22:40:48 UTC
view on stackexchange narkive permalink

A meno che tu non abbia mezzi separati per limitare l'accesso al modulo di login stesso, una buona linea di base è non avere un limite rigido . Questo perché è fin troppo facile per qualcuno essere completamente bloccato fuori dal proprio account.

Questo è un male a causa della negazione del servizio, ovviamente, ma è anche un problema di sicurezza in sé. Aumenterà le richieste di supporto da parte di persone che chiedono lo sblocco dei propri account e le persone che effettuano lo sblocco si abitueranno e gli attacchi di ingegneria sociale che iniziano con "ehi, il mio account è bloccato" diventeranno molto più facili.

Estendi invece i timeout - ma non all'infinito; quanto basta per limitare il numero di tentativi a una quantità ragionevole nel tempo, dati i requisiti di complessità della password.

Concordato.Una buona idea è anche quella di avere anche politiche password dinamiche * E * restrizioni dinamiche a seconda dell'account.Quindi, ad esempio, un account utente potrebbe avere un sistema che incorrerebbe in un tempo di attesa di tipo 15 minuti su 90 tentativi (90 ° tentativo = 15 minuti di attesa, quindi ogni tentativo oltre che incorrerà in altri 15 minuti), ma consentirebbe anche che il tempo di blocco siabypassato da un captcha.Ma un amministratore o un account con privilegi elevati potrebbe avere un blocco di 24 ore dopo il decimo tentativo e nessun bypass captcha.(piuttosto, è richiesto il tempo di attesa captcha PLUS).
Per l'incorporazione di account una sorta di valore memorizzato, licenze, prodotti o qualsiasi cosa di valore monetario, una buona idea è calcolare il valore monetario dell'account e quindi incorrere in limitazioni basate su questo.Quindi un account senza valore come 5 € ha limiti di tentativi molto alti, mentre uno di alto valore con come 500 € si bloccherà molto presto e con limiti piuttosto lunghi.Ma progettare bene il sistema in modo che un utente malintenzionato non possa utilizzarlo per sondare la valutazione degli account.Questo può essere utilizzato da un valore fuzz che randomizzerà un po 'il blocco temporale, quindi un utente malintenzionato deve utilizzare molti tentativi per scoprire il valore.
Questo non risponde alla domanda (l'OP ha detto: blocco automatico * o * blocco temporale).
"Invece, estendi i timeout - ma non all'infinito" - l'implementazione del timeout come bucket di token lo farà sembrare un po 'come un limite finito con un blocco, tranne per il fatto che non verrai bloccato, devi solo aspettarel'intervallo del token.Sospetto (ma non ho prove) che il numero 3 si verifichi perché è un tentativo di digitare la password errata (errore di battitura o ricordata male), seguito da un tentativo di ripetizione, seguito da un tentativo molto attento.Questo "dovrebbe" essere veloce.Se ancora non riesci a farlo subito, è probabile che qualcosa sia seriamente sbagliato (ad es.
@sebastiannielsen Se la password di un utente è nelle 200 password più comuni, ricevo 2 €.Se è tra i 100 più comuni, ricevo 5 €.Se è tra i 50 più comuni, ricevo 8 €.Se è tra i 10 più comuni, ottengo 50 € ... Se fossi un cracker (hacker criminale), saprei se eseguirei un bot attraverso un carico di account per un frequente pagamento basso (è praticamenteuna lotteria a basso rischio da cui puoi effettivamente ottenere * più soldi * rispetto ai tuoi costi!).
@sebastiannielsen Il che significa che posso provocare il caos facendo eseguire al mio bot dieci ipotesi sbagliate per tutti gli account che penso possano essere admin.(o solo tutti gli account, poiché il costo è economico.) Non avrò accesso, ma nemmeno gli amministratori legittimi.: \
"Invece, estendi i timeout - ma non infinitamente" - sono tecnicamente bloccato dal mio computer aziendale perché hanno implementato timeout quadratici e non posso continuare a provare a variare la vaga idea di ciò che ho inserito.
@durum Sì, "quadratico" diventa "infinito" per tutti gli scopi pratici _molto velocemente_.
jojoob
2016-10-09 18:39:22 UTC
view on stackexchange narkive permalink

A mio parere, non è possibile rispondere in generale. Dipende dalle tue esigenze in termini di usabilità, sicurezza e altri parametri.

Uno dei fattori principali è l'ampiezza della gamma di possibili password nel tuo scenario specifico. Supponendo che un utente malintenzionato non abbia ulteriori informazioni sulla password e debba forzare la combinazione giusta, ha una probabilità di 1 rispetto al numero di possibili combinazioni di password per indovinare la password specifica.

Ad esempio con una cifra di 4 Numero PIN ci sono 10.000 combinazioni possibili (10 ^ 4). La possibilità di indovinare una combinazione specifica con un tentativo è compresa tra 1 e 10.000 o 0,01%. Consentire due tentativi raddoppia la possibilità di indovinarlo fino allo 0,02%.

Sta a te trovare il giusto compromesso per il tuo scenario specifico. Ma tieni presente che la forzatura bruta non è l'unico attacco metodo che potresti dover considerare. Alcuni aggressori potrebbero avere informazioni aggiuntive sul bersaglio e possono quindi aumentare le possibilità di indovinare provando una combinazione più probabile (ad es. Se una persona presa di mira utilizza informazioni personali all'interno della sua password e l'attaccante ne è a conoscenza).

In realtà è _esattamente_ 0,0002 (o 0,02%).Se l'attaccante sceglie in modo uniforme e casuale la seconda ipotesi, e quindi ha qualche possibilità di ripetere la prima ipotesi, la sua possibilità di indovinare correttamente in due tentativi sarebbe 0,00019999, ma in realtà, poiché può escludere la prima combinazione indovinata, la loro possibilità èun po 'più in alto di quello.Nello specifico, 0,00000001 superiore, che lo porta esattamente a 0,0002.Penso che sia l'aumento a cui stavi pensando.
Hm, pensavo di avere una possibilità di 0.0001 di indovinare al primo tentativo.E per il secondo tentativo ho una possibilità da 1 a 9.999 = 0.00010001 ... e in somma è 0,020001.Non è vero?Non sono così esperto nel calcolo delle probabilità.
@StackTracer Non lo è.Con 4 possibili combinazioni, la tua possibilità di indovinare è del 25% al primo tentativo e del 50% al secondo tentativo (dato che hai provato metà delle possibilità).La possibilità di indovinare la password ** esattamente ** al secondo tentativo ** dopo ** un primo errore è del 33%, ma non ha importanza nell'intera immagine.
@jojoob Secondo i tuoi calcoli, hanno una probabilità del 100,01% di indovinare correttamente la password se provano le password 6322.E una probabilità del 978,75% se provano tutti i 10000.
Possibilità di @jojoob, 9999/10000 di fallire al primo tentativo, 9998/9999 di fallire al secondo tentativo.Moltiplicali insieme per ottenere un totale di 9998/10000 possibilità di fallire dopo due tentativi, o 2/10000 = 0,0002 = 0,02% di successo dopo due tentativi.
@ilkkachu grazie per la spinta.Modificherò la risposta ...
@ilkkachu intendi una probabilità di successo dello 0,02% in 2 o meno tentativi?Supponi che la possibilità di fallimento sia 0 o 1 una volta ottenuto un singolo successo (0 se ti ricordi di usare il pin riuscito, 1 se continui a provare ogni altro pin).
Julian Knight
2016-10-09 18:34:39 UTC
view on stackexchange narkive permalink

Il numero considerato "sicuro" è abbastanza arbitrario perché il rischio si basa sul valore dei dati, sul livello di complessità consentito e applicato, sulla lunghezza minima / massima della password e possibilmente su altre misure di sicurezza che potresti aver implementato.

Il numero tipico è compreso tra 3 e 10. Se si implementano intervalli di tempo crescenti tra i tentativi non riusciti, è possibile andare verso l'estremità più alta ma solo se si consente / incoraggia o impone una lunghezza della password relativamente elevata & complessità.

Quello che devi ricordare è che la maggior parte delle persone non crea password casuali. Nel Regno Unito, ad esempio, il pin più comune è il 1966 e un altro comune è il 1066, entrambi famosi della storia. C'è di più tra cui scegliere in una parola, ovviamente, ma le persone spesso finiscono per avere parole comuni. Quindi consentire 4 tentativi su una password breve è più efficace di quanto si possa pensare, specialmente se il sistema consente ulteriori tentativi dopo un timeout.

Ovviamente, su molti siti questo potrebbe non avere molta importanza se il rischio e la sensibilità dei dati è bassa.

Oltre a estendere i timeout, un altro buon modo per migliorare la sicurezza è richiedere un secondo fattore di autenticazione dopo alcuni tentativi falliti. Spesso si invia un codice tramite e-mail o telefono.

È inoltre possibile impedire tentativi di accesso da reti diverse in breve successione e soprattutto da località diverse. È anche una buona idea registrare e controllare i tentativi di accesso non riusciti.

Queste strategie aiutano a evitare alti livelli di chiamate all'assistenza clienti riducendo al minimo i rischi.

La mia banca (isbank) non ammette password che iniziano con 19.
"una buona idea per registrare e controllare gli accessi non riusciti" - Non sei sicuro di voler registrare anche _passwords_ non riuscite?Parola di avvertimento ... se le password non riuscite sono state registrate e il registro è stato violato, l'hacker potrebbe potenzialmente ottenere l'accesso a molti "indizi" di password da utenti legittimi che avevano semplicemente digitato erroneamente uno o due caratteri nella loro password.
No, generalmente non dovresti registrare nemmeno le password sbagliate in quanto ciò può avere effetti collaterali indesiderati come la visualizzazione di password * quasi * corrette.Non bene.Questo può essere un esercizio utile, ma solo se fatto con molta attenzione e se è necessario proteggere e gestire l'output con molta attenzione, metterlo nei log generali non è una buona idea.
Theraot
2016-10-10 19:23:03 UTC
view on stackexchange narkive permalink

Problema

Nota iniziale: sono di parte nei confronti dei server web, ma molto di ciò che viene detto qui si applicherà ad altri tipi di servizi.

Il problema è Denial of Service . Può accadere in due modi: 1) Gli aggressori eseguono la forza bruta in modo tale da saturare il server e ora nessuno può accedere al servizio. 2) Gli utenti (malintenzionati o meno) potrebbero provare troppe volte, determinando il blocco dell'accesso.

Altre considerazioni

  1. Dire all'utente se l'errore è nel nome utente o nella password consentirà a un utente malintenzionato di utilizzare nomi utente a forza bruta / dizionario. Anche se questo va contro l'usabilità, dovresti optare per la sicurezza se gli account sono privati ​​o anonimi per impostazione predefinita ※.

  2. Dire all'utente che l'account è bloccato rendere più facile per gli aggressori causare problemi bloccando molti account (che è una forma di negazione del servizio e probabilmente porterà a molti ticket di supporto). Inoltre, gli account che non esistono non possono essere bloccati, consentendo agli aggressori di scoprire gli account con questo metodo. Puoi prendere in considerazione l'idea di deridere il blocco sugli account falsi.

  3. La scoperta degli account non è solo metà dell'attacco di forza bruta / dizionario, ma può anche essere utile nel futuro social engineering.

  4. Una variante dell'attacco forza bruta / dizionario è provare la stessa password (di solito statisticamente comune) contro un gran numero di nomi utente.

※: I motori di ricerca saranno in grado di indicizzare i nomi degli utenti? Se lo faranno, optare per l'usabilità (gli aggressori hanno comunque un elenco di nomi utente validi nella cache del motore di ricerca). Evita di consentire ai motori di ricerca di accedere a tali informazioni in siti in cui sapere chi ha un account può essere considerato informazioni sensibili.

Possibili soluzioni

Ci sono alcune cose comuni da provare per risolvere il problema :

  • Aggiungi un CAPTCHA
  • Aggiungi un'ora per il nuovo tentativo
  • Blocca l'account
  • Blocca l'origine
  • Autenticazione a due fattori

Va ​​notato che solo il blocco dell'IP a livello di firewall o di configurazione del server web avrà un impatto reale sul carico del server. Tuttavia, se stai bloccando l'origine solo quando accoppiato con l'account specificato, la logica sarà nel codice lato server. È anche vero per il resto delle soluzioni che richiedono codice lato server.

Queste soluzioni si basano sul codice lato server e quindi non proteggeranno realmente il server da un attacco flood. Ciò significa che l'applicazione principale di questi metodi è come deterrente .


Vocabolario:

Per il contesto di questo post, queste parole hanno il significato qui menzionato:

  • "Blocca": "impedisce l'accesso fino a quando non viene fornita un'ulteriore autenticazione", per fornire ulteriori mezzi di autenticazione per seguire passaggi simili - se non uguali - a quelli forniti agli utenti che hanno dimenticato la password.

  • "Origine": l'IP, l'agente utente o altre tecniche che il server può utilizzare per identificare l'origine di una connessione. Se utilizzato, dovrebbe essere menzionato nell'informativa sulla privacy che il server registrerà tali informazioni.

  • "Terzo canale": Email, SMS, app dedicata o altro mezzo di riservatezza comunicazione al di fuori del controllo del server.

Va ​​anche notato che in questa definizione il tempo di riprova non è un blocco perché non richiede un'autenticazione aggiuntiva dal utente ma in attesa.

E, poiché non può essere ripetuto abbastanza volte , applica hash e salt le tue password.

CAPTCHA

Va ​​notato che non tutte le soluzioni CAPTCHA sono visive. Alcuni sono uditivi e anche altri sono testuali (ad esempio: "Quanti colori nell'elenco viola, pinguino, blu, bianco e rosso?").

Pro

CAPTCHA è facile da implementare utilizzando soluzioni di terze parti. L'uso di soluzioni di terze parti esternalizza anche il problema per rendere un CAPTCHA abbastanza forte.

Contro

L'utilizzo di un CAPTCHA può diventare un inconveniente per gli utenti legittimi che potrebbero avere problemi a digitare la password. L'attuale reCAPTCHA mitiga questo problema utilizzando l'analisi del comportamento per identificare gli utenti umani.

Un robot può risolvere il CAPTCHA tramite un'intelligenza artificiale intelligente o semplicemente chiedendo all'autore dell'attacco di risolverlo.

Riprova

Pro

Il tempo di riprova ha un vantaggio in quanto fa guadagnare tempo. Quindi, può essere combinato con una notifica su un terzo canale per avvisare il proprietario dell'account.

Quale azione può intraprendere l'utente? Puoi suggerire di utilizzare una password più complessa, ma questo non risolverà davvero il problema.

In alternativa, considera di dare all'utente l'opzione di negare l'accesso dalla macchina attaccante (cioè di bloccare la combinazione di origine e account) ※. Vedi "Bloccare l'origine".

※: Dovrebbe richiedere l'autenticazione e interessare solo l'account corrente. È necessario prestare attenzione nell'evitare qualsiasi difetto che possa portare a un account che blocca un altro account.

Contro

L'uso di un tempo di ripetizione riduce l'usabilità del servizio, in quanto diventa un inconveniente per utenti legittimi che potrebbero avere problemi a digitare la password. Questo è peggio del CAPTCHA in quanto è tempo di inattività cognitiva.

Gli attacchi di forza bruta / dizionario sono ancora possibili se l'aggressore esegue un tentativo una volta ogni ora circa. Le alternative per affrontare questo problema includono politiche di sicurezza per cambiare frequentemente la password (che l'utente potrebbe rendere inefficace scegliendo password simili) e IDS o altre analisi per rilevare gli aggressori (che potrebbero essere aggirati distribuendo l'attacco da più fonti - si spera che sia abbastanza costoso da essere esso stesso un deterrente).

Blocca l'account

Pro

È resistente contro la diffusione di un attacco nel tempo o origini multiple.

Svantaggi

Il blocco dell'account può comportare il blocco dell'account di un utente legittimo a causa del numero di tentativi falliti.

Inoltre, i tentativi falliti di un utente malintenzionato in una terza posizione bloccheranno l'utente legittimo. La combinazione del blocco dell'origine con il blocco dell'account consentirebbe un controllo più granulare. In questo caso, l'account verrebbe bloccato solo per l'origine da cui si sta tentando di accedere.

Gli attacchi possono comunque interessare il sistema inducendo utenti legittimi bloccati a contattare l'assistenza o a trovare un servizio alternativo.

Blocca l'origine

Pro

Bloccare un'origine, indipendentemente dall'account ha il vantaggio di consentire di fermare gli aggressori invece di punire gli account.

Contro

In richiederebbe al server di tracciare l'origine delle richieste e distinguere i tentativi falliti da quelli riusciti.

L'origine di un attacco può essere condivisa tra molti utenti (ad esempio in Internet cafè) e bloccare un'origine può significare bloccare gli utenti legittimi.

La combinazione del blocco dell'origine con il blocco dell'account consentirebbe un controllo più granulare. In questo caso, all'inizio l'origine sarebbe bloccata solo per l'account a cui sta tentando di accedere, tuttavia un'origine bloccata per molti account può essere bloccata a livello globale.

Autenticazione a due fattori

Tutte le varianti dell'autenticazione a due fattori sono forti deterrenti per la forza bruta / dizionario. Esistono due varianti principali:

  • Invia un codice tramite un terzo canale per consentire l'autenticazione. Non dovrebbe richiedere misure aggiuntive per prevenire la forza bruta di quel codice, perché è pensato per essere monouso e di breve durata.

  • Richiedi un codice da hardware / software dedicato chiave per l'autenticazione. La chiave deve fornire un codice monouso che autorizzi l'autenticazione.

Pro

L'autenticazione a due fattori è l'unica soluzione che può effettivamente rendere bruta- attacco forzato / dizionario inefficace. Ciò si ottiene richiedendo un codice monouso, che essendo monouso non sarà indovinato tentando più volte.

Contro

L'autenticazione a due fattori è spesso più costosa da implementare.

Cosa usare?

Ha senso aggiungere una protezione aggiuntiva per scoraggiare gli attacchi di forza bruta / dizionario. La necessità di queste misure aumenta nei sistemi in cui lo spazio della password è troppo piccolo ※, o se la forza minima delle password è troppo bassa (ad esempio i pin a quattro cifre comuni nelle banche).

※: È bene mettere un limite superiore alla dimensione della password. In questo modo il server non verrà bloccato mentre crea un costoso hash sulla password. E dovresti usare un hash costoso perché scoraggerà gli attacchi forzati contro i codici hash rubati .

CAPTCHA dovrebbe essere la prima opzione, poiché è molto facile ed economico da implementare ( utilizzando soluzioni consolidate come reCAPTCHA).

Tra il tempo di ripetizione e i blocchi, considera che l'implementazione minima possibile è simile: per bloccare un account aggiungi un campo all'oggetto / record dell'account contrassegnandolo come bloccato e quindi controlla che durante l'autenticazione ... per inserire un tempo di nuovo tentativo, fai la stessa cosa, tranne che ciò che memorizzi è l'ora in cui l'autenticazione è di nuovo valida.


Ha senso mitigare l'inconveniente aggiungendo queste misure una volta falliti alcuni tentativi. In tal caso, applica prima il CAPTCHA poiché non crea tempi di inattività cognitivi per l'utente.


Tra le opzioni di blocco, abbiamo visto che la combinazione di origine e account è un'alternativa migliore (ma anche più complesso) di uno solo. L'implementazione richiederà log e analisi.

Infine, le autenticazioni a due fattori hanno vantaggi che superano le soluzioni di cui sopra. Tuttavia è il più costoso da implementare in quanto richiede la connessione a un servizio di terze parti (server di posta elettronica, servizio SMS, app dedicata, hardware dedicato, ecc.).

Suggerirei di implementare la registrazione e l'analisi e in base a questi decidi se vuoi implementare il blocco o se vuoi implementare l'autenticazione a due fattori.

Quanti tentativi?

Ci saranno:

  • n 1 tentativi finché non viene visualizzato catpcha.
  • n 2 tentativi fino a quando non viene visualizzata l'ora del nuovo tentativo.
  • n 3 tentativi fino all'applicazione del blocco.

Nota: se utilizzi l'autenticazione a due fattori, la utilizzi fin dal primo tentativo.

I valori di queste variabili possono essere modificati in futuro in base alle tue analisi. Tuttavia, per impostazioni predefinite ragionevoli, considera:

  • n 1 dovrebbe essere una stima del numero di tentativi che una persona può fare se ha problemi a digitare la password . 2 tentativi sarebbero il minimo n 1 perché ciò spiega l'errore di base dei limiti. Nota: Gmail mi consente 20 tentativi prima di utilizzare CAPTCHA.

  • n 2 dovrebbe essere una stima del numero di tentativi che una persona farebbe prima di andare a accesso al meccanismo di recupero. Non esiste un minimo rigido, infatti può essere applicato non appena si applica CAPTCHA e avere intervalli di tempo crescenti per l'attesa. A mio parere n 2 = 3 * n 1 è un buon punto di partenza.

  • n 3 sub> dovrebbe essere una stima del numero di tentativi in ​​cui è più probabile che venga effettuato un attacco. Considera che CATPCHA e il tempo di ripetizione dovrebbero scoraggiare qualsiasi attacco manuale, quindi n 3 non deve essere molto più alto. A mio parere, n 3 = 2 * n 2 è un buon punto di partenza.

Nota sul tempo di nuovo tentativo : L'intervallo che l'utente deve attendere può essere aumentato a ogni tentativo. Ciò ti consente di utilizzare un intervallo iniziale molto piccolo (ad esempio 1 secondo) e di aumentare da lì fino a un limite massimo (ad esempio 1 giorno).

Nota sul conteggio dei tentativi: dovresti evitare un overflow nel i tentativi contano. Se si memorizza il numero di tentativi nell'oggetto / record dell'account, gestire l'overflow. Se stai eseguendo una query sui log per ottenere il numero di tentativi falliti dall'ultimo riuscito, considera l'aggiunta di un intervallo di tempo (che limiterà anche il tempo della query).

"È bene mettere un limite superiore alla dimensione della password. In questo modo il server non verrà bloccato mentre crea un hash costoso sulla password."Questo può o non può essere vero.bcrypt stesso ha una lunghezza della chiave di input (password) di 72 byte (con una raccomandazione di utilizzare solo 56).Se calcoli l'hash SHA512 della password effettiva e lo inserisci in bcrypt, il costo aggiuntivo di una password lunga è trascurabile.
Un altro svantaggio per "bloccare l'origine" è che qualsiasi tentativo di forza bruta davvero significativo proviene probabilmente da una botnet, rendendolo poco pratico.
@MartinBonner [Django aveva quel problema] (https://www.djangoproject.com/weblog/2013/sep/15/security/)
Buona risposta!Potresti aggiungere ai `` contro '' dei CAPTCHA che spesso rappresentano un problema di privacy: il CAPTCHA di Google sembra essere utilizzato più frequentemente e incoraggiano le persone a lasciarli tracciare sul Web rendendo i CAPTCHA quasi impossibili per coloro che lo fanno(So che le mie impostazioni sulla privacy funzionano perché ottengo sempre il tipo più difficile di ReCAPTCHA, e talvolta ottengo "per favore riprova" indefinitamente, non importa quanti ne risolvo correttamente).L'utente deve anche accettare l'informativa sulla privacy di Google e TOS per utilizzare ReCAPTCHA, che è molto legale e invasivo per la privacy.
coteyr
2016-10-10 14:20:57 UTC
view on stackexchange narkive permalink

Quello che uso generalmente è una formula di tempo X in Y. 3 tentativi al secondo sono un blocco, ma 3 tentativi in ​​60 secondi vanno bene. 60 tentativi in ​​60 secondi vanno male, ma 60 tentativi in ​​un giorno vanno bene.

Molto dipenderà da ciò che stai cercando di proteggere. Inoltre, se ci sono regole esterne che devono essere seguite come la politica aziendale, HIPAA, ecc.

L'idea generale è che il processo dovrebbe durare abbastanza a lungo che il "cattivo" si arrende e avanza. Detto questo, è importante non legare i tentativi a un accesso, ma anche a un IP e a un intervallo IP.

Molto dipende anche dal processo di "ripristino dell'accesso". Supponiamo che tu esegua un'API che consente ai clienti di ottenere lo stato della spedizione. In caso di blocco, devono chiamare l'assistenza e verificare. In questo caso probabilmente consentirei qualcosa come 120 tentativi ogni due minuetti e qualcosa come 400 tentativi in ​​un periodo di 24 ore. Può sembrare alto, ma con la politica di "ripristino", l'attività dei tuoi clienti potrebbe non funzionare per ore o giorni, se uno dei loro script va in tilt.

L'idea generale è quella di fermare o allungare gli attacchi di forza bruta, ma non di intralciare gli utenti normali, anche quando gli utenti normali utilizzano credenziali errate.

Puoi approfondire i tentativi di abbinamento a IP e intervalli IP?
Come parte di una soluzione al problema totale, potresti voler bloccare un IP che tenta 700 tentativi di accesso al minuto.Questo aiuta con DOS, ma significa anche che qualcuno non riuscirebbe ad accedere all'account 700 con la stessa password.Ad esempio tentando nomi utente casuali con la password "qwerty1!"se legato solo all'utente consentirebbe il successo di tutti i 700 tentativi.Collegarlo a un IP significa che solo pochi tentativi avranno successo.Fare simile a un intervallo di indirizzi IP aiuta con le botnet.
È molto facile ottenere un elenco di nomi utente o email per un sito web.Normalmente, è di dominio pubblico, ma anche quando non lo è, lo sono altre mailing list correlate.Ad esempio, la società A utilizza Jira.L'elenco degli utenti Jira è privato, ma la directory aziendale non lo è.Quindi potresti provare tutte le persone nella directory dell'azienda, con le prime 10 password più popolari, e magari essere fortunato.
digitallyhere
2016-10-11 15:18:44 UTC
view on stackexchange narkive permalink

Mi piace il limite di 3 (all'ora e forse 6-9 fallimenti al giorno, 12-18 per quindici giorni), ma i tentativi duplicati con lo stesso codice (in 3 gruppi) non dovrebbero essere conteggiati. Se hai effettivamente dimenticato la password, probabilmente non accedi spesso, quindi può aspettare. È meglio che qualcuno provi troppi tentativi al giorno per indovinarlo.

Ma in base a questo, se ti capita di essere già bloccato, l'utente saprà che qualcuno ha provato a indovinarlo, e quindi noi hai bisogno di una strategia su come gestirlo, specialmente quando vuoi accedere.

Ciò non tiene conto degli attacchi di tipo Denial of Service.
_Se hai effettivamente dimenticato la password, probabilmente non accedi spesso, quindi può aspettare._ non è necessario seguire.Forse è qualcosa di molto importante e deve essere fatto solo una volta all'anno, e me ne sono dimenticato fino all'ultimo minuto.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...