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.
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);
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.
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’);
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:
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.