rendere sicuro WordPress

Come rendere sicuro WordPress. 20 regole da seguire nel 2018.

Come rendere sicuro WordPress? Oggi parleremo dei vari aspetti da tenere in considerazione per mettere in sicurezza il nostro sito web.

Alcune considerazioni…

Ultimamente il tema della sicurezza legata alla piattaforma WordPress è sempre più discusso sia online che nei vari meetup. Questo è dovuto alla grande diffusione del nostro CMS  e al conseguente aumento di attacchi hacker (Brute Force, SQL Injection […]) nei confronti della piattaforma.

Mettere in sicurezza WordPress non è un gioco da ragazzi, ma devi farlo perché all’interno del nostro WordPress vengono salvate molte informazioni e spesso è anche alla base del nostro business online, per questo motivo è essenziale mantenerlo sicuro.

Spesso la scarsa sicurezza della nostra piattaforma è dovuta al disinteresse dell proprietario del sito o dallo sviluppatore. Non conoscendo i rischi a cui si va incontro!

Esistono diverse strade che potremmo percorrere, quindi vediamo i 20 Step (Best practice e accorgimenti) che possono aiutarci a “blindare” WordPress e renderlo più sicuro.

Come rendere sicuro WordPress

I consigli che troverai è una lista di approcci e soluzioni che personalizzeranno la tua installazione e che la proteggeranno dagli attacchi più comuni che il tuo sito web potrebbe subire.

Rendere sicuro WordPress ci consente di mantenere invariati i contenuti pubblicati. Questi sono sicuramente degli aspetti che dobbiamo tenere in considerazione se il nostro obiettivo è quello di avere una lunga e sana vita online.

Mantenere WordPress aggiornato è il primo passo

Il primo essenziale passo che dobbiamo fare è quello di mantenere la nostra installazione aggiornata! Da questa cosa non si scappa perché le falle di sicurezza che vengono scoperte all’interno del core WordPress, nei temi o nei plugin installati vengono corrette soltanto dai futuri aggiornamenti.

Dalla versione 3.7 WordPress permette di ricevere aggiornamenti automatici, questi aggiornamenti al contrario di quanto molti pensano non riguardano l’intera piattaforma comprese le funzioni core ma prevalentemente fix relativi alla sicurezza e bug in generale. Tenere WordPress aggiornato è fondamentale se vogliamo rendere sicuro il nostro sito.

Se hai paura che un aggiornamento possa “rompere” il tuo sito la cosa migliore è quella di creare un suo clone e testare prima su questo l’aggiornamento.

Quando avrai verificato che tutto funziona correttamente sarai pronto ad aggiornare anche il tuo sito principale.

Backup Database

Sempre tra le cose scontate ma non per questo meno importanti è avere un piano backup del database programmato, molti servizi di hosting lo offrono di default altrimenti potresti usare un plugin come Duplicator.

Ti lascio la guida che ho scritto un paio di settimane fa:

Come fare backup sito WordPress con il plugin Duplicator

Installa temi e plugin sicuri

Capita molto spesso che si senta la necessità di utilizzare qualche tema o plugin premium, però non si dispone dei fondi necessari per pagare il prodotto. Generalmente si inizia a cercare in lungo e in largo per trovare qualcuno che sul proprio sito, o magari sui Torrent, abbia messo a disposizione gratuitamente la risorsa che stiamo cercando.

Questa è un’attività molto pericolosa e non soltanto perché così facendo si compromette il lavoro o mettendo a rischio il nostro sito web!

Si potrebbe incorrere in problemi  grossi dove vengono installati dei malware o dei piccoli programmi il cui unico scopo è quello di ottenere le password che vengono utilizzate per accedere e modificare il sito web.

Usare quindi temi e plugin che provengono da fonti non sicure è un alto rischio che potresti evitare facilmente, tutto quello che devi fare è installare i plugin di cui hai bisogno direttamente dal repository WordPress oppure passando dai siti web dei creatori dei plugin.

