WordPress è il CMS più popolare e diffuso nel mondo del web (1/4 dei siti attivi su Internet lo utilizza!), ma la popolarità è un’arma a doppio taglio, che spesso fa rima con vulnerabilità. Un codice aperto e molto utilizzato è statisticamente più incline ad essere violato o esposto dai sui, inevitabili, bug. Per questo motivo è indispensabile, quando installate e configurate una soluzione WordPress per i vostri progetti, di tenere conto di una serie di best practice che vi consentiranno di irrobustire la sicurezza del vostro sito WordPress.
Se hai bisogno di una consulenza per il tuo progetto WordPress, puoi contattarci qui.
Indice dei contenuti
Aggiornare WordPress
Aggiornare la versione del core WordPress, del tema e dei vari plugin, non è solo un vezzo, ma una vera necessità. I pacchetti più popolari sono quelli più bersagliati per le vulnerabilità, al tempo stesso i loro sviluppatori sono quelli più rapidi a correggere i propri bug. Tenersi sempre al passo con la versione vi preserva dal restare invischiati in bachi di sicurezza che possono essere anche molto gravi.
Vi consiglio in ogni caso di disabilitare gli aggiornamenti automatici di WordPress, inserendo la seguente entry nel file wp-config.php
define (‘WP_AUTO_UPDATE_CORE’, false); (per gli aggiornamenti della versione core di WordPress)
Installare un certificato SSL
Per dotare il vostro sito di una generale protezione contro il fenomeno dello sniffing delle transazioni, è necessario installare un certificato SSL che vi consentirà di gestire tutte le chiamate con il protocollo sicuro HTTPS. Di recente i siti che utilizzano questo protocollo hanno ricevuto un boost nei ranking di Google.
DA LEGGERE: Come installare un certificato SSL su WordPress
Proteggere il file wp-config.php
All’interno dei vostri file WordPress, il più delicato e critico è sicuramente il file wp-config.php, che raggruppa le configurazioni essenziali del vostro sito WordPress, come le credenziali del database MySQL e l’host dove esso è ospitato. Una delle tecniche di hackeraggio più comuni consiste nell’accedere da remoto a tale file, cambiare i parametri e rendere così, istantaneamente, il vostro sito WordPress inaccessibile.
Per aumentare il livello di sicurezza WordPress, dovete innanzitutto rendere più difficile l’accesso a questo file. Se volete evitare complessi spostamenti del wp-config.php nelle sub-folder, o se non ve la sentite di architettare uno split delle configurazioni in più file interni, potete comunque configurare il vostro .htaccess per impedire l’accesso del file da web, così:
<files wp-config.php> order allow,deny deny from all </files>
Non utilizzare l’utente admin
Qui cadiamo nei consigli di “buon senso”. Una volta WordPress creava di default l’utenza “admin” nel momento dell’installazione, mentre allo stato attuale il proprietario del sito può scegliere il nome della prima utenza creata. Ecco, evitate di chiamare “admin” qualsiasi utente, soprattutto con un ruolo di amministratore (vedi par. successivo). Un hacker medio che desidera “bucarvi” il sito con un brute force attack, inizierà sicuramente a provare con l’utenza “admin”.
Eliminare l’utenza di installazione
Allo stesso modo, nel caso in cui l’hacker riesca a penetrare la vostra base-dati, egli potrebbe comunque risalire alla username dell’utenza che avete creato in fase d’installazione. E’ relativamente semplice, basta interrogare la tabella wp_users e recuperare il record con ID pari a 1. Pertanto vi consiglio, una volta completata l’installazione, di creare una nuova utenza, assegnarle i diritti di amministratore e poi procedere all’eliminazione dell’utenza d’installazione. Ovviamente prestate attenzione a non lasciare assegnati dei post a quell’utenza.
Cambiare il prefisso nelle tabelle del database
Ormai tutti sanno che la base-dati di WordPress presenta delle tabelle che hanno di default un prefisso del tipo “wp_”. Lo sanno tutti, e per questo motivo uno degli attacchi più frequenti consiste nel fare SQL injection diretta sulle tabelle, una volta che si è individuato il DB. Potete rendere più difficile questo attacco cambiando il prefisso delle tabelle, in questa maniera.
Modificare il wp-config.php
Aprite il file wp-config.php e cambiate il prefisso ‘wp_’ con quello nuovo:
$table_prefix= 'newprefix_'; |
Cambiare il prefisso di tutte le tabelle del DB
Dal pannello di phpmyadmin lanciate le seguenti query di RENAME:
RENAME table `wp_commentmeta` TO `newprefix_commentmeta`;RENAME table `wp_comments` TO `newprefix_comments`;RENAME table `wp_links` TO `newprefix_links`;RENAME table `wp_options` TO `newprefix_options`;RENAME table `wp_postmeta` TO `newprefix_postmeta`;RENAME table `wp_posts` TO `newprefix_posts`;RENAME table `wp_terms` TO `newprefix_terms`;RENAME table `wp_term_relationships` TO `newprefix_term_relationships`;RENAME table `wp_term_taxonomy` TO `newprefix_term_taxonomy`;RENAME table `wp_usermeta` TO `newprefix_usermeta`;RENAME table `wp_users` TO `newprefix_users`;Aggiornare le referenze nelle tabelle usermeta e options
UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE( `meta_key`, 'wp_', 'newprefix_' ) |
UPDATE `newprefix_options` SET `option_name` = 'newprefix_user_roles' WHERE `option_name` = 'wp_user_roles' |
Cancellare temi e plugin non utilizzati
Nell’utilizzo di WordPress, spesso può capitare di cambiare tema, oppure di disfarsi di un plugin che non ci serve più. Perché lo tenete ancora installato, allora? Si tratta comunque di una possibile vulnerabilità in più nel codice. Cancellate tutto quello che non tenete attivo.
Nascondere la versione di WordPress
Un indizio utilissimo per gli hacker è quello relativo alla versione WordPress del vostro sito. Come già detto, ogni versione si porta dietro una serie di punti deboli, vulnerabilità e veri e propri bug che gli hacker potrebbero sfruttare a loro vantaggio. Per “nascondere” agli occhi altrui la versione WordPress, dovete inserire il seguente codice all’interno del file functions.php.
/* Hide Version Number *//* Hide WP version strings from scripts and styles* @return {string} $src* @filter script_loader_src* @filter style_loader_src*/function fb_remove_wp_version_strings( $src ) {global $wp_version;parse_str(parse_url($src, PHP_URL_QUERY), $query);if ( !empty($query['ver']) && $query['ver'] === $wp_version ) {$src = remove_query_arg('ver', $src);}return $src;}add_filter( 'script_loader_src', 'fb_remove_wp_version_strings' );add_filter( 'style_loader_src', 'fb_remove_wp_version_strings' );/* Hide WP version strings from generator meta tag */function fb_remove_version() {return '';}add_filter('the_generator', 'fb_remove_version'); Utilizzare i permessi corretti
Mi raccomando, non siate laschi con i permessi di lettura/scrittura sul vostro spazio web Apache. Se permettete a qualsiasi utenza di modificare i vostri files, vi esponete a qualsiasi tipo di attacco.
Questi sono i permessi minimi per le varie tipologie, ma ovviamente potete essere ancor più stringenti.
root directory www.miosito.com/ 0755wp-admin www.miosito.com/wp-admin 0755wp-content www.miosito.com/wp-content 0755wp-includes www.miosito.com/wp-includes 0755.htaccess www.miosito.com/.htaccess 0644readme.html www.miosito.com/readme.html 0400wp-config.php www.miosito.com/wp-config.php 0600Effettuare dei backup periodici
Cosa succede se, a dispetto di ogni precauzione presa, ci manomettono il sito? In linea generale dovremo ripristinare i files originali e/o la base-dati. Per questo motivo è fondamentale schedulare dei backup periodici di entrambe le componenti, da effettuare almeno ogni update importante o comunque una volta ogni 7-10 giorni. Esistono alcuni ottimi plugin che vi consentono di gestire quest’attività, per esempio Backup, che è freemium ma la versione base è praticamente completa. Se non avete troppo spazio disco, potete lavorare con dei backup incrementali.
E voi, quale altre best practices mettete in pratica per aumentare la sicurezza di WordPress?





