Attacco a forza bruta di WordPress

4 misure per prevenire gli attacchi brute force sul tuo WordPress

Cosa sono gli attacchi di forza bruta, perché gli aggressori li utilizzano e come puoi prevenire questi attacchi sul tuo WordPress? Sicuramente ti porrai domande come queste quando affronterai questo argomento. Abbiamo raccolto le risposte a queste domande.

Cosa sono gli attacchi brute force?

Gli attacchi di forza bruta sono tentativi di accesso al sistema (nel tuo caso, probabilmente a WordPress). Questo avviene cercando di indovinare un nome utente e una password. Dopo tutto, questo account ha già accesso al sistema. 

Si tratta di un metodo molto semplice e primitivo (il nome dice tutto: forza bruta) ma comunque molto efficace. Allo stesso tempo, è anche molto facile da prevenire.

Quali sono i tipi di attacchi brute force?

Ci sono piccole ma sottili differenze tra gli attacchi di forza bruta e i relativi scenari di attacco. I tipi più comuni possono essere suddivisi in 5 categorie:

  1. Semplice attacco di forza bruta
  2. Attacco al dizionario
  3. Attacco ibrido a forza bruta
  4. Attacco inverso a forza bruta / Spruzzatura di password
  5. Imbottigliamento di credenziali

Di seguito presentiamo in dettaglio ciascuna di queste categorie.

"*" indica i campi obbligatori

Desidero iscrivermi alla newsletter per essere informato sui nuovi articoli del blog, sugli ebook, sulle funzionalità e sulle novità di WordPress. Posso ritirare il mio consenso in qualsiasi momento. Si prega di prendere nota della nostra Politica sulla Privacy.
Questo campo è per la convalida e non deve essere modificato.

1. semplice attacco a forza bruta

Questa è la forma più pura di attacco a forza bruta. Prova qualsiasi combinazione di caratteri uno per uno, senza alcuna ricerca o procedura separata, se non il semplice conteggio dei caratteri verso l'alto o verso il basso.

Attacco semplice alla forza bruta di WordPress
Credito: Matthias Held

