Proteggere wp-login

Settembre 6, 2014

Chi gestisce uno o più web-server sa bene quanto sia importante mantenere tutto aggiornato, dal sistema operativo all’ultimo script che che gira nella macchina. Purtroppo, la più grande vulnerabilità dei nostri server sono proprio gli utilizzatori che per pigrizia o superficialità non danno la giusta importanza alle password. Uno studio mostra come le password piu diffuse sono nomi propri, e circa 2.000 sulle 10.000 prese in esame erano composte da non piu di 6 careatteri, rendendole facili bersagli di un attacco “brute force“.

Il classico atacco brute-force ad un sito wordpress prende di mira il file wp-login.php, questa è la tipica log che riscontriamo in questi casi


114.37.91.33 - - [16/Ago/2014:02:08:13 -0700] "POST /wp-login.php HTTP/1.1" 302 4477 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)"
60.12.87.120 - - [16/Ago/2014:02:08:15 -0700] "POST /wp-login.php HTTP/1.1" 302 4479 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)"
169.73.191.44 - - [16/Ago/2014:02:08:15 -0700] "POST /wp-login.php HTTP/1.1" 302 4487 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
114.37.91.33 - - [16/Ago/2014:02:08:15 -0700] "POST /wp-login.php HTTP/1.1" 302 4643 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"

Come potete vedere, vengono utilizzati più macchine che provando ad inviare una sequenza di user e password tentando d’ottenere l’accesso all’amministrazione del sito.
Ci sono diversi modi per difendersi da questi atacchi, il primo è educare i priori utenti, ma già sapendo che questo non basta, oppure  ricorrere a software come fail-2-ban ma anche questo potrebbe non essere sufficiente.

Un ulterire grado di sicurezza consiste nell’aggiungere un’altro layer di autenticazione rendendo vano l’utilizzo della maggior parte dei sofware utilizzati per gli atacchi brute-foce, un modo semplice per farlo è proteggere con una combinazione user / passowd l’accesso al file wp-login direttamete dal file .htaccess


ErrorDocument 401 "Unauthorized Access"
ErrorDocument 403 "Forbidden"
<FilesMatch "wp-login.php">
AuthName "Authorized Only"
AuthType Basic
AuthUserFile /var/www/nomehost/.nomefile
require valid-user
</FilesMatch>

Per poter utilizzare questo codice dovrete prima di tutto creare un file con un nome a piacere e specificarne il percorso su  AuthUserFile, se questo percorso non è raggiungibile dal web meglio.
Il file, che nel nostro esempio si chiama .nomefile conterrà le credenziali d’accesso, una combinazione user passowrd per riga. Le password devono essere criptate, per generarne è possibile usare questo servizio on-line Htpasswd Generator
La combinazione user: mirkofuser e password: passwordcriptata genererà la riga mirkofuser:$apr1$Df4mRTEZ$Zc2rsemTOg6gBckZuVxwJ0 da inserie nel vostro .nomefile

A questo punto, quando proverete a collegarvi all’amministrazione di wordpress vi verrà richiesta una delle user / password salvate in .nomefile, solo dopo averle fornite potrete accedere alla login di wordpress ed inserire le vostre credenziali di amministrazione del sito.