iThemes Security per la sicurezza di WordPress

ithemes-security-per-wordpress

ITHEMES SECURITY PER WORDPRESS

ithemes-security-logoI primi passi nel mondo del Web, li ho mossi utilizzando Joomla!. Poi, curioso come sempre, decisi di imparare a padroneggiare i vari linguaggi HTML, CSS, Js e Php. Un bel giorno poi mi decisi ad utilizzare anche WordPress e fu subito amore. Questo CMS mi consentiva di armeggiare con un’interfaccia molto intuitiva, potevo mettere mano al codice liberamente e, non in ultimo, era molto SEO friendly. Di contro, mi sono reso conto che è un CMS molto attaccato dai cracker e parecchio vulnerabile sotto questo punto di vista. Così, dopo essere impazzito a riparare i danni che mi aveva fatto qualche simpaticone, ho deciso di trovare il modo di mettere in sicurezza il mio WordPress. Ed un giorno ho conosciuto il plugin WordPress IThemes Security di cui vi voglio parlare.

LA SICUREZZA DI WORDPRESS

sicurezza siti wordpressCome detto prima, WordPress è un gran bel CMS, ma è soggetto ad innumerevoli attacchi attraverso tentativi Brute Force, Sql Injection, ecc… Attraverso l’uso del plugin ithemes security possiamo mettere in sicurezza i nostri siti contro la stragrande maggioranza di attacchi. Quindi scaricatelo (qui), installatelo ed attivate il plugin. Fatto questo, andiamo a vedere come configurarlo.

PRIMI PASSI

Appena attivato il plugin ci mostrerà una prima finestra in cui ci invita a fare un backup del database, a permettere la scrittura dei files wp-config e htaccess, a impostare le opzioni di default e a trasmettere i dati di rilevamento del plugin agli sviluppatori. Accettate tutte e 4 le opzioni tanto per cominciare. Vedremo in seguito come funzionano e, nel caso, come modificarle.

i-themes-security

 

Dopo questo primo passaggio, ci apparirà una dashboard in cui vengono riportate le criticità presenti sul nostro WordPress. Vengono divise in:

  • “High Priority” ed evidenziate in rosso
  • “Medium Priority” ed evidenziate in giallo
  • “Low Priority” ed evidenziate in celeste

Gli avvisi di alta priorità, sono quelli da risolvere assolutamente per garantire un minimo di sicurezza a WordPress. Una volta visionate queste criticità, portiamoci sul tab “Settings” per andare ad eliminarle.

GLOBAL SETTINGS

E’ il primo blocco di strumenti atti a mettere in sicurezza WordPress con iThemes Security. Qui troveremo le voci:

  • Write to files: spuntando questa casella autorizzeremo il plugin a scrivere sui files wp-config.php e .htaccess. Mettere la spunta su questa voce in quanto, per impostare molte delle le azioni di protezione che andremo a fare con iThemes Security, ci sarà bisogno che il plugin possa scrivere su questi files.
  • Notification Email: Qui inserire la nostra email. Il plugin comunicherà a questo indirizzo tutti i tentativi di attacco respinti.
  • Send Digest Email: Spuntando questa opzione faremo in modo che non ci arrivi più di una email al giorno da parte del plugin. E’ utile in caso si verifichino molti attacchi per non ricevere decine di email al giorno.
  • Backup Delivery Email: Qui deve essere inserito l’indirizzo email a cui il plugin può mandare il backup dei database

Le successive voci sono relative a messaggi che possiamo personalizzare a nostro piacimento o lasciare così come sono:

  • Host Lockout Message: Di default c’è scritto error. Notifica il blocco di quell’host al nostro sito.
  • User Lockout Message: Messaggio che appare dopo vari tentativi di accesso non autorizzato al nostro sito. Notifica il blocco e l’inibizione dell’utente che ha effettuato dei tentativi senza successo.
  • Community Lockout Message: E’ il messaggio che visualizza l’utente quando, dopo vari tentativi di accesso, il suo indirizzo IP viene marcato come dannoso.

