Eliminare le Vulnerabilità di WordPress

wordpress-security

Chi segue il mio blog sa quanto abbia a cuore l’argomento sicurezza dei siti web. Mettere al riparo il sito da fastidiosi attacchi hacker dovrebbe essere una priorità per tutti gli utilizzatori di WordPress. Più volte mi è capitato di dover ripristinare siti hackerati e, all’inizio di questa mia avventura da blogger, anche il mio. Da li ho imparato che è estremamente importante tenere il proprio sito al sicuro perché ogni attacco avvenuto con successo implica ore di lavoro per ripristinarlo.

I continui aggiornamenti a cui vengono sottoposti WordPress ed i plugin dedicati, comprendono anche delle patch di sicurezza, atte ad eliminare le vulnerabilità conosciute. Purtroppo questo, seppur importante, non basta ad impedire ai malintenzionati di penetrare il nostro sito e di arrecarvi dei danni.

COME POSSIAMO DIFENDERE WORDPRESS DAGLI HACKER

Una volta, dopo la pubblicazione di un mio articolo riguardo il plugin IThemes Security, alla mia affermazione che settandolo per bene si poteva stare tranquilli, un utente mi rispose che in questo campo non si può mai stare tranquilli. L’esperienza mi ha poi dimostrato quanto questo commento fosse veritiero. Anche se si installa un plugin dedicato alla sicurezza di WordPress, è sempre bene monitorare il sito, aggiornare il core ed i plugin e mettere in campo altre piccole azioni che innalzano il livello di sicurezza.

IL PRIMO LIVELLO DI SICUREZZA SI IMPOSTA ALL’INIZIO

I primi accorgimenti per la sicurezza del nostro sito realizzato con wordpress si mettono in campo in fase di installazione. Scegliere un nome utente per l’amministratore diverso da quello standard (admin), impostare una password efficace che sia sufficientemente lunga, inserendo lettere maiuscole, minuscole, numeri e caratteri speciali, scegliendo come prefisso delle tabelle del database un qualcosa di diverso dal solito wp_ (ad esempio xy_12) e inserendo nel file wp-config.php delle chiavi di cifratura che possiamo copiare ed incollare da questo link.

Se non abbiamo fatto all’inizio tutto questo, in seguito spiegheremo come farlo con un sito in produzione.

ELIMINARE L’UTENTE ADMIN

WordPress di default assegna all’utente amministratore la username “admin”. E’ buona norma cambiare questa user con un nome a nostra scelta. Lasciare l’utente amministratore con la user “admin” significa concedere un altro piccolo vantaggio agli hacker ed ai sistemi automatizzati utilizzati per portare attacchi brute-force al sito. Per cambiare la user admin non serve inserire codice. Basta agire nella sezione utenti della bacheca di WordPress.

UTILIZZARE UNA PASSWORD FORTE

Ogni volta che innalziamo il livello di complessità della password, aumenta il tempo da impiegare per violarla. Utilizziamo password sufficientemente lunghe, inserendo lettere maiuscole, minuscole, numeri e caratteri speciali.

CAMBIARE IL PREFISSO DELLE TABELLE

WordPress per funzionare ha bisogno di un database MySql. Le tabelle del database vengono create automaticamente con l’installazione di WordPress ed hanno il prefisso wp_. Voler cambiare questo prefisso per ragioni di sicurezza è scelta saggia. Ma come si fa a cambiare il prefisso delle tabelle MySql di WordPress? Per prima cosa facciamo un Backup del database. Poi apriamo il file config.php e correggiamo il prefisso delle tabelle:
$table_prefix = ‘wp_” in $table_prefix = ‘xy_12’ (al posto di xy_12 potete mettere un prefisso a vostro piacere)
Poi ci portiamo nel phpmyadmin e seguiamo questa semplice guida. Il gioco è fatto.

INSERIRE LE CHIAVI DI CIFRATURA

A questo punto riprendiamo il file wp-config.php ed apriamolo. Utilizzando il link citato nel paragrafo “il primo livello di sicurezza si imposta all’inizio”, copiamo le chiavi di cifratura ed incolliamole sovrascrivendole a quelle di default del file (che all’inizio sono vuote come vedete sotto)
define('AUTH_KEY','qui la chiave');
define('SECURE_AUTH_KEY','qui la chiave'); 
define('LOGGED_IN_KEY','qui la chiave'); 
define('NONCE_KEY','qui la chiave'); 
define('AUTH_SALT','qui la chiave'); 
define('SECURE_AUTH_SALT','qui la chiave'); 
define('LOGGED_IN_SALT','qui la chiave'); 
define('NONCE_SALT','qui la chiave');

DISABILITARE L’EDITOR DALLA BACHECA