Gestione utenti e password

Questo può sembrare un’attività banale perché esistono moltissimi strumenti online che permettono al cracker di turno di fare delle scansioni per scoprire quali sono i nomi degli utenti presenti nella nostra piattaforma WordPress, eppure ti assicuro che mettendo in pratica quanto ti sto per consigliare ti salverai da tutte quelle persone che sono soltanto in grado di utilizzare uno script che hanno trovato in rete.

Prima di passare oltre però voglio darti un ultimo suggerimento che ti permetterà di utilizzare i nomi utenti per rendere la tua installazione ancora più sicura. Leggi tutti i punti per capire bene il motivo:

  1. appena installato WordPress, quando viene chiesto il nome utente per l’amministratore tu inserisci comunque admin
  2. una volta fatto il primo accesso crea il vero utente con il quale gestirai il sito web e gli imposti il ruolo di amministratore
  3. adesso entra nella tua piattaforma con il tuo nuovo account e declassifica l’utente admin portandolo a ruolo di sottoscrittore

Creare un password con livello di sicurezza strong

Per rendere sicuro WordPress occorre creare password efficaci. Il livello di sicurezza deve essere strong, per creare password in maniera veloce si può utilizzare un generatore di password sicure.

Si possono creare password tradizionali per esempio:

aFZTeEKaHipRb9li

O le cosiddette “passphrase” password composte da più parole:

70sign40one52sleep50wear38exercise

Un buon esercizio potrebbe essere creare una frase che possiamo facilmente ricordarci e utilizzarla come password, in questo cito l’esempio fatto da Edward Snowden sulla sicurezza online.

Rendere sicuro WordPress con un hosting affidabile

Un aspetto fondamentale per rendere sicuro WordPress è scegliere un servizio hosting affidabile, in fin dei conti la tua installazione WordPress vivrà al suo interno e se dovesse presentare dei problemi metterebbe a rischio la salute del nostro sito web e di tutti gli altri che si trovano sulla stessa macchina.

Quando iniziamo a muovere i primi passi, ci affidiamo  a degli hosting condivisi il cui scopo è quello di mantenere più siti web all’interno di un singolo server. Per configurazioni più sicure e performanti si passa a server VPS oppure completamente dedicati dove i programmi del server vengono gestiti in modo indipendente, ovviamente questo non è sempre possibile.

Se il progetto web sta per partire affidati ad un sistemista che saprà darti consigli in merito!

Attiva un certificato SSL

Come puoi capire dalla lunghezza di questo articolo avere un’installazione WordPress sicura non è affatto un gioco da ragazzi. Anzi è un’attività che richiede tempo, pazienza e conoscenze.

Però dato che poco fa ho parlato di hosting ecco un altro aspetto molto importante : un certificato SSL per mantenere criptate le informazioni che vengono scambiate tra il server e il client.

Lasciando da parte i discorsi in cui la presenza di un certificato SSL viene presa in considerazione ai fini del posizionamento sui motori di ricerca, bisogna ammettere che avere un certificato è essenziale per la sicurezza dei dati che vengono scambiati tra il visitatore e il nostro sito web.

Che tu abbia un modulo di contatti, uno per l’iscrizione alla newsletter o un carrello per il pagamento dei prodotti messi in vendita sul tuo sito è sempre più importante avere questo certificato installato correttamente sul tuo server web.

Ecco la guida con tutti i passaggi per installarlo:

Certificato SSL : come installarlo su un sito WordPress

Utilizzare le wordpress key

Queste key vanno aggiunte al file wp-config.php e servono ad aumentare la sicurezza nella utilizzo/gestione dei cookie di wordpress, basta copiare le chiavi dal generatore ufficiale e incollarle nell’apposito spazio nel wp-config.php