Questo metodo è semplice, ma richiede tempo e molta potenza di calcolo. Tuttavia, con processori sempre più potenti o con la possibilità di scatenare molti sistemi diversi contemporaneamente su un obiettivo di attacco (ad esempio, con l'aiuto di botnet o server cloud), è ancora un metodo valido. 

Esistono sia test di laboratorio che applicazioni reali in grado di decifrare una password di 8 caratteri in meno di 12 minuti. Con il progredire della tecnologia, sarà sempre più facile e veloce raggiungere l'obiettivo. Per questo motivo, questo metodo rimane popolare tra gli aggressori che mirano a un obiettivo specifico.

Vantaggio: qualsiasi password può essere indovinata.
Svantaggi: può richiedere molto tempo e richiede una grande potenza di calcolo.

Buoni metodi di difesa: Usa password lunghe con un'ampia gamma di caratteri.

2. attacco a dizionario

A differenza del metodo Simple Brute Force, il Dictionary Attack utilizza un record esistente da testare.

I dati possono provenire da diverse fonti:

  1. I dizionari veri e propri, ad esempio, tutte le parole del Duden.
  2. Elenchi di password come le 10.000 password più utilizzate.
  3. Password di violazioni passate (nomi utente e password di precedenti hack di siti web e applicazioni).

La prima variante sta diventando sempre meno importante, ma le ultime due si sono rafforzate nel corso degli anni, perché con l'aumento degli attacchi informatici, aumenta naturalmente anche la quantità di dati contenuti in questi elenchi.

Attacco al dizionario di WordPress con forza bruta
Credito: Matthias Held

Vantaggio: poiché gli utenti amano utilizzare password che possano essere ricordate, spesso si semplificano la vita e utilizzano singole parole del dizionario o nomi e lo fanno ripetutamente su tutti i servizi, siti web e app. Pertanto, la probabilità di successo è piuttosto alta e il metodo è significativamente più veloce di una semplice forza bruta.


Svantaggio: la probabilità di successo non è più del 100%.

Buoni metodi di difesa: non utilizzare singole parole del dizionario o nomi, oggetti o simili. Inoltre, usa la stessa password solo per un account e non per più di uno. 

3. attacco ibrido a forza bruta

L'attacco Hybrid Brute Force è una combinazione dell'attacco Simple Brute Force e dell'attacco Dictionary.


In questo caso, una parola del Simple Brute Force viene presa e combinata con potenziali numeri spesso utilizzati, come l'anno di nascita o l'anniversario di matrimonio. Questo limita drasticamente il numero di potenziali tentativi e quindi semplifica il processo di attacco.

Attacco ibrido WordPress Brute Force
Credito: Matthias Held

Vantaggio: Questo metodo ha lo stesso vantaggio del Dizionario Brute Force, solo che in questo caso il numero di tentativi viene aumentato e prolungato di un numero elevato di tentativi con la semplice aggiunta di caratteri come smiley in forma di testo o numeri di anno(Maga2020 è un esempio famoso).
Svantaggio: come per il Dizionario Forza Bruta, la probabilità di successo non è più del 100%.

Buoni metodi di difesa: evita di utilizzare date o numeri importanti per te nelle password.

4. attacco inverso a forza bruta o spruzzatura della password

Gli aggressori cercano di combinare una password con diversi nomi utente. Il nome utente varia, ma la password rimane la stessa.

Attacco inverso a forza bruta di WordPress
Credito: Matthias Held

Vantaggio: come già descritto in precedenza, le persone sono propense a riutilizzare le proprie password e ad utilizzare quelle più memorabili possibile. Questo vale anche per questo tipo di attacco. Inoltre, aggira un blocco (blocco dell'accesso all'account) se vengono effettuati troppi tentativi sullo stesso account utente.

Svantaggio: questo metodo può portare a molti accessi, ma forse non agli account che desideri.

Buoni metodi di difesa: Dato che anche in questo caso si utilizzano per lo più elenchi standard per gli account utente (nella misura in cui questi non possono essere letti ), è consigliabile, come per la password, scegliere un nome utente difficile da indovinare, con molti caratteri alfanumerici e caratteri speciali.

5 Imbottire di credenziali

Anche i dati delle violazioni passate (vedi Attacco dizionario, punto 2) giocano un ruolo importante. Il Credential stuffing non fa altro che riutilizzare i dati di login delle violazioni esistenti.

Se, ad esempio, hai utilizzato il nome utente yourmail@yourwebsite.com e la password Cola123
da qualche parte su un sito web o un'applicazione
e questi dati sono venuti fuori attraverso una violazione, gli aggressori li utilizzeranno per accedere ad altri servizi e applicazioni.

WordPress Brute Force Credential Stuffing
Credito: Matthias Held

Questo attacco ha un'altissima probabilità di successo e sta diventando sempre più popolare. Pertanto, è una delle più pericolose al momento.

Puoi verificare se uno dei tuoi account è già stato violato sul sito haveibeenpwned.com.

Raidboxes e violazioni

Quando si crea un nuovo account utente, Raidboxes controlla se la password è già stata utilizzata per una violazione(in modo anonimo e non rintracciabile).

Vantaggio: anche in questo caso entra in gioco il fatto che le persone sono creature abitudinarie. La maggior parte delle persone utilizza lo stesso indirizzo e-mail e la stessa password per molti servizi. In questo modo si evita anche un blocco degli account come nel caso della forza bruta inversa.

Svantaggio: con questo attacco devi scoprire in anticipo se la persona al cui account vuoi accedere utilizza anche il servizio/sito web/app. Tuttavia, se vuoi semplicemente accedervi, si tratta di un metodo molto efficace.

Buoni metodi di difesa: Non usare mai gli stessi dati di accesso più di una volta. Mantenili unici in ogni luogo in cui ti registri.

Come posso proteggere il mio sito WordPress dagli attacchi brute force?

Leggo e sento spesso il consiglio: "Usa solo password forti".

Questo può essere vero in linea di principio, ma con tempo e risorse sufficienti, qualsiasi combinazione di login può essere decifrata con la forza bruta se non si utilizzano altre misure di protezione.

Inoltre, questi attacchi comportano un carico evitabile sul tuo server e questo non solo danneggia il tempo di caricamento del tuo sito web, ma anche il tuo portafoglio se il tuo host si fa pagare in base al traffico. 

Il metodo migliore resta quello di evitare che questi attacchi si verifichino e di bloccare completamente l'accesso.

A livello di server

Azione 1: bloccare le richieste non autorizzate al tuo modulo di login

Non importa quanto sia sicura la combinazione di login che utilizzi, ci vorrà molto tempo, potenza di calcolo e nessuna protezione aggiuntiva per decifrarla.
Infatti, il modo più efficiente è quello di creare una protezione che blocchi completamente qualsiasi richiesta non autorizzata al tuo modulo di login di WordPress. In questo modo, gli attacchi automatici e manuali non riusciranno a passare. Alla fine, questo protegge anche il tuo server.

Ci sono diverse possibilità per questo. Non tutte le possibilità sono adatte, dipende da quanto sei esperto tecnicamente e da quante opzioni hai a disposizione per quanto riguarda le impostazioni del DNS e del server. 

Suggerimento: Creare un elenco di IP consentiti


Protezione: 🔒🔒🔒🔒🔒
Sforzo tecnico: 🛠️🛠️🛠️🛠️🛠️

Se accedi a internet sempre con lo stesso indirizzo IP, ad esempio perché hai una tua VPN o un IP fisso nella tua agenzia, il metodo più sicuro è quello di creare un elenco di permessi per questo IP nelle pagine /wp-admin e /wp-login.

Apache

Se il tuo server web funziona con Apache, aggiungi questa parte al tuo .htaccess:

RewriteEngine su

RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]

RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$

RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$ 

RewriteRule ^(.*)$ - [R=403,L]


Importante:
nota che nelle righe contenenti REMOTE_ADDR, devi solo sostituire i NUMERI con i rispettivi numeri del tuo IP.
Ad esempio, se il tuo IP è 95.217.228.176, la riga deve essere scritta:

RewriteCond %{REMOTE_ADDR} !^95\.217\.228\.176$

Per ogni indirizzo IP consentito, aggiungi una riga separata. Quindi riavvia il servizio Apache per applicare le modifiche.

Nginx

Aggiungi questo snippet al blocco server del file dell'host virtuale. Anche in questo caso, per ogni indirizzo IP consentito devi aggiungere una riga di consenso.

location = /wp-login.php {

     allow 192.168.1.1; #indirizzo IP 1 per ogni indirizzo IP consentito una riga

     allow 172.16.1.1; #indirizzo IP 2

     negare tutto;

     includere snippets/fastcgi-php.conf;

     fastcgi_pass unix:/run/php/php7.4-fpm.sock;

     }

Riavvia il servizio nginx per applicare le modifiche.

Suggerimento: utilizzare il firewall CDN


Protezione: 🔒🔒🔒🔒🔒
Sforzo tecnico: 🛠️

I CDN possono offrire un'ottima protezione configurando il firewall in modo da passare una query captcha prima del modulo di login.
Ecco un tutorial per Cloudflare. Nel piano gratuito di Cloudflare puoi creare fino a 5 regole.

1. accedi al tuo sito Cloudflare-Dashboard , vai su Firewall e crea una nuova regola del firewall.

2. le date della regola sono:

Firewall CDN WordPress Brute Force

Questo è quanto.

Suggerimento: crea un elenco di blocco tramite Fail2Ban


Protezione: 🔒🔒🔒🔒
Sforzo tecnico: 🛠️🛠️🛠️🛠️🛠️🛠️🛠️

Se non hai un IP fisso e non utilizzi un CDN, puoi creare una blocklist tramite Fail2Ban. Puoi trovare ottimi tutorial qui:

Tieni presente, però, che devi adattarlo specificamente all'URL /wp-login.

Suggerimento: Raidboxes Dashboard

Protezione: 🔒🔒🔒🔒🔒
Sforzo tecnico: 🛠️

In combinazione con username e password sicuri e Raidboxes Single Sign On.

Raidboxes I clienti dispongono già di un modulo anti-brute force configurabile su ciascuna delle loro istanze.
Insieme al Single Sign On, questa è una delle impostazioni di sicurezza più elevate che puoi avere senza alcuno sforzo tecnico.

In WordPress stesso

Se hai seguito questi passaggi, sei molto protetto dagli attacchi.
Tuttavia, se non sei in grado di applicare queste soluzioni perché non hai accesso alle impostazioni del tuo server o ai record DNS per l'impostazione di un CDN, ti propongo alcuni altri passaggi.