Nel caso un hacker riuscisse ad entrare sulla vostra bacheca, si troverebbe la possibilità di intervenire sul codice dei vostri principali files. Si può porre rimedio inibendo la visualizzazione di questi files dalla bacheca, inserendo sul vostro wp-config.php il seguente codice:

define ( ‘DISALLOW_FILE_EDIT’, true);

Non preoccupatevi. Se inseguito voleste mettere mano ai file di wordpress nascosti, potete utilizzare il vostro client ftp per scaricarli e modificarli.

NASCONDERE LA VERSIONE DI WORDPRESS

Un hacker, può risparmiare tempo e mettere in campo azioni specifiche per una certa versione di wordpress se ne conosce il tipo. La versione di WP la si vede visualizzando il codice sorgente del sito con un qualsiasi browser. Per nascondere la versione di WordPress utilizzata scrivi sul file header.php la seguente stringa:

<?php remove_action ( ‘wp_head’, ‘wp_generator’); ?>

ELIMINARE LA VISUALIZZAZIONE DEGLI ERRORI

Quando vi è un problema con un tema o un plugin, sul nostro sito appaiono dei messaggi di errore. Questi messaggi servono per capire dove sta il problema per così risolverlo. Ma i malintenzionati potrebbero sfruttarlo per ottenere dei punti d’ingresso al sito, in quanto contengono il percorso del server. Quindi è buona norma disabilitare la visualizzazione dei messaggi di errore. Per farlo, aggiungi al file wp-config.php il seguente codice:

error_reporting(0);
@ini_set(‘display_errors’, 0);

CAMBIARE LA URL DELLA LOGIN

Anche i sassi sanno che per accedere ad un sito wordpress si comincia dalla pagina di login attarverso la url miostio.xx/wp-admin. Per eliminare questa facilitazione potremmo cambiare l’ultima parte della url /wp-admin con una parola a nostro piacere e farla diventare ad esempio miosito.xx/miaparola. Per farlo bisogna operare su 3 files diversi nella seguente maniera:

Sul wp-config.php inserire:

DEFINE(‘WP_ADMIN_DIR’, ‘miaparola’);
DEFINE (‘ADMIN_COOKIE_PATH’, ‘SITECOOKIEPATH.WP_ADMIN_DIR);

Editare poi il function.php del tema aggiungendo queste righe:

add_filter(‘site_url’, ‘wpadmin_filter’, 10,3);
function wpadmin_filter($url,$path,$orig_scheme) {
$old = array(“/(wp-admin)/”);
$admin_dir = WP_ADMIN_DIR;
$new = array($admin_dir);
return preg_replace($old, $new, $url, 1); 
}

Ed infine scrivere sul file .htaccess

RewriteRule ^miaparola/(.*) wp-admin/$1?%{QUERY_STRING} [L]

NASCONDERE IL FILE WP-CONFIG

Il file wp-config è forse il file più importante di tutto WordPress. Esso contiene l’indirizzo del db e le credenziali di accesso ad esso. Insomma, se un malintenzionato venisse a conoscenza del contenuto di questo file provocherebbe un disastro. Per fortuna possiamo nasconderlo attraverso l’inserimento di poche semplici istruzioni all’interno del file .htaccess. Al di fuori dello spazio tra # BEGIN WordPress e # END WordPress inseriamo
<Files wpconfig.php> 
 Order Allow,Deny 
 Deny from all 
</Files>

METTERE I FILE WP-CONFIG E .HTACCESS IN SOLA LETTURA

Come detto, i file più importanti di WordPress sono il wp-config.php e l’hatccess. Proteggerli dalle modifiche è un passo obbligato in ottica sicurezza. Come fare? Si può fare direttamente agendo all’interno di filezilla. Tasto destro sul file e cliccare su “permessi file”. Impostarli poi a 644 che vuol dire che i file sono accessbili da tutti in sola lettura, tranne che per il proprietario che potrà agire anche in scrittura.

BACKUP, BACKUP, BACKUP

Non si può mai sapere, anche se abbiamo messo in pratica tutte le precauzioni del mondo il nostro sito in WordPress potrebbe essere violato lo stesso. In questo caso un backup dei file e del database ci sarà indispensabile. Il Backup è comodo anche se dovesse succedere che qualche plugin andasse un conflitto con qualche altro plugin o con wordpress stesso e il sito restituisce solo una schermata bianca. Un valido aiuto per tutto ciò è il plugin UpdraftPlus – Backup and Restore. Questo Plugin permette di fare una backup sia dei dati che dei database, immagazzinarli in un percorso specifico del nostro sito o in un’applicazione tipo dropbox e similari. Basterà settarlo all’inizio e lanciare il primo backup. Dopodiché potremmo anche decidere se effettuare dei backup in automatico con cadenza giornaliera, settimanale, quindicinale o mensile. Il plugin da anche la possibilità di decidere quanti backup conservare. Io di solito ne conservo due. Quando parte il terzo backup, il più vecchio si cancella. Una volta fatto il backup è possibile ripristinare il sito tramite il semplice pulsante restore. Oltre al backup ed al restore, questo plugin da anche la possibilità di effettuare una copia clone. Il plugin è scaricabile dalla repository dei plugin di WordPress ed è gratuito.
Per mia sicurezza, di solito faccio anche una copia dei files e delle cartelle in locale e mi esporto il database in locale tramite phpmyadmin.