define('AUTH_KEY',        '.=qnVLI&Aii3?fY|1Z)_lF+mo 0r?XP,Aq X-x^I:WsFH[}M-]9qrpjF#A_kwOYO');
define('SECURE_AUTH_KEY', 'm1lN?CiM2ih:H~dJf4RXjv{:vyC1G=a07lc1_Cu5Jk?]-QID!MH6+Wo_aUXj>t&^~}}]8Sbaw/u/x');
define('NONCE_KEY',       'SfN*%D||tM-PgV)f{+Vr;jo0|o}Y9?I~yk)BF&YX>V&l:pr}DiuD1DFq0_9&-=Gx');

Cambiare il prefisso delle tabelle nel database

Il prefisso di default delle tabelle di wordpress è “wp_” questo (come l’utente di defalt “admin”) è un informazione importante che noi “regaliamo” ad eventuali hacker.
Cambiare il prefisso per esempio in “hsdfg67hjk32_” diminuisce le possibilità di essere vittime di attacchi SQL Injection.

Se avete gia installato wordpress e volete cambiare il prefisso delle tabelle si può fare con alcuni plugin (che vedremo piu avanti) o a “mano”.

Per farlo senza plugin occorre cambiare alcune impostazioni nel wp-config.php, rinominare tutte le tabelle nel database con il nuovo prefisso (anche le tabelle di eventuali plug-in) e aggiornare le referenze delle tabelle usermeta e options.

Qui di seguito posto il codice necessario, se si vuole utilizzare questa soluzione e non si è molto ferrati con SQL consiglio di fare dei test su una installazione di WordPress vuota. Successivamente rifare il procedimento sul sito online in mantainence mode (logicamente prima occorre fare un backup di tutto il sito e del database).

Nel esempio il mio nuovo prefisso sarà ‘newprefix_’.

Modifichiamo il wp-config.php

Apriamo il file config.php e cambiamo il prefisso ‘wp_’ con quello nuovo:

$table_prefix = 'newprefix_';

Cambiamo il prefisso di tutte le tabelle nel database

