In (quasi) sicurezza con WordPress

9 giugno 2016

Wordpress e sicurezza

Il “quasi” è d’obbligo perché avere la certezza di rendere un sito in WordPress impenetrabile (a prova di hacker) è impossibile. L’unica sicurezza è avere sempre un backup recente per poter ripristinare il tutto quando, e se, sarà necessario.

Ma partiamo dal principio: WordPress è uno dei CMS open source tra i più utilizzati al mondo ed anche quello che subisce i maggiori tentativi di attacco per fare spam, rubare dati o accedere al server. Quindi è importante renderlo sicuro ed è fondamentale farlo fin dall’installazione. Vi elencherò una serie di interventi, sicuramente non esaustivi, ma che sono un ottimo punto di partenza per la sicurezza.

Configurazione del file config.php

1) Generare le chiavi di sicurezza

Le chiavi di sicurezza servono a gestire in modo sicuro i cookie di WordPress: si possono creare utilizzando il generatore di chiavi e vanno copiate all’interno del file config.php.
Quando si sostituiscono, tutti gli utenti di WordPress loggati saranno forzati ad uscire dal sito per effettuare un nuovo login.

define(‘AUTH_KEY’, ‘Zz?~?$d~-/aCj_5`^I1;W#7skKS!Gn|cPj@r1UZRmsEf.j~&Gv{^MbZH.>v Bpj=’);
define(‘SECURE_AUTH_KEY’, ‘wCS;/)j}e)rcP 9t4H?+<[yz#x^w1e/qiC^}q82Y9|h6%,f>`yy-oMX[{P%3mph{‘);
define(‘LOGGED_IN_KEY’, ‘o|3eGHYS=M4xi<o[e}a3n`!}L@0m?EsGZ4`BQ,iZeWH^&2=1]bDP+5c>$A5fGJ<i’);
define(‘NONCE_KEY’, ‘,Stpj((KEG7L=}!Tj:pYcgVxQZT6}Omm-_XQ!fq1|A7!H]S3^s)+&c;_ ~l+lk<H’);
define(‘AUTH_SALT’, ‘`K4=OE9,CvEgMMH3iQUSk{6+zI:Vu$z*S$9i<g3C{t8{,zcSGK838p5#IW!{‘);
define(‘LOGGED_IN_SALT’, ‘qoirD6g;E7[k_{-BIQ`p|Rvo+f=Uz$F{F5koHSw27Kx~E/K_V9E@cl3}7=m%uA|C’);
define(‘NONCE_SALT’, ‘2HV3fs6BNX2G9Np>|kx`bMp&i%C<1pH0)fIasT,/=p#OSrV(rOZ-Ezd?5z~t|zdJ’);

2) Sostituire il prefisso del database WordPress

Di default wordpress indica come prefisso delle tabelle nel database il valore:

$table_prefix  = ‘wp_’;

Sostituitelo con un’altra parola. Per esempio:

$table_prefix = ‘pippo_’;

3) Rinominare la directory wp-content

Le directory che contengono i temi, i plugin e le immagine o gli allegati inseriti in WordPress sono tutte localizzate all’interno della directory di base wp-content. È saggio rinominare questa directory con un altro nome, per esempio “library” e indicarlo all’interno del file config.php, attraverso queste due linee di codice:

define(‘WP_CONTENT_DIR’, dirname(__FILE__) . ‘/library’);
define(‘WP_CONTENT_URL’, ‘http://www.nomesito.est/library’);

4) Disabilitare l’editor dei file dei template dal backend

Inserendo la seguente riga di codice non si potranno portare modifiche al template dall’interno dell’area di amministrazione del sito web:

define(‘DISALLOW_FILE_EDIT’, true);

Installazione di WordPress

4) Creare un utente amministratore con username diversa da admin

Durante la prima installazione, o anche dopo, create una username per l’utente amministratore che sia differente dalla classica “admin”, per evitare quella tipologia di attacchi chiamati “Brute Force Login” che si focalizzano sul modulo di login della pagina di amministrazione del sito web. E mi raccomando: create una password complessa! Quelle proposte da WordPress in fase di installazione o in fase di modifica di un utente vanno benissimo.

Modifiche al file functions.php

5) nascondere la versione di WordPress

WordPress visualizza nel codice HTML delle pagine un meta-tag con indicato la versione del CMS installato. È sempre meglio nasconderla tramite la seguente riga di codice da inserire all’interno del file functions.php presente nel tema che state utilizzando:

remove_action(‘wp_head’, ‘wp_generator’);

Altri interventi

6) Aggiornare WordPress e i plugin

Ad ogni uscita di una nuova versione di WordPress si consiglia di fare sempre l’aggiornamento, perché sicuramente vi saranno, oltre all’aggiunta di nuove funzionalità del CMS, correzioni di bug di sicurezza.
La stessa operazione deve essere effettuata anche per tutti i plugin utilizzati, perché spesso possono contenere falle di sicurezza che vanno a compromettere l’intera installazione.

7) Cancellare i plugin e i temi inutilizzati

Eliminate tutti i plugin ed i temi che non utilizzate. Lasciarli sul server, oltre che “rallentare” il sito web, possono rappresentare delle porte di accesso per compromettere l’intero sito.

8) Disabilitare i commenti

Se nel vostro sito web non fate uso di temi che permettano di lasciare dei commenti ai vostri articoli, disabilitateli. Se invece li utilizzate, disattivateli per gli articoli vecchi. In questo modo evitate che possano arrivare i frequenti commenti di spam, o comunque ne limiterete la frequenza.

9) Inserire il captcha nelle form di login

Può essere un deterrente contro gli attacchi di “Brute force”. Potete trovare diversi plugin utili allo scopo, io preferisco utilizzare il reCaptcha di Google.

10) Attivare la Google Search Console

Usare la Google Search Console, oltre che dare informazioni relative allo stato di indicizzazione del vostro sito o suggerimenti SEO, è utile perché vi segnala se il vostro sito è stato compromesso e se vi sono pagine che sono state modificate e che contengono dei link di spam.

11) Installare i plugin per migliorare la sicurezza

Recentemente ho iniziato ad utilizzare Wordfence Security che aggiunge diverse funzionalità di sicurezza come il blocco degli IP quando avvengono frequenti tentativi di accesso.
Ha anche altre funzioni interessanti, come:

  • un sistema di cache delle pagine per velocizzare la visualizzazione del sito,
  • un sistema di avviso (via email) degli accessi effettuati nel backend,
  • un sistema di avviso che ci segnala quando ci sono nuovi aggiornamenti dei plugin installati nel sito web.

12) Fare il backup regolare del sito web e del database

L’ultimo consiglio, ma sicuramente il più importante, è di fare SEMPRE il backup periodico dei file del sito web e del database. Si possono fare sia lato server che tramite l’uso di plugin.
Io preferisco utilizzare il plugin UpdraftPlus che mi permette di stabilire sia la frequenza che i giorni di archivio dei vecchi backup (generalmente tengo una copia dei backup dell’ultimo mese) e di salvarli su vari servizi Cloud (es. DropBox).

Concludo con: fate il backup! Ve lo dico per esperienza.