Poi avremo altre scelte da effettuare

  • Blacklist Repeat Offender: Se spuntiamo questa casella, facciamo in modo che l’indirizzo IP del malintenzionato venga messo nella lista nera e bannato. Da selezionare.
  • Blacklist Threshold: Il numero di tentativi di accesso consentito prima di essere bloccati. Io lo imposto a 3.
  • Blacklist Lookback Period: Il numero di giorni in cui l’IP viene messo nella lista nera. Lasciate pure il valore di default.
  • Lockout Period: Il numero di minuti in cui l’utente che ha raggiunto il limite dei tentativi di accesso viene bannato. Fate voi.
  • Lockout White List: Gli indirizzi IP “buoni” non soggetti alle restrizioni di cui sopra. Qui potete mettere il vostro indirizzo IP o lasciare bianco.
  • Email Lockout Notifications: Spuntando questa casella, vi arriveranno via email tutti i tentativi di accesso bloccati. Se la spuntate vi renderete conto di quanti tentativi vengono fatti per “sfondare” il vostro WordPress”.
  • Log Type: Il tipo di archivio dei vostri log. Potete scegliere tra Database o Files. Se il vostro sito non ha un traffico mostruoso database andrà alla perfezione.
  • Days to Keep Database Logs: Il numero di giorni in cui vengono conservati i log.
  • Path to Log Files: Dove vengono conservati i log. C’è un percorso di default, se volete cambiarlo dovete agire in questa casella.
  • Allow Data Tracking: Spuntando questa casella consentirete ai produttori del plugin di tenere traccia dei dati che passano attraverso il vostro WordPress. Al di la dei discorsi sulla privacy, questa opzione consente agli sviluppatori di migliorare questo plugin.
  • Disable File Locking: Disabilita gli errori dovuti al blocco dei file. Il plugin consiglia di non spuntare questa casella.
  • Override Proxy Detection: Occorre per il rilevamento del proxy. Lasciare non selezionata.
  • Hide Security Menu in Admin Bar: Selezionando questa casella si nasconde il menù di sicurezza dalla barra di amministrazione visualizzata in cima al pannello di controllo. La scelta di selezionare o deselezionare questa opzione non influisce sulla sicurezza del sito. E’ solo una questione visiva.

Una volta settati i parametri globali, che sono più di configurazione che di protezione del sito, passiamo alla configurazione vera e propria della sicurezza.

404 DETECTION

errore-404

Quando un sito genera pagine 404 (ossia pagina non trovata) si crea un disagio per l’utente che sarà tentato di abbandonare il nostro sito perché non trova ciò che cerca e si creano degli errori durante la scansione degli spider di Google che possono apportare danni all’indicizzazione. Inoltre può essere anche un segnale che il nostro sito è stato violato. Per prevenire questo aspetto il plugin iTheme Security mette a disposizione uno strumento per il rilevamento delle pagine 404. Questo strumento rileva il numero di errori e può bloccarli se si verifichino in un breve lasso di tempo stabilito nelle impostazioni. Quindi flaggiamo senz’altro l’opzione “Enable 404 Detection”. Il resto della configurazione può essere lasciata così com’è.

AWAY MODE

away-mode-ithemes-securityCon questa opzione attivata, facciamo in modo che l’accesso al pannello di controllo del sito sia consentito solo in una certa fascia oraria. Se per esempio si lavora in ufficio dalle 9 del mattino alle 18 del pomeriggio, possiamo inibire l’accesso al pannello dalle 18.01 fino alle 07.59. In questo modo mettiamo un’ulteriore ostacolo a chi tenta di forzare l’ingresso al nostro sito nelle ore stabilite. Gli attacchi possono avvenire in qualsiasi ora del giorno e della notte. In questa maniera limitiamo l’arco di tempo in cui rischiamo di esservi esposti.

BANNED USERS

cartellino-rossoCon un solo click e senza andare a configurare nessun file a mano, possiamo bannare hosts e user-agent. Il plugin rileverà gli ip da bannare e li inserirà in una lista. Gli IP e gli User-Agent nella lista non avranno più accesso al sito. Quindi selezioniamo:

 

  • Default Black List: qui troviamo anche un link (hackrepair.com) che ci permetterà di caricare una black list di indirizzi ed user agent da bannare subito (usarla o meno è una vostra scelta, io non l’ho utilizzata perché me la creo mano a mano che individuo gli elementi da bannare).
  • Ban Users: Se si flegga Enable Ban Users, potremmo aggiungere manualmente nei due campi successivi indirizzi IP e User Agent da bannare.

