WEB DEVELOPMENT

Guida alla sicurezza di WordPress: proteggiamo i nostri files e il database.

Luca Grandicelli
Senior Web Developer

9 marzo 2020

Una breve introduzione

Nell’ambito della sicurezza informatica, un sistema 100% protetto e a prova di hacker è più una chimera che una certezza effettiva. Tuttavia WordPress è da considerarsi una piattaforma più che sicura, sviluppata e mantenuta da migliaia di sviluppatori in tutto il mondo per i quali il tema della sicurezza è centrale, oltre che cruciale. Questo fa sì che il CMS più famoso del web sia in costante evoluzione e la sua community in grado di rilasciare prontamente patch e fix per ogni tipo di problema rilevato.

Sebbene le misure preventive per scongiurare gli attacchi informatici non siano mai troppe, una buona manutenzione del proprio sito web e l’applicazione di alcune fra le regole base della sicurezza informatica fanno sì che il rischio di intrusione e/o manomissione dei propri sistemi rasenti lo zero.

 

Perché una guida alla sicurezza?

La protezione di un sito web dovrebbe essere un’attività costante e continua nel tempo, che implica, fra le tante cose, l’impostazione di difese contro gli aggressori, la prevenzione degli errori, il monitoraggio dei cambiamenti di stato e del codice e l’applicazione di livelli di sicurezza per gli accessi malevoli e le intrusioni a scopo di estorsione dei dati sensibili.

È importante ricordare sempre che WordPress è una piattaforma di pubblicazione utilizzata in più del 30% dei siti mondiali, ed è proprio grazie a questa popolarità che è diventato un target molto comune per gli hacker e i cyber criminali. Pertanto, prima di proseguire con la nostra guida, è fondamentale ricordare che quando si parla di sicurezza, la paranoia non è mai troppa.

Attenzione: questa guida e le informazioni in essa contenute non sono da considerarsi esaustive della materia in questione, né vanno prese come definitive per quanto riguarda la sicurezza dei vostri siti web. I contenuti qui presenti possono e potranno variare nel tempo. Raccomandiamo sempre di consultare un esperto di sicurezza informatica.

 

1. Prima di installare WordPress

Innanzitutto assicuratevi di avere scaricato l’ultima versione stabile dal repository ufficiale. Successivamente, prima di procedere con l’installazione, ci sono un paio di best practice da tenere a mente:

  • Cambiare il prefisso di default delle tabelle di WordPress
  • Utilizzare le chiavi di autenticazione

 

Cambiare il prefisso di default delle tabelle di WordPress

Durante la fase di installazione dovrete decidere quale prefisso utilizzare per creare le tabelle di WordPress nel database. Di default questo valore è impostato a “wp_”, ma è buona norma cambiarlo in una stringa qualsiasi, come ad esempio: “3Fd9_”.

Qualora invece WordPress sia già stato installato, dovrete cambiare le singole tabelle tramite un tool di gestione database (ad esempio: phpMyAdmin) e successivamente aprire il file wp-config.php presente nella root della vostra installazione e cambiare il valore della seguente variabile:


// Valore originale del prefisso delle tabello WordPress
$table_prefix = 'wp_';

in

// Cambiatelo in...
$table_prefix = '3Fd9_'; //
Questo è solo un esempio. Potete utilizzare il prefisso che più vi piace, a patto che non sia troppo lungo ma che sia almeno alfanumerico.

Nota 1
Con questa procedura sarete virtualmente in grado di far girare più installazioni di WordPress sullo stesso database, a patto che usiate sempre un prefisso diverso per ogni singola installazione.

Nota 2
Se non siete sufficientemente esperti per mettere mano direttamente sul database, o semplicemente non vi sentite sicuri ad utilizzare strumenti come phpMyAdmin, il consiglio è quello di utilizzare dei plugin che possano aiutarvi nell’operazione, come ad esempio: Brozzme DB Prefix & Tools Addons.

 

Utilizzare le chiavi di autenticazione

WordPress utilizza delle stringhe hash chiamate “Keys e Salt”, memorizzate direttamente nel file di configurazione wp-config.php. Il loro ruolo è quello di proteggere le sessioni aperte andando a crittare i dati nei cookie di sessione del browser. Sebbene sia possibile generare manualmente queste chiavi, il consiglio è comunque quello di farlo tramite il servizio ufficiale di WordPress presente al seguente link https://api.wordpress.org/secret-key/1.1/salt/ e sostituire le stringhe nel file wp-config.php

Nota
Nelle ultime versioni di WordPress, questa operazione è effettuata già in maniera randomica al momento dell’installazione.

Attenzione: la sostituzione regolare delle chiavi invalida tutte le sessioni attive e forza tutti gli utenti a rieffettuare il login nel sistema.

Un piccolo trucco:
Nella malaugurata ipotesi che vi troviate a dover bloccare l’accesso all’area di admin, potete impostare l’invalidazione delle chiavi ogni microsecondo in questo modo:

define('AUTH_KEY', microtime());
define('SECURE_AUTH_KEY', microtime());
define('LOGGED_IN_KEY', microtime());
define('NONCE_KEY', microtime());
define('AUTH_SALT', microtime());
define('SECURE_AUTH_SALT', microtime());
define('LOGGED_IN_SALT', microtime());
define('NONCE_SALT', microtime());

 

Cosa fare dopo l’installazione di WordPress

