[WP] Mettiamo in sicurezza WordPress

venerdì, 10 Ago 2018 - Gestione WordPress

Primi passi elementari

Dispositivi e reti

  • accedi alle aree amministrative del tuo hosting e di WordPress solo da dispositivi affidabili e da reti sicure

Hosting

  • scegli un hosting affidabile
  • scegli un hosting che ti metta sempre a disposizione anche l’ultima versione di Apache, MySQL (o MariaDB) e PHP

Database

  • nome del database: se l’hosting ti permette di sceglierlo chiamalo in modo non scontato (che non si possa indovinare facilmente)
  • utente del database: se l’hosting ti permette di sceglierlo chiamalo in modo non scontato
  • password dell’utente del database: deve essere una password MOLTO robusta
  • privilegi dati all’utente sul database, aspetto da approfondire, per ora ok a ALL
  • prefissi tabelle del database: cambia wp_ in qualcosa di non scontato

File e cartelle

  • Non superare questo livello di permessi (*nix system):
    • file: 644
    • directory: 755

WordPress

  • utente amministratore di WordPress
    • nome utente amministratore di WordPress diverso da admin
    • nome pubblico dell’utente amministratore di WordPress diverso dal nickname
    • NON utilizzare l’utente amministratore di WordPress per pubblicare
    • cambia l’id all’utente amministratore di WordPress (*modifica SQL in database*)
  • fai scegliere agli utenti WordPress password MOLTO robuste e falle cambiare almeno ogni 6 mesi
  • editor e autori: nome pubblico diverso dal nickname
  • dai agli utenti il minimo livello di autorizzazioni
  • disabilita la registrazione di utenti se non necessaria
  • rimuovi plugin e temi non utilizzati
  • impostazioni più restrittive per i commenti o disabilitali se non ti interessano; plugin anti-spam
  • disabilita pingback e trackback se non ti interessano
  • tieni aggiornati WordPress, temi, plugin
  • se qualche plugin o tema non viene aggiornato da un po’ verifica che il suo sviluppo sia ancora attivo
  • procedura di backup automatici; verifiche periodiche della procedura di recupero; almeno un backup esterno all’hosting
  • rinomina wp-admin e wp-login.php
  • nascondi la versione di WordPress
    • nel file functions.php:
      remove_action('wp_head', 'wp_generator'); 
               function remove_wp_version_rss() { return ''; } 
               add_filter('the_generator','remove_wp_version_rss');
      
    • rinomina o cancella readme.txt e wp-admin/install.php
  • wp-config.php
    • dopo l’installazione rinnova le SALT KEYs
    • forza l’accesso https per l’area del backend: define('FORCE_SSL_ADMIN', true); (* l’hosting deve supportare TLS per default, anche se non attivato dall’utente *)
    • disabilita la possibilità di modificare temi e plugin dal backend: define('DISALLOW_FILE_EDIT', true);
    • metti i parametri del database fuori dal file e richiamali
  • .htaccess
    • order allow,deny
      deny from all
      
    • proteggi wp-login.php con password (da provare, dipende dall’hosting in uso)
    • nega la possibilità di navigare tra le directory o inserisci in OGNI cartella un index.php vuoto
  • HTTPS
    • metti sotto crittografia tutti i form del tuo sito
  • PLUGIN
    • iThemes Security (possibilità di rinominare url di accesso al backend; limitare tentativi di accesso -Local Brute Force Protection-; nascondere messaggio di errore in caso di tentativo di accesso errato)
    • WordFence (possibilità di nascondere messaggio di errore in caso di tentativo di accesso errato, …)
    • Sucuri Security (monitoraggio dei tentativi di accesso, monitoraggio delle modifiche, …)
    • BBQ: Block Bad Queries
    • CAPTCHA al login
    • autenticazione a due fattori al login