Nel campo Ban Hosts aggiungete gli indirizzi IP da bannare quando e se ne avrete. Nel campo Ban User Agents inserite tutti i vari bot inutili o dannosi. Potete trovare questi ultimi nei report di analytics alla voce sorgenti di traffico. Come riconoscerli? Beh, se il traffico non proviene da Google, Bing, Yahoo, Facebook o altri portali dove avete inserito il vostro sito, gli altri sono sicuramente visitatori non desiderati (es. semalt.com, make-money-online.7makemoneyonline.com, holasearch.com, ecc…). In caso di dubbio, copiate il nome del bot e incollatelo sulla casella di ricerca di Google e vedete di cosa si tratta).

BRUTE FORCE PROTECTION

bruteforce attack

E’ una delle sezioni più importanti. Come dice il titolo stesso, in questa sezione potremo configurare il plugin in modo da difenderci dagli attacchi brute-force.

Per prima cosa inseriamo la nostra email nel campo “Get your iThemes Brute Force Protection API Key” e salviamo. Quindi in questo stresso campo ci apparirà la api key che ithemes security ci assegna e da questo momento godremo della sua protezione. I campi che seguono sono:

  • Enable iThemes Brute Force Network Protection: da flaggare
  • Enable local brute force protection: da flaggare

Poi vi sono dei campi di configurazione in cui indichiamo il numero di tentativi di accesso consentiti prima di essere bloccati dalla protezione contro gli attacchi brute force. Si deve compilare il numero di tentativi per host, per utente e l’arco di tempo in cui si devono verificare questi tentativi. Io ho impostato tutto a 3. L’ultima voce ci chiede se bannare immediatamente al primo tentativo chiunque cerchi di entrare nel nostro pannello di controllo con lo username admin. Se avete cambiato il nome dell’amministratore consiglio di flaggarlo. Se voi stessi vi autenticate con lo user “Admin” NON selezionatelo. Vedremo in seguito come sia importante cambiare il nome utente Admin con un altro.

DATABASE BACKUP

Se vi corrompessero il database del sito, sarebbe un vero e proprio disastro. Perdereste tutto e dovreste ricominciare il sito da capo. Ecco perché questo plugin offre anche la possibilità di eseguire il backup al database.

Database-Backup-wordpress

Selezionate senz’altro Enable Database Backup. Poi scegliete l’opzione Save Locally and Email per farvi arrivare il backup via email e salvarlo sul disco.

Troviamo poi Backup Location, ovvero, dove il db sarà conservato. C’è una cartella impostata di default dal plugin ma a mio parere non deve essere utilizzata. Il problema è che questa cartella è dentro la root principale. Se dei malintenzionati riuscissero ad accedervi potrebbero farvelo perdere. Selezionate invece un’altra cartella al di fuori della root. Hosting come Ergonet mettono a disposizione per questo scopo una cartella esterna alla root chiamata “private”, accessibile solo a voi. Se il vostro hosting vi da questa possibilità, sfruttatela.

Backups to retain vi consente invece di scegliere il numero di backup da conservare. L’opzione è funzionante solo se nel campo “enable database backup” scegliete l’opzione “Save Locally”. Scegliete di conservare almeno un paio di backup da sovrascrivere periodicamente.

Compress Backup Files permette di zippare il backup per risparmiare spazio su disco. Attivatelo.

Exclude Tables permette di scegliere i file di cui non si vuole effettuare il backup. Fateli tutti se avete spazio a disposizione.

Schedule Database Backups e Backup Interval vi peremettono di programmare dei backup in automatico e di stabilire ogni quanto devono essere eseguiti. A seconda del ritmo di aggiornamento del vostro sito, scegliete l’arco di tempo più giusto.

FILE CHANGE DETECTION

Selezionando questa opzione, ithemes security vi avviserà se si verificano dei cambiamenti nei files di configurazione del vostro sito. Un file che si cambia da solo la configurazione è difficile trovarlo! Se si verifica tale situazione è probabile che il vostro sito sia stato violato.

HIDE LOGIN AREA

Questa è secondo me una delle funzioni più importanti da selezionare. Attivando l’opzione Hide Backend, potrete cambiare il percorso per accedere al pannello di amministrazione. I malintenzionati sanno bene che per accedere ad un sito wordpress bisogna digitare www.nomesito.xx/wp-admin o wp-login. Grazie a questa funzione potrete sostituire il wp-admin o wp-login con una parola a vostra scelta (esempio: flavioweb.net/nunceprovà).

