Mettere in sicurezza un sito web basato su Wordpress
La metà dei siti web presenti sul web utilizza un sistema di gestione contenuti (CMS).
Un CMS è un contenitore che agisce “di nascosto” (back-end) semplificando e automatizzando l’inserimento e l’aggiornamento dei contenuti presenti sul sito.
Più della metà dei siti web che utilizzano un CMS, si affidano a Wordpress, un sistema open source nato come piattaforma di blog e oggi utilizzato per qualsiasi tipologia di sito web, perfino eCommerce.
Il crescente utilizzo di Wordpress degli ultimi anni, lo ha reso un bersaglio particolare valido per gli hacker, che approfittano di qualsiasi vulnerabilità per entrare senza autorizzazioni laddove c’è la possibilità di farlo.
Perché un hacker dovrebbe entrare nel mio sito? Questa è la domanda che ci viene posta quando cerchiamo di trattare aspetti relativi alla sicurezza di Wordpress. La risposta è semplice: purtroppo non esistono solamente hacker etici o attivisti, molti “hacker” potrebbero farlo per sfida, o addirittura anche solo per divertimento, per cui ritrovarsi con un deface del sito (Figura 1) può essere veramente facile.
Figura 1 – Deface di un sito web Wordpress based ad opera di un team di hacker.
Wordpress è un sistema semplice e molto versatile che, con qualche piccolo e semplice accorgimento in fase di installazione e di gestione, può diventare una vera e propria fortezza difficilmente espugnabile. Vediamo come farlo:
Mettere in sicurezza il pannello di controllo
Per l’inserimento dei contenuti, il CMS Wordpress utilizza un pannello di controllo accessibile con un username e una password.
Un hacker utilizza, per scovare le credenziali di accesso a Wordpress, una tecnica chiamata bruteforce. Un metodo di ricerca della parola chiave basato sui tentativi e sull’utilizzo di un dizionario. Una password di una parola di 8 caratteri senza maiuscole, numeri e caratteri speciali (es. giardino) ha un livello di sicurezza a meno di 16bit e il tempo per trovarla può variare da poche ore a qualche minuto (tempistica che negli anni diminuirà grazie all’aumento della capacità di calcolo dei processori).
Si capisce bene che cambiare la password “giardino” in una password più complicata, come “Giardin0!” può rendere davvero difficile entrare nel pannello di controllo con la "forza bruta".
Di default, lo username di Wordpress è “admin”. E’ altamente consigliato cambiarlo, per evitare che ai malintenzionati basti trovare la password per entrare nel pannello di controllo.
Modificare lo username con un altro nome aggiunge un ulteriore ostacolo all’accesso al pannello di admin.
Sarebbe importante modificare anche l’url di accesso al pannello di controllo che di default è http://nomedelsito/wp-admin.
Può essere fatto con diversi plugin disponibili nel repository ufficiale di Wordpress.
Basterà modificarlo per esempio con http://nomedelsito/pannelloadmin
Questo sistema metterà un ulteriore tassello di sicurezza per il pannello di controllo, rendendo molto difficile trovare l'url da attaccare (figura 2).
Figura 2 - Accesso a wp-admin non consentito
Tuttavia le tecniche a disposizione di un hacker sono davvero molteplici, e mettere in sicurezza il solo pannello di admin non ci farà comunque dormire sonni tranquilli. Cross site scripting, DDoS, SQL injection, broken authentication, l’utilizzo del brute force è davvero l’ultima delle opzioni che un hacker ha per attaccare un sito web.
Database SQL
Al momento dell’installazione, Wordpress richiede sempre i dati di accesso al database. Questi dati sono salvati all’interno del file wp-config.php e vengono utilizzati dal CMS per accedere al DB ogni qualvolta abbia la necessità di scrivere o leggere dei dati.
Le tabelle di Wordpress, all’interno del database, hanno di default il prefisso wp_. Questo prefisso può essere impostato al momento dell’installazione di Wordpress in maniera molto semplice, ma modificarlo successivamente è comunque fattibile con qualche passaggio in più (che verosimilmente vedremo in uno dei prossimi articoli).
Assicuriamoci, inoltre, che MySQL sia aggiornato all’ultima versione (può essere necessario fare riferimento all’hosting del sito web). L’ultima versione, al momento in cui scriviamo questo articolo, è la 5 (5.7.17 del Dicembre 2016). Già che siamo nell’hosting, assicuriamoci che anche la versione PHP sia aggiornata, attualmente PHP 7 (7.1.3) è l’ultima versione disponibile.
Plugin e temi
Il CMS Wordpress, per funzionare, ha bisogno di un tema (template). Un tema è l’insieme di file che costituiscono il sito web vero e proprio (fisicamente si trovano nella cartella ‘wp-content/themes’). Al suo interno è normale trovare framework (es. JQuery, Bootstrap etc.) utilizzati per lo sviluppo, che devono assolutamente essere aggiornati costantemente.
E’ assolutamente da evitare scaricare temi ‘crackati’ da siti web che propongono temi premium senza pagare. Molto spesso questi temi (ma anche plugin) crackati hanno al loro interno delle backdoor che consentono a chi li mette a disposizione, di entrare nel sito web senza difficoltà, alla ricerca di dati sensibili.
I plugin sono invece delle piccole (o grandi) integrazioni di codice, sviluppati dalla comunità open source e da sviluppatori Wordpress allo scopo di aggiungere funzionalità non presenti nativamente In Wordpress o nel tema in uso.
Ogni plugin è esposto a potenziali vulnerabilità, pertanto è buona norma limitarne l’utilizzo il più possibile e l’aggiornamento costante diventa fondamentale per evitare di facilitare la vita a chi vuole entrare nel sito senza autorizzazione.
Hosting
Ultimo, ma non per importanza, è il web hosting su cui installiamo Wordpress. Chi cerca il massimo della sicurezza, non dovrebbe affidarsi a dei servizi di hosting gratuiti, ma dovrebbe cercare un’azienda con le spalle robuste che offra una discreta protezione DDoS nel piano di abbonamento che viene scelto.
Esistono degli hosting che permettono una installazione automatica e sicura del CMS, modificando automaticamente il nome utente di accesso al pannello di amministrazione, il prefisso delle tabelle del database e aggiungendo al piano di abbonamento anche un certificato SSL.
Con questi accorgimenti, il sito web sarà messo in sicurezza e potremmo dormire sonni tranquilli, nonostante non esista un sistema completamente sicuro, infatti abbiamo sicuramente reso l’hacking di Wordpress molto più complicato e impossibile per un hacker neofita.
Questo articolo è stato pubblicato sul blog di sicurezza informatica f-hack.com a scopo esclusivamente didattico.