La possibilità che un sito realizzato con WordPress sia hackerato aumentano notevolmente quando non si procede periodicamente ad aggiornarlo o aggiornare i vari plugin installati. Anche i temi grafici possono avere al loro interno BUG che una volta scoperte rendono vulnerabile un sito in WordPress.
Per rendere il più sicuro possibile un sito in WordPress si possono installare plugin che limitano i tentativi di accesso all’amministrazione, ricorrere alla protezione della cartella /wp-admin/ tramite .htaccess oltre che – naturalmente – usare password complesse e così via.
Una più ampia trattazione di queste protezioni saranno presentate in altri articoli, in questo illustreremo la migliore procedura – da quella più semplice e rapida a quella più completa e sicura – per ripristinare un sito compromesso da un Hacker.
Presupposto indispensabile e dato per assodato sono i backup: possedere i backup sia dei file sia del database è un requisito da porre al primo posto nell’elenco delle cosa da fare: non bisogna pensare al backup “nel caso ci siano dei problemi” ma “perché sicuramente prima o poi i problemi ci saranno”.
I migliori backup sono quelli che conservano uno storico di diversi giorni, come ad esempio i backup che possono richiederci i nostri clienti per i siti WordPress ospitati sui nostri server: uno storico di sette giorni sia dei file sia dei database come servizio opzionale che può salvare da una situazione disperata!
Di seguito indichiamo due procedure di ripristino di un sito WordPress compromesso, la prima più veloce e facile, ma non sempre risolutiva, la seconda più complessa e che richiede maggior tempo ma senz’altro più sicura. Vengono anche segnalate alcune operazioni preliminare che andranno sempre eseguite in ogni caso e al più presto.
a) cambiare password di tutti gli amministratori e moderatori di WordPress
b) cambiare password FTP e, se presente, del pannello di amministrazione del dominio (PLESK, cPanel, ecc). Se non potete eseguire queste operazioni in autonomia chiedete al vostro fornitore di hosting di farlo.
c) cambiare password al database MySQL.
d) verificare se vi sono degli amministratori abusivi, cioè non creati da voi. Questa operazione si esegua entrando nella bacheca di WordPress e poi andando nella sezione UTENTI: cliccando sul link che filtra tutti gli amministratori si avrà l’elenco degli utenti con diritti di amministratore e nel caso ve ne siano di sospetti non bisogna esitare a cancellarli.
e) eseguire un ulteriore backup sia dei file sia del database prima di compiere le operazioni di ripristino.
Senz’altro quella di riprendere interamente il backup sia dei file sia del database è il modo più rapido per ripristinare un sito, ma vi possono essere dei problemi se il backup pulito è già di qualche giorno prima – non sempre ci si accorge subito dell’hackeraggio – e nel frattempo vi sono stati nuovi iscritti, pubblicati nuovi articoli e caricate nuove immagini: un ripristino da un backup fa perdere tutti i cambiamenti avvenuti dopo la data del backup stesso e questo potrebbe risultare fastidioso.
L’alternativa è ripristinare solo i file compromessi e eliminare quelli che con il nostro sito non hanno nulla a che vedere: questo è possibile se abbiamo un elenco dei file modificati e di quelli creati durante l’attacco hacker.
Esistono alcuni plugin in grado di fornire questo elenco, ma anche il vostro fornitore di hosting può venire in aiuto (noi lo facciamo sempre, è nel nostro interesse avere siti puliti sui nostri server!): quando si è venuti a conoscenza dei file modificati si possono riprendere gli originali dal backup e cancellare quelli che non fanno parte del sistema.
Tuttavia questo ha un limite: sovente gli hacker quando bucano un sito e caricano altri file o modificano quelli presenti, non sempre li utilizzano subito – ad esempio per inviare email spam o far scaricare trojan – ma attendono giorni prima di agire. Questo comporta il fatto che più il tempo passa senza accorgersi dell’intrusione e più diventa difficile capire quali sono i file modificati o inclusi: un elenco di file modificati nelle ultime 24 ore è molto più utile ai nostri scopi rispetto a uno di una decina o più giorni prima in quanto quest’ultimo riporta anche eventuali file modificati da aggiornamenti di wordpress o dei suoi plugin rendendo quindi difficoltoso o anche impossibile controllarli tutti.
Inoltre è anche possibile che l’hacker abbia modificato le date dei file manomessi o caricati, quindi questa soluzione veloce di ripristino di WordPress può avere successo solo in alcune circostanze oppure per tamponare rapidamente una situazione nel caso sia necessario avere il sito online al più presto. La soluzione migliore, quella che dovrebbe farci dormire più tranquilli, è pertanto un ripristino totale del sito come descritto nella seconda parte.
Ripristinare un sito completo è sempre traumatico, richiede tempo e attenzione per non perdere qualche pezzo del vecchio sito. Di seguito vengono elencati i vari passi da svolgere al fine di riavere un sito WordPress funzionante e privo di file malevoli nascosti tra quelli del sistema. La sicurezza del 100% non esiste, ma seguendo questa guida ci si potrà avvicinare il più possibile a un sito pulito.
A) Procurarsi una versione di WordPress che sia pulita, eventualmente scaricandola dal sito ufficiale, del tema grafico in uso e dei plugin utilizzati.
B) Dopo aver scompattato i file di WordPress, del tema e dei plugin, posizionate i vari componenti nella loro struttura di cartelle (ad esempio i plugin andranno sotto wp-content/plugins, il tema su wp-content/themes).
C) Dal backup prendete la cartella /wp-content/upload/ e controllatela in locale con il vostro Antivirus: il contenuto – immagini degli articoli che avete caricato e quanto altro è incluso nei post – dovrà essere ricaricato sul sito che andiamo a ripristinare quindi deve essere ripulito da eventuali file malevoli.
D) Cancellare tutto (e quando si dice tutto si intende proprio TUTTO!) il contenuto del sito, tutti i file e le cartelle (se ci sono cartelle che abbiamo creato noi le avremo nel backup e se serviranno per il sito dovranno essere dapprima scansionate dall’Antivirus/AntiTrojan e poi ricaricate tramite FTP).
E) In alcuni casi è necessario ripristinare una cartella /session/ (serve per memorizzare le sessioni, se prevista dall’hosting) e una /tmp/.
F) Controllare e ripristinare il database in quanto potrebbe contenere articoli infettati da javascript, iframe, link esterni, contenuti nascosti (es. div con display:none)
Per un controllo si potrebbero ad esempio usare, da phpmyadmin, queste query:
SELECT * FROM wp_posts WHERE post_content LIKE '%<iframe%' SELECT * FROM wp_posts WHERE post_content LIKE '%<noscript%' SELECT * FROM wp_posts WHERE post_content LIKE '%<script%' SELECT * FROM wp_posts WHERE post_content LIKE '%display:%' SELECT * FROM wp_posts WHERE post_content LIKE '%visibility:%' SELECT * FROM wp_posts WHERE post_content LIKE '%http://%'
(sostituire wp_posts con il nome della tabella in base alle vostre configurazioni sul prefisso delle tabelle del db, si può ricavarlo dal file wp-config.php)
Non è una operazione facile individuare del codice malevolo, bisogna valutare caso per caso in particolare i link.
G) Caricare tramite FTP i file puliti (file di sistema di Worpress, file dei plugin, file del tema grafico.
H) Accedere alle impostazioni dei Permalink e salvare nuovamente la configurazione. Questa operazione è necessaria per ricreare il file .htaccess.
I) Controllare le impostazioni del tema: sovente importando un nuovo database si perdono le varie configurazioni ed è necessario salvarle nuovamente.
L) Controllare che tutti i plugin che si avevano nel precedente sito siano attivi e che le loro configurazioni siano corrette.
M) Verificare la navigabilità del sito
N) Analizzare le cause che hanno permesso l’intrusione di un Hacker, ad esempio consultando i LOG degli accessi. Questo serve per capire come sia stato possibile violare il sito e porvi rimedio.
O) Eventualmente proteggere il login e la cartella /wp-admin/ mediante .htaccess
Ricordate che difficilmente l’Hacker ha qualche motivo personale contro di voi, il vostro sito è stato probabilmente preso di mira perchè esistono software che automaticamente scansionano la rete in cerca di vulnerabilità conosciute e sovente l’attacco è stato portato avanti da questo o altri software. Quindi non pensate al collega invidioso, alla propria ex fidanzata (o al proprio ex fidanzato) o al concorrente che vuole farvi fallire: pensate piuttosto a tenere aggiornato il vostro sito WordPress e a mettere in atto le misure necessarie per proteggerlo al meglio, anche se si deve essere consapevoli che la sicurezza al 100% la si ottiene solo chiudendo il sito e spegnendo i PC, come d’altra parte la sicurezza sulle strade si ottiene al 100% lasciando le automobili in garage!
Le operazioni descritte richiedono una certa competenza e tempo, non scoraggiatevi ma procedete con calma, pazienza e molta attenzione. Nel caso non abbiate tempo o competenze è possibile richiederci un preventivo per il ripristino di un sito in Joomla (o WordPress): il lavoro sarà eseguito interamente da noi, ripulendo il sito e aggiornandolo alla ultima versione disponibile.
Se avete domande o richieste particolari non esitate a contattarci anche per un eventuale preventivo di ripristino del vostro sito in WordPress, e se l’articolo vi è piaciuto un “mi piace” è una ricompensa al nostro lavoro molto gradita 🙂