MALWARE SCANNING

In questa sezione possiamo attivare un vero e proprio antivirus per wordpress. Selezionamo Enable Malware Scanning. Poi clicchiamo sul link virustotal.com e registriamoci. Seguiamo le istruzioni per ottenere l’API key da inserire nel campo apposito. Infine copiamo ed incolliamo la key nel campo API key. Salviamo e il gioco è fatto.

SECURE SOCKET LAYERS (Maneggiare con cura)

secure socket layerQuesta sezione vi permette di abilitare l’https sul vostro sito, ma SOLO SE IL VOSTRO PIANO HOSTING LO SUPPORTA. Non attivate l’opzione se non siete sicuri di questo. Il sito scomparirebbe e, se non sapete dove mettere le mani sul file di configurazione, dovreste attaccarvi al telefono con il vostro fornitore dello spazio web per farvi correggere l’impostazione e far tornare tutto alla normalità.

Secure Socket Layers (SSL) è una tecnologia che consente di crittografare i dati scambiati tra server ed host. E’ un gran bel vantaggio attivare questa opzione perché rende i dati in transito sulla rete inaccessibili (password, nome utente, ecc…) ai malintenzionati. Se volete attivarla, assicuratevi che il vostro piano supporti l’SSL. In caso contrario acquistate il servizio e poi, una volta attivato, impostate questa sezione di iThemes Security.

Il plugin da la possibilità di attivare l’SSL per tutto il sito (Front End SSL Mode: Whole Site) o solo per alcune pagine (Front End SSL Mode: Per Content). Quando è disabilitato la voce è impostata su Off.

E’ possibile inoltre crittografare solo la pagina di login oppure l’intera dashboard (pannello di controllo di WordPress).

STRONG PASSWORD

strong password ithemes security wordpress

Se attivate questa opzione, utenti e collaboratori per i loro login dovranno scegliere password “sicure”, in base ai parametri forniti da WordPress (esempio password con numeri, lettere maiuscole e caratteri speciali). La voce Select Role for Strong Passwords imposta a quale ruolo minimo deve essere applicata la policy. Di default è settato su amministratore. Questo vuol dire che gli utenti con ruoli meno importanti (dai semplici iscritti al sito fino ai nostri collaboratori) potranno scegliere password più semplici. Scegliete voi il grado di complessità delle password da assegnare ai vari tipi di utenti.

SYSTEM TWEAKS

tweaks ithemes security wordpressQuesta sezione è composta da varie opzioni. IThemes Security raccomanda di attivarle con cautela perché potrebbero creare incompatibilità con gli altri plugin caricati sul sito. Personalmente ritengo utile attivare la voce Protect System Files che impedisce l’accesso e la scrittura a file importantissimi come wp-config.php, install.php, wp-includes e .htaccess.

Anche Disable Directory Browsing è un’opzione importante in quanto impedisce agli esterni di vedere gli elenchi di files nelle directory non indicizzate cioé quei file che abbiamo deciso di non far scansionare dai crawler.

Un’altra opzione che in questa sezione ho attivato è Filter Long URL Strings che limita il numero di caratteri consentiti nella url per impedire agli hacker di effettuare delle SQL Injection utilizzando url parecchio lunghe.

L’ultima opzione che personalmente ho attivato è Remove File Writing Permissions che rende i files .htaccess e wp-config sul server, non scrivibili.

All’interno di questa sezione ci sono altre voci che potete facilmente intuire, leggendo le spiegazioni in inglese, a cosa servono se attivate. Come detto in precedenza, se volete attivare una di queste voci fatelo passo per passo, ossia una per volta. Ad ogni selezione attivata provate se il sito lavora correttamente e poi procedete con la selezione successiva.

WORDPRESS TWEAKS

Anche per questa sezione vale il consiglio dato nella precedente: attivare le impostazioni desiderate una per volta, verificando poi se si sono generati degli errori causati da conflitti generati con gli altri plugin del sito. Le varie opzioni sono molto facili da comprendere. Se non sapete cosa fare, lasciate tranquillamente le selezioni impostate automaticamente dal plugin.

