Diversi sono gli attacchi che possono minacciare il vostro sito, tra questi vi è il così detto brute force, ovvero il tentativo di accesso forzato.

bruteforceIl solo termine può far intuire quanto sia caparbio e ostile questo tipo di attacco, visto che una delle conseguenze è il pesante carico che causa sul server, fino a renderlo inutilizzabile.
Come agisce? Il suo scopo è  trovare password o chiavi di registrazione tentando, in sequenza, tutte le possibili combinazioni di caratteri utilizzabili.

Solitamente l’attacco brute force avviene verso il file xmlrpc.php (un file presente di default in tutte le versioni di WordPress) o la pagina di login lato amministratore.

L’ xmlrpc.php è responsabile delle chiamate RPC e permette di accedere al sito tramite le applicazioni sviluppate per i dispositivi mobile.

In questo caso l’attacco è molto più difficile da individuare e nella quasi totalità dei casi da’ l’effetto sperato, ovvero l’accesso al sito e, come conseguenza del metodo utilizzato, un sovraccarico del server.

Ogni tentativo di accesso è infatti una chiamata che invoca lo stack apache-php-mysql e ogni risposta è molto onerosa (da tener conto che di tentativi ne vengono effettuati diversi milioni).

Scampare ad un brute force non è cosa facile, di solito si spera che la vittima designata abbia scelto una chiave sufficientemente lunga per cui il brute-forcing debba impiegare un lasso di tempo così esteso da scovarlo e agire di conseguenza.

Come  verificare se si è stati attaccati?

Basta controllare i file di log del vostro sito.
Per server Linux il comando che  fa visualizzare le chiamate è:

egrep -e ‘POST.*xml’ access_log

Se risultano una serie molto veloce di chiamate verso il file xmlrpc.php, allora il vostro sito web è stato, o è, sotto attacco.

123.xxx.xxx.xxx – – [16/Sep/2015:10:30:13 +0200] “POST /xmlrpc.php HTTP/1.1” 200 688 “-” “-”

123.xxx.xxx.xxx – – [16/Sep/2015:10:30:13 +0200] “POST /xmlrpc.php HTTP/1.1” 200 688 “-” “-”

123.xxx.xxx.xxx – – [16/Sep/2015:10:30:14 +0200] “POST /xmlrpc.php HTTP/1.1” 200 688 “-” “-”

123.xxx.xxx.xxx – – [16/Sep/2015:10:30:14 +0200] “POST /xmlrpc.php HTTP/1.1” 200 688 “-” “-”

Come difendersi?

Il metodo più veloce è inibire l’accesso ai file, inserendo in .htaccess le direttive:

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Oppure si può specificare che il file può essere richiamato solo da un preciso IP, inserendo la direttiva “allow from ”:

<Files xmlrpc.php>
order deny,allow
deny from all
allow from IP address
</Files>

IP address sta per l’indirizzo IP del server.

In questo caso continueranno ad arrivare richieste al server ma restituiranno errore 403 (forbidden) senza richiamare lo stack apache-php-mysql e quindi senza sovraccaricare il server.