
Il tuo blog è al sicuro? L’eventualità di subire attacchi informatici dall’esterno (brute-force, backdoor e così via) su un blog in WordPress è diventata una vera e propria priorità per tutti coloro che gestiscono questo tipo di siti: abbiamo avuto modo di parlarne nel blog in diverse occasioni, mentre i dati relativi ai siti infetti sembrano aumentare giorno dopo giorno (oltre 90 milioni secondo Google nel mese di giugno 2013). In questo articolo andremo a vedere alcune regole di base per la sicurezza che possiamo implementare manualmente, ovvero senza ricorrere a specifici plugin. L’elenco dei plugin suggeriti per blindare il proprio WordPress al massimo è stata riportata in questo articolo del nostro blog.
Usare password sicure per tutti gli entry-point
Se si ricorre ad installazioni automatizzate come quelle di Softaculous, ad esempio, oppure se si fa uso di un blog collaborativo in cui le password sono generate dal sistema al momento della creazione dell’account, la password può essere generata in modo robusto ma, di contro, anche piuttosto difficile da ricordare: per questa ragione molti utenti tendono a lasciarla così com’è, pensando di essere “automaticamente” al sicuro. Questo è un principio che in generale non vale affatto: la cosa migliore è fare uso di password, specie per gli account amministrativi, che siano personali, legati ad es. a parole inventate agevoli da ricordare solo per voi (non parole comuni o intuitive come “ingresso”, “entra” o “password”, per intenderci), e che combinino lettere, simboli non alfabetici e numeri. La lunghezza ideale è usualmente di almeno 10 caratteri, per stare veramente al sicuro specialmente da attacchi basati su dizionario oppure, più semplicemente, brute force. In quest’ottica, tuttavia, anche l’account FTP dovrebbe essere al sicuro ed evitare l’uso di password troppo semplici: ricordiamo che un estraneo che acceda al vostro FTP indovinando o conoscendo la vostra password potrebbe caricare file PHP arbitrari sul sito, eseguire scansioni alla ricerca di dati personali, compromettere o cancellare definitivamente i file o il database del vostro sito, sostituire la home page con una pagina a propria scelta e così via.
Proteggere la directory wp-admin
Il server Apache offre il file .htaccess che permette, tra le altre cose, di impostare agevolmente un livello di sicurezza potenziato per il vostro sito in WordPress: questo significa che, in altri termini, potete impostare tale file per limitare l’accesso alla cartella wp-admin. Di seguito riportiamo un esempio schematico di file htaccess da inserire all’interno di suddetta cartella per limitare, ad esempio, l’uso che se ne fa da parte di alcuni IP statici esclusivi (quello dell’ufficio), anche se ovviamente ciò vale soltanto per quel tipo di IP e non per gli usuali IP domestici che tendono a cambiare nel tempo (IP dinamici).
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName “Access Control” AuthType Basic order deny,allow deny from all # IP in whitelist: ufficio allow from xxx.xxx.xxx.xxx # IP in whitelist: altra locazione allow from yy.yyy.yyy.yyy
In caso tale tecnica sia inapplicabile potete ricorrere, in alternativa, alle password di Apache per riservare alcune sezioni del sito mediante una sorta di “doppia password“: la prima volta, per intenderci, sarà richiesto un login esterno (comune a tutti gli utenti) a livello di sistema, con username e password da comunicare a tutti gli editor o amministratori o utenti di WordPress autorizzati, e solo dopo aver passato con successo tale “scoglio” sarà possibile accedere alla sezione amministrativa ordinaria.
Per farlo dovremo:
1) creare un file .htaccess vuoto nella root ed inserirvi qualcosa del genere:
AuthName "Secure Area" AuthType Basic AuthUserFile /path/esterno/a/public_html/.htpasswd require valid-user
di cui riportiamo le note basilari:
- AuthName: serve a specificare un’area sicura nella quale sarà possibile accedere solo previo inserimento di credenziali di accesso di sistema, va copiata così com’è nel nostro file.
- AuthType: permette di effettuare un’autenticazione di base, va copiata così com’è nel nostro file.
- AuthUserFile: in corrispondenza di questa riga inseriremo il path al nostro file .htpasswd (con il punto davanti) che sarà generato al prossimo passo, e che dovrebbe trovarsi preferibilmente all’esterno della cartella pubblica (potrebbe servirci SSH per agire in questi termini, per quanto anche via FTP sia a volte possibile farlo). Ad esempio una possibile locazione per questo file potrebbe essere /home/nomeaccount/.htpasswd, che è esterno rispetto alla home pubblicamente visibile come /home/nomeaccount/www oppure /home/nomeaccount/public_html
- require valid-user: va copiata così com’è nel file.
2) Produrre un file di password criptate per il vostro sito e caricarlo nella locazione (directory) indicata: per generare agevolmente un nuovo htpasswd potete sfruttare uno dei tanti generatori online e copiare successivamente, mediante scp ad esempio o FTP (se consentito), il risultato generato all’interno della cartella indicata poc’anzi. Se usate SSH potete generare il file in automatico da shell (dopo aver fatto login) mediante questo comando, in alternativa:
htpasswd -c .htpasswd user-name
Limitare l’accesso alla cartella dei plugin
Moltissime installazioni di WordPress tendono a lasciare libero accesso alla cartella che contiene i plugin (wp-content/plugins/): in questo modo chiunque può vedere i moduli aggiuntivi che state utilizzando, e questo offre un vantaggio notevole ad un potenziale attaccante poichè potrebbe individuare plugin fallati. Il modo più semplice per sopperire a questo problema, che comunque le nuove versioni di WP fanno in automatico, è quello di caricare un file index.html vuoto all’interno di wp-content/plugins/, oppure bloccare l’accesso con un apposito .htaccess in quella cartella configurato come segue:
Options All -Indexes
che serve ad impedire il browsing della cartella in cui il file viene caricato (ovviamente dovrete: creare un file htaccess vuoto in locale, inserirvi quella riga, salvare, inserire un punto prima del nome del file, caricarlo da locale a remoto via FTP). Attenzione che tale modifica va inserita nella cartella dei plugin (wp-content/plugins/) e non nella root, per evitare di compromettere il normale utilizzo del sito e della sezione amministrativa.
Tenere WordPress sempre aggiornato
L’installazione di WordPress, nel tempo, richiede la nostra attenzione massima qualora escano degli aggiornamenti che ci verranno progressivamente notificati nell’interfaccia backend o amministrativa: quindi è importante mantenere l’ultima versione sempre attiva per ridurre l’eventualità di attacchi dovuti a versioni fallate o con bug di sicurezza noti. Attenzione inoltre, per la cronaca, che se installate gli aggiornamenti appena escono potrebbero non essere disponibili in italiano, e questo finirebbe per cambiare la lingua della vostra installazione (date dei post incluse, lato frontend).
Non mostrare la versione di WP che state usando
Ogni CMS possiede degli specifici footprint, che vengono spesso ricercati dagli spammer e dagli hacker attraverso Google per individuare tutti i blog che possiedano determinate “debolezze” informatiche. Per rimuovere completamente il numero di versione sia dalle pagine web di WordPress che dal feed RSS, basta aggiungere la seguente funzione al file functions.php del vostro tema:
function wpbeginner_remove_version() { return ''; } add_filter('the_generator', 'wpbeginner_remove_version');
Fare backup frequenti
Inutile ripetere, in questa sede, l’importanza di disporre di backup del sito sempre aggiornatissimi: la perdita di dati può essere fatale e costringervi a ricostruire da zero il vostro portale o blog. Potete in generale utilizzare sia soluzioni di backup automatizzate (preferibilemente questa specifica per WP) che quelli manuali che offriamo come servizi aggiuntivi.
Attenzione ai plugin ed agli script che caricate
In generale i plugin che usate vanno scaricati dal repository ufficiale, che comunque va considerato con una certa attenzione: meglio evitare quelli, ad esempio, che non siano aggiornati da più di un anno. Da evitare tassativamente quelli che si reperiscono in genere da siti di torrent e similari e che promettano incrementi di visite, vantaggi SEO e generazione automatica di contenuti.