Come proteggere il tuo server dall'attacco brute force? [chiuso]

5

Uno dei più comuni attacchi informatici è Bruteforce, quali sono i meccanismi disponibili per proteggere questo attacco e come l'industria applica questi meccanismi per mitigare gli attacchi (best practice)?

    
posta Ihebhamad 14.06.2018 - 00:07
fonte

3 risposte

5

Gli attacchi di forza bruta hanno 2 lati di impatto. Uno è quello di recuperare le credenziali tramite serie di ipotesi di password e l'altra è quella di creare un Denial of Service (DDoS) lanciando un numero enorme di tentativi.

Esistono diversi meccanismi utilizzati dall'industria su una combinazione per mitigare l'attacco poiché l'implementazione di un solo controllo potrebbe non essere adeguata.

Possibili controlli di mitigazione potrebbero essere:

  • Blocco degli account in base a errori di accesso continui
  • Creazione di una pausa nel processo di autenticazione dopo il login multiplo fallimenti
  • IP di blocco - in cui sono stati avviati più tentativi di accesso per più conti
  • Permetti agli utenti con privilegi elevati di accedere da un particolare IP / IP
  • tentativi di accesso con più nomi utente da un indirizzo IP
  • Limita il traffico / blocco quando l'accesso tenta di creare un account più indirizzi IP contemporaneamente
  • Rallenta l'ipotesi usando i cookie del dispositivo (riferimento: link )
  • Utilizza un CAPTCHA per prevenire attacchi automatici
  • Utilizza l'autenticazione a 2 fattori per prevenire l'attacco

Ora, è importante utilizzare una combinazione di controlli per garantire che gli utenti legittimi non subiscano alcun impatto o non possano accedere alle risorse.

Ad esempio, se implementiamo solo "Blocco account dopo diversi tentativi di errore", gli aggressori possono semplicemente abusare di questo controllo e bloccare semplicemente migliaia di account utente inviando serie di tentativi di forza bruta. Di conseguenza, questo risulta essere un DDoS e gli utenti legittimi risentiranno dell'accesso alle loro risorse.

Quindi, è sempre consigliabile utilizzare la combinazione dei controlli sopra elencati in base al contesto del requisito per prevenire l'impatto degli attacchi di forza bruta.

    
risposta data 14.06.2018 - 03:24
fonte
3

Per prevenire gli attacchi di forza bruta ci sono i seguenti approcci che puoi usare:

tentativi di accesso rallentati artificialmente attraverso il sonno.

Questo era piuttosto comune per i siti Web PHP. Il problema con questo è, naturalmente, che prende alcune risorse sul tuo server web.

usa captcha

richiede che un login debba risolvere un captcha.

rate limit

puoi fare un limite di velocità per IP, ma ... c'è anche NAT che lo rende piuttosto complicato per alcuni utenti finali. Inoltre è possibile utilizzare altri tipi di impronte digitali del dispositivo in modo da non bloccare troppi utenti.

autenticazione a due fattori

potresti anche farlo via e-mail. alcuni utenti finali odiano questo perché per accedere devi anche controllare la tua posta adesso.

blocca l'account dopo 10 tentativi, quindi richiede agli utenti di sbloccare l'account tramite e-mail

un po 'fattibile, ma ciò significa che un utente malintenzionato può bloccare costantemente i conti.

Modifica: c'è anche del potenziale di phishing (grazie per il commento)

hashcash

Non è mai stato ampiamente adottato. Fondamentalmente chiedete al client di "crackare" un hash per voi (specificate i primi n-bit e richiedete al client di trovare un input il cui hash inizia con quegli n-bit). Puoi renderlo arbitrariamente difficile (come 1 su un computer moderno).

aspetti negativi: richiede più potenza della CPU dal client, inoltre è necessario verificare l'hash che richiede anche un po 'di potenza della CPU dal server (anche se molto, molto meno che dal client).

esternalizza il problema

Usa l'accesso tramite Facebook, Google o qualsiasi altra cosa. Sempre un'opzione ... potrebbe non essere sempre la scelta migliore.

Non piace a tutti questo perché potresti finire col perdere informazioni su quali siti i tuoi utenti visitano in quei siti. (potrebbe anche non essere conforme a GDPR se sei nell'UE?)

rilevamento "umano"

Oltre ai captcha ci sono altri approcci per distinguere i bot dagli umani come controllare il loro user agent, controllare i riferimenti, controllare quali funzionalità supportano il browser ecc. ma probabilmente è più semplice usare un provider CAPTCHA esistente che già lo fa Comunque.

Puoi essere davvero creativo con questo come sovrapporre div a vicenda e modificarli con CSS e modificarli con JS in modo tale che il "login" giusto sia l'unico visibile e gli altri no, il che significa che un bot ha un difficile capire che "login" è quello giusto. È divertente trovare metodi per distinguere i robot dagli umani ... ma di nuovo ... in genere è più semplice utilizzare un servizio CAPTCHA esistente.

Inoltre ... con l'accessibilità in mente ... solo i CAPTCHA di immagine renderanno impossibile l'uso di alcune persone. I buoni fornitori di CAPTCHA forniscono anche almeno CAPTCHA audio. Quindi ... non creare il tuo CAPTCHA. Poi ci sono screen reader ... che il tuo "detect human" potrebbe interferire. (Hm, non sono sicuro che l'utilizzo di un tale provider CAPTCHA esterno sia compatibile con GPDR?)

accelerazione a livello di rete

Puoi farlo se hai la giusta infrastruttura. Se si dispone di un provider di hosting, potrebbero già farlo comunque dopo troppe richieste (come protezione DoS generale).

honeypotting

Non sono sicuro che qualcuno lo faccia in pratica, ma essenzialmente una volta che sei sicuro che un account è forzato a eseguire la bruta forzatura, fai in modo che uno dei loro tentativi di accesso abbia successo e dia loro un sito Web simulato che convinca il bot che l'accesso è riuscito ma non effettivamente successo.

    
risposta data 15.06.2018 - 14:35
fonte
1

Ci sono molti metodi con cui puoi tentare di sventare il forzante bruto: Autenticazione a due fattori, CAPTCHA, limiti di velocità e, naturalmente, requisiti di complessità pw sono alcuni.

La risposta di "cosa dovrei usare" sarà basata sul tuo modello di rischio; se sei un sito piccolo che non vale il tempo e gli sforzi per violare, le regole di limitazione della velocità e / o della complessità potrebbero essere più che sufficienti. Se gestisci un sito di e-commerce come Amazon con tonnellate di dati riservati, 2FA potrebbe essere più pertinente.

In primo luogo, dovresti considerare cosa è fattibile, e quindi all'interno di ciò che è ragionevole fare date le tue risorse e il tuo livello di rischio.

    
risposta data 14.06.2018 - 00:19
fonte

Leggi altre domande sui tag