Misura 2: prevenire l'enumerazione dei nomi utente

Prima di passare alle password sicure, partiamo dall'inizio: dal nome utente.

I nomi utente rappresentano il 50% degli accessi e WordPress purtroppo rende molto facile leggere il nome utente (login) per tutti gli account creati con diritti di amministrazione. E questo è automatizzato. Puoi evitare che ciò accada agendo in prima persona e proteggendo il tuo WordPress, oppure installando i seguenti plugin.

Suggerimento: soluzione tramite plugin


Protezione: 🔒🔒🔒🔒🔒
Sforzo tecnico: 🛠️

Plugin 1: Messaggi di errore di accesso unificati
Questo plugin sopprime l'emissione di diversi messaggi di errore per i tentativi di accesso errati. Questo perché attualmente WordPress emette un messaggio di errore diverso se un nome utente esiste o meno. In questo modo è facile vedere se l'utente inserito esiste.

Plugin 2: Stop User Enumeration
Stop User Enumeration fa esattamente quello che dice: blocca le richieste non autorizzate al tuo WordPress, ad esempio per leggere i nomi degli utenti attraverso l'archivio degli autori.

Suggerimento: soluzione tramite functions.php

Protezione: 🔒🔒🔒🔒🔒
Sforzo tecnico: 🛠️🛠️🛠️

Se preferisci prendere il controllo da solo, puoi modificare il functions.php del tuo tema attivo (fai prima un backup).

Aggiungi il seguente codice:

Codice PHP

// If the user is not authenticated as an admin
if (!is_admin()) {
// RegEx to check if the request went to an “/author=INT” endpoint
if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) die();    add_filter('redirect_canonical', 'stop_user_enum', 10, 2);
}
function stop_user_enum($redirect, $request) {
// // RegEx to check if the the request went to an “/author=INT” endpoint but with the permalink furl format
if (preg_match('/\?author=([0-9]*)(\/*)/i', $request)) die(); else return $redirect;
}

Suggerimento: Raidboxes Dashboard


Protezione: 🔒🔒🔒🔒🔒
Sforzo tecnico: 🛠️

Raidboxes I clienti beneficiano di soluzioni pronte all'uso in Raidboxes Dashboard . Non c'è altro da fare che accenderli.

Misura 3: "Usa solo password forti".

Nota: su Raidboxes , al momento della registrazione di un nuovo account, chiediamo di assegnare delle password che rendano molto più difficili le interrogazioni a forza bruta. Questo include: 

  • Lunghezza minima preimpostata
  • Complessità
  • se la password può essere trovata nel dizionario (inglese o tedesco)
  • se contiene una data
  • se è già stata inserita in una password conosciuta (anonima e non rintracciabile)