Una volta che WordPress è stato installato è buona norma eliminare l’account di amministratore utilizzato durante la procedura, creandone uno nuovo assieme a tutti gli altri di cui avete bisogno. Ricordate però di creare utenze che effettivamente utilizzano il sito; cancellate, anche momentaneamente, quelle inattive.

Evitate poi nomi utente come “admin” o “administrator” (comuni in molte installazioni WordPress) e ricordate di utilizzare delle password complesse (nella pagina di editing del profilo utente, WordPress genera una password alfanumerica in maniera autonoma. Tuttavia, qualora desideraste utilizzarne un’altra, potete generarla online tramite dei tool come ad esempio: https://www.lastpass.com/it/password-generator)

A meno che non siano strettamente necessari, disabilitate i pingback le notifiche di trackback dal pannello di amministrazione (Impostazioni -> Commenti) poiché potrebbero costituire una possibile porta di accesso per gli attacchi DDoS (Distributed Denial of Service).

Infine proteggete i vostri files da attacchi e intrusioni aggiungendo le seguenti linee di codice al file .htaccess posizionato nella root del vostro sito web:

#Deny folder listing
Options -Indexes

#Block access to sensitive files

Order allow,deny
Deny from all


Order allow,deny
Deny from all

È consigliabile bloccare l’accesso anche a tutti i file non necessari
nella cartella wp-admin, aggiungendo le seguenti linee sempre nel file .htaccess:

#Block installation file

Order allow,deny
Deny from all


Order allow,deny
Deny from all

Infine, date un’occhiata al file robots.txt, anch’esso situato nella root della vostra installazione. Controllate che non vi siano inserite delle informazioni sensibili rispetto alle cartelle del sito web, come ad esempio quella di amministrazione che magari avete rinominato, oppure un’altra nella quale sono contenuti documenti importanti. La sola esclusione dal file robots.txt, per bloccarne l’indicizzazione da parte dei motori di ricerca, potrebbe risultare un’informazione preziosissima ad un potenziale malintenzionato per sapere dove attaccare.

 

3. Cambiate i permessi a files e cartelle

Accertatevi che i files e le cartelle della vostra installazione WordPress abbiano i permessi appropriati in modo da prevenire potenziali attacchi da parte di malintenzionati. Potete cambiare i permessi direttamente dal vostro client FTP oppure dal pannello di gestione file del vostro hosting provider.

Solitamente, i seguenti valori sono comunemente ritenuti validi:

  • Tutte le cartelle dovrebbero essere impostate su 755.
  • Tutti i file dovrebbero essere impostati su 644.
  • Il file wp-config.php dovrebbe essere impostato su 600
  • Il file .htaccess dovrebbe essere impostato su 604

4. Disabilitate l’editor dei file

Questa procedura è necessaria per aggiungere un ulteriore livello di sicurezza alla vostra installazione WordPress, al fine di prevenire intrusioni indesiderate e limitare possibili errori commessi da utenti autorizzati. Per disabilitare l’editing dei file dall’interno dell’area di admin, aggiungete la seguente riga al file wp-config.php:

define( 'DISALLOW_FILE_EDIT', true );

Questo codice equivale a rimuovere le autorizzazioni “edit_themes” “edit_plugins” e “edit_files” per ogni utente registrato al vostro sito.

Potete aggiungere un ulteriore livello di sicurezza qualora vogliate evitare che gli utenti registrati possano installare temi e/o plugin. Sempre all’interno del solito wp-config.php, aggiungete la seguente linea:

define( 'DISALLOW_FILE_MODS', true );

Ricordatevi però di disabilitare questa direttiva, reimpostandola su false, ogni volta che desiderate fare delle operazioni di installazione.

Attenzione: tutte queste modifiche al file wp-config.php devono essere apportate prima della riga:

/* That’s all, stop editing! Happy publishing. */

 

5. Usate una CDN come DNS

I vantaggi nell’utilizzo di una CDN (Content Delivery Network) per incrementare le performance del vostro sito web sono abbastanza noti, tuttavia l’uso di una CDN come DNS service può incrementare il livello di sicurezza nei seguenti modi
:

  • è possibile sfruttare un active firewall continuamente aggiornato contro le più comuni tecniche di attacco;
  • è possibile prevenire attacchi di tipo “Brute Force” utilizzando un network distribuito di providers che minimizza l’impatto e applica delle regole di blocco per individuare il tipo di attacco (solitamente Dos o DDoS);
  • maschera il vero IP del vostro server in modo da evitare attacchi diretti al vostro sito web.

6. Backup. Backup. Backup

In genere è raro che vi troviate nella condizione di dover ripristinare una copia di backup del vostro sito web. Ma se è questo il caso, allora è bene conoscere una regola speciale denominata la “3-2-1 backup rule”:

  • effettuate almeno 3 backups;
  • in 2 differenti formati (come minimo);
  • uno di questi deve essere in una posizione fisica differente rispetto agli altri.

Questo perché qualora vi trovaste in una situazione di emergenza, è inutile avere tutti i backup nella stessa posizione e nello stesso formato. Ricordate inoltre di generare sempre un nuovo backup dopo aver applicato aggiornamenti o modifiche sostanziali alla vostra installazione di WordPress.

Le ultime news dal mondo Digital

CLIENTI


CERTIFICAZIONI



SEDE

Via Tata Giovanni, 8
00154 Roma (RM)
P.I. 12658471003
N° reg. REA RM-1391919