Come rendere più sicuro wordpress

Capita, a volte, di ritrovare il proprio sito WP modificate e/o hackerato da terzi a causa di scarsità di sicurezza.

Ci sono alcuni accorgimenti che possono tornare utili per rendere difficile l’hacking di wordpress.

In questo tutorial verranno riportati dei suggerimenti su come rendere più sicuro WP.

 

Blocco con .htaccess e .htpasswd

Come rendere più sicuro wordpress

Il blocco del wp-admin può essere un buon inizio per bloccare i tentativi di accesso non autorizzati e di brute force della propria installazione di wordpress. Utilizzare plugins ed altro non fa altro che rendere maggiormente vulnerabile WP visto che si tratta sempre di script PHP.

Per poter effettuare questa messa in sicurezza basta inserire nella cartella wp-admin due file con dei contenuti specifici. Nel dettaglio di seguito

.htaccess

contenente un codice come il seguente

<Files admin-ajax.php>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

 

dove al posto di /path/to/.htpasswd bisogna mettere il path* del file

.htpasswd

contenente un codice come il seguente

test:dGRkPurkuWmW2

dove test è il nome utente e dopo i due punti c’è il codice in hash.  Un ottimo generatore di password lo si può trovare quì .

In questo modo quando ci si collegherà al wp-admin verrà richiesto prima un’ulteriore password di accesso che se sarà errata non farà procedere e darà errore.

 

*path

Per visualizzare il path di una cartella basta creare un file, e richiamarlo, contenente il seguente codice

<?php
  echo getcwd();
?>

 

Bloccare file e cartelle del core

Come rendere più sicuro wordpress

Bloccare l’accesso a files e cartelle del core di wordpress può essere un buon inizio per scoraggiare eventuali attacchi e/o malintenzionati. Bloccare il wp-config.php è un ottimo metodo per evitare, a causa di falle di sicurezza, di leggere i dati del DB.

Bisogna modificare l’htaccess inserendo questo codice

<files wp-config.php>
order allow,deny
deny from all
</files>

in modo che nessuno possa leggere il file wp-config.php se non da FTP.

Disabilitare listing cartelle

Come rendere più sicuro wordpress

Bloccare la possibilità, tramite htaccess, di visualizzare files e cartelle in una determinata url/cartella è  una ottima cosa.

Basta solitamente inserire nella cartella di interesse un .htaccess con

Options -Indexes

e la lista di files e cartelle non sarà visibile tramite web.

Disabilitare l’esecuzione PHP in determinate cartelle

Come rendere più sicuro wordpress

E’ bene, visto che non è necessario, bloccare in alcune cartelle l’esecuzione di codice PHP. Ad esempio nella cartella uploads inserendo questo codice in un file .htaccess

<Files *.php>
deny from all
</Files>

si evita che eventuali codici PHP vengano eseguiti ad insaputa del proprietario del sito.

Se si vuole fare qualcoda di più specifico basta inserire questo

Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar|etf|ttf|otf|woff|less)$">
Allow from all
</Files>

che blocca tutte le estensioni tranne quelle indicate.

Bloccare l’accesso all’htaccess

Come rendere più sicuro wordpress

Visto che con l’htaccess si può bloccare di tutto può essere un buon punto di partenza da parte di malintenzionati di carpire informazioni.

In questo caso basta bloccarne l’accesso se non tramite FTP con questo codice nell’htaccess stesso

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

 

Bloccare il file xmlrpc.php

Come rendere più sicuro wordpress

Il file xmlrpc.php, vista la tua funzione, può essere utilizzato da terzi per effettuare accessi non autorizzati sul sito WordPress. E’ bene bloccarne l’accesso tramite file .htaccess

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

 

Bloccare la lettura della lista autori

Come rendere più sicuro wordpress

Bloccare la lettura della lista degli autori è un buon metodo per evitare di rendere noto gli username di chi scrive e quindi la possibilità di craccare le password. Basta aggiungere nel file .htaccess questo

RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F]

e non verrà visualizzato il nome dell’autore quando richiamato.

Disabilitare l’edit dal pannello admin

Come rendere più sicuro wordpress

Se terzi riuscissero ad accedere al pannello admin, permettergli di editare  i files è un buon modo per ridurre al minimo i danni. Basta in questo caso inserire nel wp-config.php questa riga

define('DISALLOW_FILE_EDIT', true);

che blocca l’edit dal pannello admin forzando l’utente ad interagire tramite FTP.

Blocco tentativi login con Login LockDown

Come rendere più sicuro wordpress

Un’ottima alternativa al blocco con htaccess è il plugin Login LockDown che permette di loggare, comunicare tramite mail e bloccare chiunque sbagli il login sul sito WP. Questo è un ottimo metodo per avere traccia di chi cerca di effettuare un accesso non autorizzato al WP. Questo plugin permette anche di bloccare l’accesso ad un IP specifico dopo X tentativi falliti per un periodo di tempo a scelta dell’admin.

Cambiare il prefix standard delle tabelle

Come rendere più sicuro wordpress

Per evitare injection SQL causate da plugins o altro è bene non utilizzare il prefix standard di wordpress ma usarne altri.

In fase di installazione è bene cambiare questo prefix da wp_ ad altro . In questo modo sarà difficile accedere, in caso di problemi, alle tabelle da remoto.

Come rendere più sicuro wordpress

Non fornire informazioni in caso di login errato

Come rendere più sicuro wordpress

Modificare il messaggio d’errore in caso di login errato può evitare di fornire alcuni dati come “username errato” oppure “password errata” o altro che possono rendere possibile a malintenzionati di loggare in WP. In questo caso basta inserire nel file functions.php del tema questo

function custom_wordpress_error_message(){
  return 'Ritenta, sarai più fortunato...';
}
add_filter( 'login_errors', 'custom_wordpress_error_message' );

ed in questo caso comparirà la scritta “Ritenta, sarai più fortunato…” invece dell’errore preciso.

Aggiornare, aggiornare e… aggiornare

Come rendere più sicuro wordpress

Aggiornare, a tempo debito, plugins, temi, core di wordpress è un buon modo per evitare che eventuali bug di sicurezza possano essere sfruttati per entrare in wordpress.

L’aggiornamento, se fatto manualmente, va effettuato anche con cautela. Attendendo magari qualche giorno prima di aggiornare e vedendo sui vari siti di tracking error come ad esempio wordfence se l’aggiornamento appena rilasciato ha bug di sicurezza.

Attenzione: è sempre bene aggiornare, magari con moderazione e verificando prima se ci sono eventuali problemi.

Inserire il SALT nel wp-config.php

Come rendere più sicuro wordpress

Molte informazioni passano dal browser tramite cookies. Nel wp-config.php sono presenti alcune chiavi di sicurezza riportate di seguito

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

e possono essere compilate facendo copia-incolla direttamente dal sito ufficiale di wordpress.

Bloccare le injection

Come rendere più sicuro wordpress

Alcune esecuzioni su files php possono essere bloccate tramite htaccess inserendo questo codice

RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})

e fare in modo che i tentativi di injection diminuiscano

Rimuovere il numero di versione di wordpress

Come rendere più sicuro wordpress

Nascondere la versione di wordpress può tornare utile in quanto si rende difficile l’identificazione di alcuni bug da parte di terzi.

In questo modo, non sapendo la versione, risulta più difficile riuscire a trovare eventuali vulnerabilità.

Basta, in questo caso, inserire questo codice nel file functions.php del tema

function remove_wordpress_version_number() {
return '';
}
add_filter('the_generator', 'remove_wordpress_version_number');