Le password sono carenti: perché possono essere indovinate (forza bruta), lette (key logger, ecc.), lette (a causa dell'assenza o della scarsa crittografia/conservazione nelle memorie dei dati), riconoscono solo l'autorizzazione di un dispositivo finale, ma non l'identità della persona che si nasconde dietro di esso e sono solitamente difficili da ricordare (se sono "sicure").

Per quest'ultimo problema, esistono gestori di password come 1Password, BitWarden, KeePass e altri. 

Quando ci troviamo nell'ambiente WordPress, dobbiamo accettare di dover utilizzare delle password.

Che cos'è una password "sicura"?

Una password forte è una password lunga e con un certo grado di complessità. 

Sì, la lunghezza della password è più importante della complessità. Una password di 8 caratteri può essere indovinata per 25$USD in 12 minuti, anche se è composta da molti caratteri speciali, lettere maiuscole e numeri.

La seguente GIF illustra molto bene perché la lunghezza ha più peso della complessità:

Password sicura per WordPress Brute Force
Credito: Intel Security // Intel.com

Inoltre, gli hacker non vogliono investire molto denaro o tempo in calcoli intensivi di lunghe password. Pertanto, la regola generale è: più lunga è la password, meglio è!

Ma le password lunghe e complesse sono difficili da ricordare!

È vero, ma nell'era dei gestori di password, dobbiamo ricordare solo una password lunga e complessa e lasciare che questi gestori creino e memorizzino il resto.

Se abbiamo un'unica password e, nel migliore dei casi, la cambiamo ogni tanto, siamo al sicuro.

Ecco un segreto aperto su come creare password lunghe e complesse e ricordarle al primo tentativo:

Password complesse per WordPress Brute Force
Credito: xkcd.com 

Ciò significa che possiamo prendere a cuore questo fumetto di XKCD e creare una password lunga seguendo uno degli schemi seguenti:

Sedile del treno+Percorso del campo-7Chiaro d'occhio

Oppure usiamo frasi intere con un po' di complessità in più:

Mi piace lo spinacio solo 3 volte al giorno

Abbiamo creato una frase relativamente senza senso con caratteri speciali e un numero, che è molto difficile da indovinare e allo stesso tempo memorabile (più punti per la rima). Questa è anche chiamata passphrase.

Molti gestori di password, come BitWarden, creano per te delle passphrase memorabili ma complesse.

Addendum: usa un nome utente sicuro

Come già detto: il 50% del tuo accesso è costituito dal nome utente.

Se una persona che attacca conosce questa parte dell'accesso, la metà è fatta. L'unica cosa che rimane è la password. Quindi non usare nomi utente come admin, administrator o il tuo nome, non usare il nome del sito web o il dominio o qualsiasi cosa che abbia a che fare con il sito stesso. 

Esempio

Se il tuo sito si chiama www.ireallylovecats.com, non usare un nome che abbia a che fare con i gatti

Meglio ancora, prendi lo stesso trucco della password di cui sopra, usa una frase lunga e aggiungi una complessità come asphalt/can/also/with/7/spices.

Crea la password a Raidboxes

Crea una password e un nome utente con una lunghezza massima (in WordPress attualmente 60 caratteri per il nome utente e 64 caratteri per la password, vedi le proprietà del database) e con molte lettere, numeri e caratteri speciali - poi utilizza semplicemente il Single Sign On in Dashboard. Accedi in modo sicuro con un solo clic.

Misura 4: Plugin di sicurezza

Suggerimento: plugin tuttofare

Protezione: 🔒🔒🔒🔒

Sforzo tecnico: da 🛠️🛠️ a 🛠️🛠️🛠️🛠️

Esistono molti plugin di sicurezza per WordPress sul mercato, ad esempio:

Tutti questi plugin di sicurezza offrono una protezione integrata contro la forza bruta e molto altro ancora. Per la maggior parte dei siti web WordPress, l'installazione e la manutenzione di questi plugin saranno una protezione sufficiente. Allo stesso modo, la configurazione e la manutenzione sono minime.

Tuttavia, i plugin hanno uno svantaggio (nella maggior parte dei casi piccolo): il carico sul server dovuto alla forza bruta non può essere ridotto da questi plugin. Questi plugin hanno bisogno di un processo PHP per verificare se l'accesso è valido, se l'IP non è presente nella blocklist e così via.

Tutto questo comporta un carico sul server per ogni richiesta. Certo, si tratta ancora di una cifra inferiore a quella di un tentativo di login vero e proprio - e finché il server non viene realmente colpito, l'attacco deve assumere dimensioni quasi da D/DOS - ma non può essere trascurato.

Ma torniamo ai numerosi vantaggi dei plugin: se sono sempre aggiornati, i nuovi tipi di attacchi vengono individuati e mitigati rapidamente senza che tu debba fare nulla.

Suggerimento: Nascondi il login di WP

Protezione: 🔒

Sforzo tecnico: 🛠️

"Sicurezza attraverso l'oscurità" è un'espressione spesso usata nel campo della sicurezza per indicare questo metodo.

In definitiva, significa cercare di fermare gli attacchi semplicemente mascherando un problema. Questo funziona bene in alcuni casi, perché gli attacchi di forza bruta non passano attraverso il modulo di login, ma utilizzano i parametri della query per avviare i tentativi di login.


Solo perché l'URL predefinito come /wp-admin o /wp-login.* non è accessibile, questi attacchi non si fermeranno.

Conclusione

Spero di essere riuscito a spiegare i diversi tipi di attacchi brute force e di averti dato dei consigli su come proteggere il tuo WordPress da questi attacchi in futuro. Se hai altre domande, saremo lieti di ascoltarti!

Ti è piaciuto l'articolo?

Con la tua valutazione ci aiuti a migliorare ancora di più i nostri contenuti. Grazie!

Scrivi un commento

Il tuo indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *.