Categorie
WordPress e dintorni

Brute Force Attack: come difendersi

Ultimamente riscontro su alcuni siti che ho sviluppato e che seguo con il mio servizio assistenza, ripetuti tentativi di brute force attack. Per questo ho deciso di condividere con te le strategie che ho messo in atto per difenderli (loro e la mia serenità!).

Se non sei sufficientemente esperto, rivolgiti a chi ne sa più di te: potresti combinare pasticci e non riuscire più ad accedere al tuo sito/blog.

Come accorgersi di essere sotto attacco.

  • Installa un plugin che si chiama Activity Log, che ha il compito di annotare tutte le attività svolte sul tuo sito. Fra queste, anche gli accessi al backend, o i tentativi di accesso: viene generata una tabella con data, autore, IP da cui vengono effettuate tutte le operazioni, tipo di operazione svolta e descrizione.
  • Se sei sotto attacco, troverai, dopo un giorno dall’installazione del plugin, una schermata di questo tipo: Brute Force Attack Activity Log
  • La colonna “Description” ti dice con quale nome utente è stato tentato l’accesso. A questo proposito, ti esorto con il cuore in mano a dare nomi più fantasiosi all’utente amministratore, evitando admin, nomi umani, nomi che contengano il nome del dominio, ecc… e di scegliere password robuste: fidati anche dell’ultima release di WordPress che genera e suggerisce password con tutti i sacri crismi.
  • Installa un altro plugin, che al momento non risulta essere aggiornatissimo, ma al momento sembra funzionare comunque. Il plugin in questione è Brute Force Login Protection che ti permette di limitare i tentativi di login in caso di password errata e di bloccare per un determinato periodo di tempo l’indirizzo IP in questione. Il setting è piuttosto semplice. Brute Force Attack Settings
  • Se sei sotto attacco, sarai avvertito via email che sono stati effettuati n tentativi di accesso con password errata e troverai nella lista gli IP bloccati.

Come difendersi

Al momento, sto adottando un doppio sistema di autenticazione tramite i file .htaccess e .htpasswd. Di seguito ti racconto come metterlo in piedi.

  • Anzitutto, devi pensare o creare un nome utente e una password. Ti consiglio di rivolgerti ad un generatore casuale di password e di dare la spunta a tutte le opzioni, scegliendo 16  caratteri per la lunghezza della prima password (che però userai come nome utente) e di 25 caratteri per la seconda password (che sarà la tua password vera e propria). Attenzione! Evita nomi utenti che inizino per #, che nell’.htaccess è il carattere usato per commentare (a me non funzionava!).Brute Force Attack Password Generator
  • Immaginiamo che il nome utente (la password generata da 16 caratteri) sia aj?aNx8g32D#4aS@ e che la password da 25 caratteri sia scU?4S#Kkd!LGFWXXmR@6$EN5: appuntatele su un file di testo, per il momento.
  • Dobbiamo generare il file .htpasswd che conterrà questo nome utente (aj?aNx8g32D#4aS@) e la password (scU?4S#Kkd!LGFWXXmR@6$EN5) criptata. Puoi generare qui il contenuto del tuo file ,htpasswd, copiando e incollando il risultato su un file di testo, nominato appunto .htpasswd. Nel caso in questione, otterrai una simile riga di codice (se immetti i valori due volte consecutiva, la cifratura sarà diversa):
    aj?aNx8g32D#4aS@:$apr1$UOfFbMI4$vviIdYwJSYADtJhdsGoRl.
  • Salva il file e caricalo via FTP, laddove risiede il tuo file .htaccess.
  • Ora, sempre tramite un editor di testo, crea un file php, chiamandolo fullpath.php, che contenga le seguenti righe di codice:
    <?php
    $dir = dirname(__FILE__);
    echo "<p>Full path to this dir: " . $dir . "</p>";
    echo "<p>Full path to a .htpasswd file in this dir: " . $dir . "/.htpasswd" . "</p>";
    ?>
    

    Salvalo e caricalo via FTP, sempre dove risiedono l’.htaccess e l’.htpasswd.

  • Ora apri il browser e scrivi: “nomedominio.ext/percorso-per-il-file/fullpath.php”.
  • Copia e metti in salvo la seconda riga della schermata che viene generata dall’esecuzone del file. È il percorso assoluto verso il file .htpasswd ed è indispensabile perché tutto funzioni: ti servirà al passaggio successivo
  • Ora, sempre nell’editor di testo, devi aggiungere delle righe al file .htaccess:
    ## Impedisci l'accesso a tutti i files che contengono .ht
    <Files ~ "^\.ht">
    order deny,allow
    deny from all
    </Files>
    
    ## Richiedi la doppia autenticazione
    <Files wp-login.php>
    AuthUserFile /percorso-assoluto-scoperto-con-file-fullpath.php/.htpasswd
    AuthName "Protected Area"
    AuthType Basic
    Require user aj?aNx8g32D#4aS@
    ## User è la sequenza di caratteri a 16 cifre.
    </Files>
    
  • Bene, salva e ricarica, sovrascrivendo la versione precedente.
  • Torna sul browser, cancella cache e cronologia e collegati al backend. Comparirà un form in sovrimpressione in cui dovrai inserire il nome utente (aj?aNx8g32D#4aS@) e la password (scU?4S#Kkd!LGFWXXmR@6$EN5).
  • Successivamente, potrai loggarti come d’abitudine.

[bctt tweet=”Brute Force Attack, io mi difendo così. E tu?”>

Annotazioni finali

  • il nome utente (aj?aNx8g32D#4aS@) e la password (scU?4S#Kkd!LGFWXXmR@6$EN5) devi fornirla a tutti gli altri contributors del tuo sito/blog.
  • Cambia spesso le password, sia questa, sia quella di accesso al backend. Usa, lo ripeto, password robuste: un numero elevato di caratteri, maiuscole e minuscole, numeri, caratteri speciali e punteggiatura.

Conclusioni

Se hai altre soluzioni da suggerirmi, più potenti, più semplici, più complesse, più performanti condividile con me e con gli altri lettori.

Ultimo aggiornamento:

Share the love

Di Margherita Pelonara

WordPress FrontEnd Designer.
Co-founder e Organizer di WordPress Meetup Ancona.
Make-up addicted.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.