function remove_version_from_scripts( $src ) {
    if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_version_from_scripts');
add_filter( 'script_loader_src', 'remove_version_from_scripts');

 

Utilizzo di password complesse

Come rendere più sicuro wordpress

L’utilizzo di password complesse è un buon modo per tenere al sicuro l’accesso a wordpress. Utilizzando password come “password” oppure “123456789” o la propria data di nascita o altro non è di certo di grande aiuto.

Fortunatamente wordpress tende a fornire password sicure

Come rendere più sicuro wordpress

tuttavia è possibile generare password sicure anche con sistemi esterni come Norton password generator e Strong Password Generator .

Disabilitare la visualizzazione errori

Come rendere più sicuro wordpress

Lasciare abilitato l’error_reporting e gli errori può sembrare una buona cosa per scovare errori e/o problemi tuttavia mostra anche informazioni utili come nome utente del servizio ed altri dati come il nome del file che da errore che potrebbe avere bug di sicurezza. In questo caso è bene disabilitare la visualizzazione editando direttamente il wp-config.php ed inserendo queste due righe

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

Eventuali errori possono essere visualizzabili direttamente dagli error_log dell’hosting.

Tenere traccia delle modifiche e delle azioni degli utenti

Come rendere più sicuro wordpress

Tenere traccia delle azioni di chi ha accesso al pannello admin è un buon modo per evitare che terzi possano prendere le password di qualcuno abilitato ad editare e a fare danni non riparabili.

Un plugin che torna utile a questo controllo è WP Security Audit Log che permette  di tenere traccia di tutto all’interno del proprio blog dal semplice post ad un aggiornamento e/o modifiche importanti al sito. Il log è visualizzabile dal sito e ricevendo notifica tramite mail.

Sito in https

Come rendere più sicuro wordpress

Avere il sito in https utilizzando un certificato SSL permette di criptare i dati e di rendere maggiormente sicuro il proprio sito e chi lo visita.  In questo modo i dati non possono essere sniffati da terzi e quindi utilizzati per accedere al sito wordpress.

Backup, backup e ancora backup

Come rendere più sicuro wordpress

Sembrerà banale ma fare backup a volte può salvare da situazioni spiacevoli. Permette di recuperare files o altri contenuti magari compromessi. Il ripristino ad uno stato precedente di un sito può aiutare ad evitare che rimange offline troppo tempo.

Permessi a files e cartelle

Come rendere più sicuro wordpress

Viene spesso sottovalutata l’importanza dei permessi di files e cartelle  che possono essere utilizzate, se con permessi settati male, per esportare dati o eseguire altre azioni che dovrebbero essere evitate.

I permessi più sicuri sono 755 per  le cartelle e 644 per i files.

Se si dispone di un accesso SSH si possono lanciare i seguenti comandi.

Per le cartelle

find /path/percorso/ -type d -exec chmod 755 {} \;

Per i files

find /path/percorso/  -type f -exec chmod 644 {} \;

 

Bloccare paesi “a rischio” attacco

Come rendere più sicuro wordpress

Può sembrare drastica come cosa ma a volte bloccare intere nazioni, di cui ovviamente il proprio sito non ha bisogno, può evitare problemi di sicurezza.

Per fare questo si può agire in 3 modi differenti.

  1. Il provider può bloccare queste nazioni
  2. Si utilizza il plugin IP2Location Coutry Blocker
  3. Tramite il sito di IP2Location si edita l’htaccess e si bloccano gli IP (sconsigliato, consigliato il punto 1 o 2)

Come rendere più sicuro wordpress

Aggiunta blocco XSS-Protection

Come rendere più sicuro wordpress

L’header HTTP di risposta X-XSS-Protection è una funzionalità di Internet Explorer, Chrome e Safari che impedisce alle pagine di caricarsi quando rilevano attacchi di tipo cross-site scripting reflected (XSS).

Per bloccare questa tipologia di attacchi basta inserire nell’htaccess il seguente codice

<IfModule mod_headers.c>
  Header set X-XSS-Protection "1; mode=block"
</IfModule>

 

Aggiunta nosniff agli headers

Come rendere più sicuro wordpress

Google ha rilasciato un aggiornamento per la sicurezza di Chrome e ha richiesto agli sviluppatori web di fornire un’intestazione di risposta nosniff per aiutare a prevenire gli attacchi tramite browser web. Questo problema è importante dal punto vista SEO.

Per inserire il riferimento nosniff bisogna aggiungere nell’htaccess questo codice

<IfModule mod_headers.c>
  Header set X-Content-Type-Options nosniff
</IfModule>