PLUGIN PER LA SICUREZZA DI WORDPRESS

Esistono diversi plugin che ci aiutano a fare quello che abbiamo spiegato fin’ora, aggiungendo anche qualche funzione in più, tipo il ban degli indirizzi ip che identifichiamo come origine di attacchi, il permesso di accedere alla bacheca solo in determinati orari, l’integrazione con antivirus e tanto altro ancora. Quelli che ho testato hanno dato tutti ottimi risultati. Il mio preferito resta IThemes Security, ma potete utilizzare con fiducia anche Wordfence e All in One WP Security (tutti scaricabili dalla repository di wordpress)
About the author

Flavio

Mi trovo nel campo del web dal 2006. Nel tempo mi sono specializzato soprattutto nell'indicizzazione,  nel posizionamento di siti internet e nell'utilizzo dei social media principali a fini di marketing.

Readers Comments (6)

  1. Salve, da un po’ di tempo seguo il tuo blog che trovo molto interessante, complimenti!
    Una domanda: vorrei rinominare e spostare la cartella wp-content utilizzando il plugin iThemes Security (di cui parli in altri post). Al momento la mia installazione di WP è ancora abbastanza “pulita” avendo installato solo i plugin relativi a sicurezza e backup (akismet, iThemes e UpdraftPlus). Se ora rinomino e sposto wp-content, i plugin installati verranno ancora riconosciuti o dovrò re-installarli? Quando successivamente installerò un tema (es. un tema di Elegant Themes) rischio di incorrere in qualche incompatibilità o i temi installati riconosceranno automaticamente in quale cartella posizionarsi? Grazie per la risposta

    • Ciao Marco e grazie per l’apprezzamento. Rinominare o spostare la cartella wp-content è un’operazione abbastanza semplice e lo puoi fare tranquillamente anche senza plugin. Se lo fai da plugin rischi di non capire dove le modifiche sono state fatte e potresti non sapere dove mettere mano se qualcosa va storto. Facendolo a mano invece il rischio è zero. Se qualcosa andasse storto infatti basta rimettere tutto com’era e sei a posto.
      Sicuramente questa operazione non comporta problemi, né per i plugin, né per i temi (vecchi o nuovi). Ithemes infatti non fa altro che andare a scrivere sul wp-config che cambia il percorso per tutto ciò che è contenuto in wp-content. E wordpress seguirà queste istruzioni senza conseguenze per il tuo sito. Ti consiglio però di installare prima il plugin Broken Link Checker, che scansiona il sito alla ricerca di collegamenti rotti. Potrà capitare infatti che dopo l’operazione, non ti si visualizzeranno alcune immagini e questo sarà dovuto al fatto che la loro url punta ancora al wp-content. Broken link checker ti segnalerà questi link rotti e ti permetterà di correggerli a mano. Nel prossimo articolo comunque avevo intenzione di trattare proprio questo argomento. Saluti!

      • Ok, grazie mille per la risposta… proverò a farlo a mano: ciò vuol dire inserire questo codice dentro il file wp-config.php?

        /* percorso locale completo alla directory (senza slash finale) */
        define( ‘WP_CONTENT_DIR’, ABSPATH . ‘esempio/modifica’ );
        /* URI completo della directory (senza slash finale) */
        define( ‘WP_CONTENT_URL’, ‘http://www.tuositoweb.it/esempio/modifica’);

        e poi successivamente nella root principale creare una nuova cartella, “esempio”, spostare l’intera cartella “wp-content” all’interno della cartella appena creata “esempio”, rinominare la cartella “wp-content” in “modifica”.

        è corretto?
        La domanda a questo punto è: questa pratica ha effettivamente un senso per aumentare la sicurezza oppure i vari bot riescono ad identificare questa nuova cartella ed il suo contenuto?

        Aspetto il tuo nuovo articolo
        Ciao Marco

        • Prefetto Marco. Esattamente così. Per la sicurezza è pur sempre una precauzione in più e non è da disprezzare. Ma alla fine l’unica arma valida per star tranquilli è avere sempre i propri backup aggiornati.

  2. Ottime segnalazioni. Grazie!!

Leave a comment

Your email address will not be published.


*


*