Passiamo ora al TAB successivo, ADVANCED

ADMIN USER

admin-user-wordpressIn questa sezione troviamo subito un’opzione che se abilitata, ci consente di eliminare l’utente admin e sostituirlo con un nome a nostra scelta. E’ uno dei punti fondamentali di iThemes Security. Gli hacker sanno benissimo che in ogni installazione di WordPress c’è un utente con pieni poteri di amministrazione che è chiamato admin. Con questa opzione, eliminiamo il nome utente admin e lo sostituiamo con un nome a nostra scelta. Capite bene che facendo questo, WordPress viene privato di una grande vulnerabilità. Da fare assolutamente!

Impostare un altro nome ed eliminare admin è facilissimo. Spuntiamo la casella apposita, immettiamo un altro nome e poi eliminiamo l’admin. Cambiamo anche l’id di amministratore a id1.

CHANGE CONTENT DIRECTORY

Per impostazione predefinita, wordpress mette tutti i contenuti nella cartella wp-content all’interno della root principale del sito. Spuntando l’opzione Enable Change Directory possiamo spostare questa cartella in un altra posizione, rendendo così più difficile la sua individuazione da parte degli hacker. Il problema è che se disattiviamo il plugin o lo rimuoviamo, la cartella non tornerà automaticamente al suo posto. Se questo si verificasse, potremmo mandare all’aria tutti i vari path dei file, rendendo il sito inutilizzabile. Il consiglio è: attivare questa opzione del plugin solo se siete sicuri di quello che state facendo.

CHANGE DATABASE PREFIX

L’opzione, se attivata, cambia tutti i prefissi dei database per renderli meno individuabili ai malintenzionati. Si sa, e lo sanno anche gli hacker, che i db di WordPress hanno il prefisso WP_. Personalmente io lo faccio all’atto dell’installazione di WordPress sul file wp-config, ma se voi non avete avuto questa accortezza potete cambiarlo da qui. L’opzione non comporta effetti collaterali dannosi (tipo malfunzionamento del sito) ed è fortemente consigliabile attivarla. In ogni caso è preferibile attivarla solo dopo aver fatto un bel backup.

IL TAB BACKUP

In questa sezione potete effettuare il backup del vostro database. Nella prima sezione potete eseguire il backup tramite un click sull’apposito bottone. Nella seconda c’è la possibilità di usufruire del servizio BackupBuddy che fa il backup all’intero sito.

LOG DI ITHEMES SECURITY

La sezione dedicata ai logs presenta una lista di eventi rilevati da iThemes Security. Potete filtrare i risultati selezionando tutti (all log data), Errori 404, tentativi di accesso non validi, scansione malware. Solo per darvi un’idea di quanti tentativi di accesso può subire un sito in WordPress vi riporto lo screen shot dei tentativi di accesso non autorizzato al mio blog in una sola giornata.

log-di-ithemes-security

Vi rendete conto? Capite ora quanto sia importante proteggere il proprio WordPress? Avete visto quante volte hanno cercato di accedere con lo user admin?

CONSIGLI GENERICI PER PREVENIRE ATTACCHI A WORDPRESS

IThemes Security protegge in maniera efficiente il nostro WordPress ma anche con questo plugin, anche se molto più difficile, è possibile che il nostro sito venga violato. Per cui è necessario anche prevenire il danno con azioni da fare a priori ed azioni da fare periodicamente. Vediamo quali sono.

  • Acquistare dal nostro fornitore dei servizi web il Backup Settimanale
  • Effettuare noi stessi un Backup dei nostri files e database (potete usare BackupBuddy di ithemes oppure altri plugin atti allo scopo)
  • Effettuare una copia di tutti i files del sito in locale scaricandoli tramite un client FTP (io utilizzo filezilla)
  • Cambiare periodicamente la password di Filezilla
  • Aggiornare la versione di WordPress ogni volta che esce un aggiornamento
  • Aggiornare i plugin installati ogni volta che esce un aggiornamento
  • Se qualche plugin non viene più aggiornato e diventa incompatibile con la nostra versione di wordpress, cancellarlo e sostituirlo con un altro che faccia la stessa cosa

Spero che questa guida vi sia utile. Se avete consigli, domande, suggerimenti o correzioni da fare all’articolo potete scrivermi su Facebook, Twitter o Google Plus.