Dal pannello phpmyadmin incolliamo nella tab sql le seguenti query:

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`;    

Aggiorniamo 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'  

ora dal panello phpmyadmin controlliamo se i prefissi sono cambiati correttamente.

Utilizzare il file .htaccess

Il file .htaccess  è un potente mezzo che ci consente di  effettuare operazioni lato server. Può essere utilizzato per limitare l’accesso ad aree del nostro sito. Visto la grande varietà di configurazioni e server disponibili queste tecniche vanno testate, qui di seguito quelle più comunemente supportate.

Proteggere il file wp-config.php

order allow,deny
deny from all

Proteggere la cartella wp-includes:

RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]  

Nascondere la versione di wordpress

Ispezionando il codice di un sito WordPress è possibile vedere la versione installata, questo può facilitare il lavoro degli hackers che sapendo il numero della versione potrebbero (se il cms non è aggiornato) risalire a eventuali bug. Per nascondere la versione e rendere sicuro WordPress utilizziamo il seguente codice nel 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');
  

Cancellare i temi e i plug-in non utilizzati

Per mettere in sicurezza WordPress è importante cancellare temi e plugin che non utilizziamo per diminuire la possibilità di falle nel codice. I plugin e i temi utilizzati devono (se possibile) essere sempre  aggiornati all’ultima versione. Questo è uno dei maggiori fattori di rischio in una installazione WordPress. Quindi cancella i plugin che non utilizzi per rendere sicuro WordPress.

Utilizzare i permessi corretti

Per rendere sicuro WordPress occorre dare uno sguardo ai permessi di file e cartelle, tutte le cartelle dovrebbero essere 755 e i file 644, il wp-config.php dovrebbe essere settato con permessi 600 ecco un esempio:

root directory  www.miosito.com/                      0755
wp-admin        www.miosito.com/wp-admin              0755
wp-content      www.miosito.com/wp-content            0755
wp-includes     www.miosito.com/wp-includes           0755
.htaccess       www.miosito.com/.htaccess             0644
readme.html     www.miosito.com/readme.html           0400
wp-config.php   www.miosito.com/wp-config.php         0600  

Disabilita la possibilità di modificare i file

Molto spesso ci chiediamo le motivazioni che spingono una persona a fare dei tentativi di accesso all’interno della nostra installazione WordPress. La cosa interessante è che in alcuni casi chi desidera entrare nel nostro backend non è minimamente interessato ai dati ospitati, ma desidera collegare qualche suo script.

Per fare questa operazione ha bisogno di modificare i file presenti all’interno della nostra installazione e se guardi con attenzione, WordPress offre questa funzionalità all’interno dei suoi strumenti.

Con un utente amministratore, accedi alla bacheca e posizionati alla voce Aspetto -> Editor scegliere e  inserire nel file wpconfig.php la seguente stringa:

define('DISALLOW_FILE_EDIT', true) 

Con questa semplice modifica sarai in grado di rimuovere completamente l’editor dalla bacheca della tua installazione WordPress e anche se qualcuno sarà stato in grado di ottenere gli accessi alla tua piattaforma non sarà in grado di modificare i file presenti al suo interno.

Modifica i messaggi di errore standard per la login

Per anni gli utenti WordPress si sono lamentati di una cosa, i messaggi di errore forniti da questa piattaforma sono fin troppo descrittivi. In molti casi quando qualcuno sbaglia la login il messaggio di errore comunica se è stato sbagliato il nome utente, la mail o addirittura la password.

Ecco perché potrebbe essere utile modificare i messaggi di errore che la nostra installazione fornisce.

Per fare questo basta aprire il file functions.php del tuo tema attivo e inserire il seguente codice:

add_filter( 'login_errors', 'sam_error_message' );
function sam_error_message( $error ){
    // Controllo la presenza di un errore
    $pos = strpos($error, 'incorrect');
    
    if ( is_int( $pos ) ){
        // Creo un messaggio di errore generale
        $error = "Informazioni sbagliate";
    }
    return $error;
}   

A questo punto indipendentemente dal tipo di errore scatenato il messaggio che verrà visualizzato sarà sempre lo stesso e non forniremo alcuna informazione a riguardo.

Se poi desideri personalizzare ulteriormente questi tipi di messaggi puoi sfruttare la variabile globale che può essere sfruttata da questo filtro per controllare gli stati di errore che abbiamo, ecco un piccolo codice d’esempio per capire meglio a cosa sto facendo riferimento.

add_filter( 'login_errors', function( $error ) {
	global $errors;
	$err_codes = $errors->get_error_codes();
	// Nome utente non valido.
	if ( in_array( 'invalid_username', $err_codes ) ) {
		$error = 'ERRORE: Prova di nuovo.';
	}
	// Password Sbagliata.
	if ( in_array( 'incorrect_password', $err_codes ) ) {
		$error = 'ERRORE: Ancora non ci siamo, riprova.';
	}
	return $error;
} );  

Disabilita la navigazione nelle cartelle dell’installazione WordPress del tuo browser

Ti è mai capitato di navigare all’interno del tuo sito e sbagliare URL. Magari non avevi sbagliato del tutto l’indirizzo oppure ti eri dimenticato di inserire il nome del file che volevi caricare, magari hai provato ad accedere direttamente dal browser nella cartella wp-content/uploads/.

Ebbene se lo hai fatto e non hai configurato correttamente il tuo server web, ti sei trovato di fronte a una finestra simile a questa:

Come rendere sicuro wordpress
Come rendere sicuro wordpress. Disabilità cartelle installazione

Per questo motivo, quando voglio impedire la navigazione all’interno di una specifica cartella del mio sito web non faccio altro che posizionarmi all’interno della cartella selezionata (nel nostro esempio mi posiziono nella cartella wp-content/uploads e creo un nuovo file .htaccess all’interno del quale inserisco il seguente codice:

 Options -Indexes

Questo mi permette di impedire a chiunque di navigare i miei file attraverso il browser.

Plug-in per la sicurezza

Ci sono molti plug-in per la gestione e l’aumento della sicurezza in wordpress, alcuni svolgono una specifica funzione altri sono un vero e proprio sistema all-in-one per la gestione della sicurezza del sito. Qui ne elenco alcuni che ho avuto l’occasione di provare e che reputo molto validi:

Google Recaptcha

Questo plugin aggiunge il nuovo recaptcha di google alla schermata di login di WordPress, basta inserire user, password e cliccare il checkbox “i’m not a robot” per verificare che chi sta cercando di accedere non è un software ma una persona.
Il sistema calcola il movimento del mouse a altre variabili “segrete”, occasionalmente ci viene chiesto di selezionare delle immagini, non ci sono più perdite di tempo nello scrivere lettere e parole.

Grazie al Recaptcha si prevengono gli attacchi di tipo Brute-Force.

Wordfence

Questo plugin è un pacchetto completo per aumentare la sicurezza di WordPress, consente di effettuare molte verifiche e accorgimenti per rendere il sito più sicuro.

Le funzionalità più importanti sono:

  1. Scan del sito per verificare che non ci siamo malware
  2. Monitoraggio dell’attività del sito in Real-Time per vedere chi e cosa visita il nostro sito
  3. Sistema di caching “Falcon” in grado di rendere il sito molto performante fino a 30/50 volte più veloce
  4. Possibilità di bloccare Ip (anche in automatico dopo tot. login falliti)
  5. Possibilità di login con verifica tramite cellulare (a pagamento)
  6. Blocco geolocalizzato degli ip per bloccare visite da un determinato stato (a pagamento)
  7. Scan del sito automatico
  8. Firewall
  9. Sistema di notifica che ci avvisa quando avviene qualcosa di sospetto

Wordfence può essere molto utile su siti che sono stati hackerati, tramite il suo sistema di scan può trovare eventuali malware presenti nel sito e prevenire futuri attacchi con le funzionalità di blocco ip.

Wp Security

Questo plugin consente di effettuare varie modifiche al nostro sito per aumentarne la sicurezza. Alcune le abbiamo implementate prima “a mano” come nascondere la versione di wordpress o cambiare il prefisso delle tabelle. Con wp security queste operazioni possono essere fatte in un click da pannello di controllo.

Offre poi funzioni avanzate simili a Wordfence come il live traffic e lo scan del sito.

Blocco Ip Geolocalizzato

Vi sono poi plugin che consentono di bloccare gli ip geolocalmente.

Utilizzando il live traffic monitoring di wordfence potremmo vedere tentativi di accesso da IP per esempio russi. In tal caso potremmo disabilitare la visione del sito per gli IP di questo paese. Logicamente se non ci interessa rendere il sito visibile in quello stato.

Conclusione

Quando si parla di sicurezza on line non è mai abbastanza, in questo articolo ho voluto fare una panoramica sulle strategie e sulle attività che si possono attuare per rendere sicuro WordPress.

I consigli che trovi all’interno di questo articolo hanno dimostrato di essere validi da diversi anni ormai e ci consentono di evitare gli attacchi più comuni che subisce la piattaforma, ma non pensare che tu sia al sicuro da qualsiasi attacco.

Rendere sicuro WordPress non significa applicare due regole, ma è un lavoro costante e in continua trasformazione.”

Le informazioni presenti il questo articolo sono state prese da siti autorevoli come:

 SkillsAndMore

MarchettiDesign

SOS-WP

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

2 Commenti

Davide Rispondi

Un’unico appunto relativo all’articolo: i permessi per i files .htaccess e wp-config.php vanno settati in 444!!!

Bartolomeo Rispondi

Ciao,
grazie per la segnalazione. Per il file wp-config.php a meno di non avere plugin che richiedano l’accesso in scrittura al file di configurazione, che io preferisco non avere, io normalmente setto i permessi di lettura e scrittura del file wp-config.php al solo utente, non a gruppi eventuali e tanto meno agli ospiti.
In pratica setto i permessi di wp-config.php a 600.
Sai dirmi maggiori info?
Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003