Sicurezza di WordPress: la guida completa

Argomenti: ,
Pubblicato il: 02-06-2020 11:12 , Ultimo aggiornamento: 17-05-2021 10:53

Come possiamo migliorare la sicurezza di WordPress? La cosa migliore sarebbe quella di delegare ad un esperto questo arduo compito, per quanto sia possibile quantomeno effettuare alcune operazioni essenziali in modo autonomo ed installando al limite qualche plugin.L’argomento sicurezza WordPress è molto delicato, ma con un po’ di pazienza riusciremo senza dubbio a trovare le soluzioni più adatte alle nostre necessità.

Vediamo subito, pertanto, di che si tratta.

Scegliere bene la password

La scelta della password (e della username). La prima regola da seguire è quella legata alla scelta della password di accesso al sito, in particolare quella di amministratore. Se inseriamo una password stupida o facile da indovinare per chiunque, daremo l’accesso da amministratore a chiunque riesca ad indovinarla. Esiste infatti una classe di attacchi informatici che viene effettuata in continuazione, e che va sotto il nome di attacchi brute force: come suggerito dal nome stesso, si tratta di script malevoli che tentano di combinare le username e le password più comuni o banali (ad esempio “admin” “admin”, oppure “admin” “12345”), ed avranno così una certa probabilità di riuscire ad accedere al nostro sito. A meno che non siano attivi meccanismi di protezione ad hoc, in certi casi neanche sapremo che il nostro sito è stato attaccato per cui potrebbero rubarci le credenziali di accesso senza che neanche ce ne accorgiamo.

Come scegliere la password. Non è facile, ad oggi, proteggersi dagli attacchi brute force neanche per gli hosting, visto che questi attacchi ad esempio usano indirizzi IP variabili e molto ampiamente distribuiti, per cui è opportuno che la scelta della username e della password rispetti dei requisiti minimali di sicurezza, ovvero:

  1. sia composta da almeno 8 caratteri;
  2. sia composta da lettere e numeri assieme;
  3. contenga almeno un carattere non alfabetico come ! oppure .;
  4. sia abbastanza difficile da indovinare (e, per un discorso di usabilità, facile da ricordare solo per chi ne dovrà fare uso).

Per la username, evitate di scegliere admin come username di amministratore, in quanto uno dei primi tentativi che vengono fatti sui siti, a campione, usa tipicamente questa username. I principali plugin per la sicurezza di WordPress (che vedremo a breve) offrono numerosi meccanismi di protezione e monitoraggio da questo genere di attacchi. Ricordatevi che non sono tutti uguali, nè equivalenti: la maggioranza di essi introducono delle “regole” che rendono la vita più difficile agli attaccanti (che chiamiamo impropriamente hacker, in molti casi), ovvero – ad esempio – gli impediscono di visualizzare il contenuto delle cartelle, ma nessuno di questi è realmente sicuro al 100%. Il rischio di vedersi sottrarre le credenziali di accesso al proprio sito è accentuato da altri fattori esterni, molto spesso. Nel caso in cui abbiate subito un attacco del genere, l’attaccante potrà accedere al vostro sito, cancellare o modificare i contenuti e così via: in questi casi, è sempre opportuno reinstallare una copia fresca di WordPress, e rigenerare tutte le password sperando di disporre di un backup recente del sito salvato a parte.

Cambiare spesso la password

Cambiare periodicamente la password. Per migliorare la sicurezza è anche un’ottima cosa cambiare periodicamente la password di accesso: cambiando anche solo un carattere della stessa o seguendo un criterio logico, ad esempio una volta al mese, si riuscirà a garantire una massima protezione ai nostri account, specialmente se contengono dati sensibili come le email oppure le password del nostro account Facebook. Cambiare periodicamente le password è importante così come evitare di usare sempre la stessa password per più siti o servizi: nel caso in cui una password sia associata al vostro indirizzo email su un altro servizio, ad esempio, sarete comunque scoperti e passibili di furto di informazioni. Conviene sempre inserire delle variazioni sulle proprie password, dunque, ed evitare di riutilizzarle in gruppo o, quantomeno, modificarle periodicamente. Con il furto di credenziali verificatosi qualche tempo fa è successo proprio questo, e una volta che le password sono svelate in massa su un servizio diverso dal nostro sito, non c’entra neanche più nulla che siano complicate o meno. Motivo per cui è essenziale sia cambiarle spesso, e non “riciclarle” mai altrove. Molta della sicurezza di WordPress passa da qui, ma non è tutto: numerosi attacchi informatici avvengono mediante privilege escalation o, se preferite, senza che l’utente debba conoscere la password del sito.

Nota: si è soliti suggerire, in questi casi, di inserire password complesse (con simboli non alfabetici e piuttosto lunghe, ad esempio babba6538!^h piuttosto che pippo), senza considerare che questo tipo di password sono difficili da gestire e ricordare per l’utente meno esperto. Come fare allora? Non siamo tutti nerd, in effetti (e per fortuna!), per cui una buona regola per generare password sicure è ad esempio costruirle con 3 o 4 parole di fila poco intuitive e che ricordiamo facilmente / non siano ovvie: quindi una buona password per il vostro sito si può generare da qualsiasi ragionamento o associazione di idee non ovvia.

Anche matematicamente, del resto, risultano essere password più difficili da scoprire di quelle “caotiche”: c’è una vignetta di xkcd che ne parla, vedi terzo punto.

Conoscere bene WordPress e la sua logica open

WordPress e sicurezza informatica, un binomio “open”. WordPress è un CMS open source, e come tale è soggetto sia a miglioramenti che a leak (ovvero “rivelazioni” di falle informatiche) pubbliche: questo è molto utile perchè più di uno sviluppatore possa contribuire alla qualità del codice, cosa che un codice chiuso non permetterebbe, se non dietro politiche aziendali specifiche- che spesso tendono ad occultare i difetti. Pregi e difetti di WP sono quindi alla luce del sole, man mano che vengono scoperti, riparati ed analizzati dalla community. Su WordPress si parla molto di sicurezza sia perchè è giusto che sia così, sia perchè è un CMS talmente diffuso ed utilizzato che sarebbe sinceramente da irresponsabili non farlo.

In genere, la scoperta di falle informatiche passa per l’utilizzo di software avanzati di analisi come WPscan: non voglio dire che ognuno debba installarselo (anche perchè non è un prodotto alla portata di chiunque, e richiede tempo e conoscenze specialistiche per un uso corretto), ma bisogna certamente sapere che nuove falle di WordPress vengono scoperte in continuazione. Quello che è sicuro oggi, in altri termini, potrebbe smettere di esserlo domani.

4919659112_70f8836dfa_wordpressPiù passa il tempo più WP diventa “immune”, ma alla fine dei conti tanto dipende da come lo configuriamo, e dalle configurazioni dell’hosting su cui si trova. Ogni nuova versione introduce miglioramenti di velocità, qualità del codice e sicurezza: per esempio, la versione 4.7.1 ha risolto alcuni problemi specifici di sicurezza del nostro sito, che permettevano ad un utente esterno di fare potenziali danni anche irreversibili alle nostre pagine.

Gli attacchi DoS (Denial of Service). Gli attacchi su larga scala ai siti in WordPress sono numerosissimi, e quasi sempre finalizzati al DoS (Denial of Service, o saturazione delle risorse come RAM e CPU): in pratica questi script “sparano nel mucchio” su vari indirizzi IP, e qui purtroppo è materia specialistica. C’è poco da fare dal punto di vista di “meno esperti”, insomma: sono gli hosting che si tutelano (o dovrebbero farlo), in questi casi, mediante firewall e protezioni varie, e dal nostro punto di vista non possiamo fare altre che non fare mai troppo affidamenti sui dati in remoto e tenere sempre a portata di mano un backup recente del nostro sito. Le soluzioni low cost tendono, nella mia esperienza (anche se non sempre) a trascurare di più le misure di sicurezza più basilari.

Tutti i siti sono soggetti a DoS (a volte anche in versione su larga scala, DDoS), e non c’è ragione per credere che “tanto al mio sito non succederà mai“.

La sicurezza del tuo WordPress… sei tu!

i want you photo

Come ho scritto anche su Webhouse (Cinque approcci errati alle personalizzazioni WP), molta delle sicurezza del sito dipende da noi: basti pensare che uno dei modi più comuni per compromettere la sicurezza del sito in WP è modificare il codice dei plugin. Vedo che moltissimi lo fanno lo stesso, ma questo secondo me denota una superficialità davvero imperdonabile. Non esiste un modo safe per modificare plugin di WordPress, si tratta quindi di una modifica “brutale” al vostro sito che, al successivo aggiornamento, andrà persa – WP non è pensato per quello.

Le personalizzazioni vanno semmai introdotte sempre mediante theme child o, al limite, mediante ulteriori plugin sostitutivi, ma mai modificando il codice degli esistenti: se ci fosse una falla di sicurezza scoperta in seguito, infatti, non potreste aggiornare più il plugin (salvo perdere le modifiche) ed il vostro sito rimarrebbe scoperto per sempre. Attenzione quindi ai theme che usiamo, ai plugin installati (quelli a pagamento sono ugualmente soggetti a problemi di sicurezza), ed ai permessi CHMOD (vedi come impostare i permessi CHMOD di WordPress e come impostare il chown).

Seguono un po’ di suggerimenti vari per la sicurezza.

Rimuovere o rinominare alcune utenze. Ci sono anche degli accorgimenti ulteriori per migliorare la sicurezza di WP: ad esempio, è buona norma abbassare i privilegi dell’utente admin o rimuoverlo del tutto, perchè se avete scelto una password banale per l’amministratore potreste essere soggetti ad attacchi “a dizionario” (per tentativi automatizzati, in pratica), ed il rischio è che l’attaccante possa prendere il controllo del vostro sito.Se cambiate il ruolo di admin in sottoscrittore (si fa da wp-admin/users.php), di fatto, ridurrete di molto il rischio di abusi futuri, anche se – almeno in teoria – il nome utente amministratore resta comunque rilevabile con altre tecniche. Non illudetevi di diventare degli esperti di sicurezza informatica solo per questo, quindi.

Se siamo vittime di un certo tipo di SQL poisoning, ad esempio, queste contromisure diventano ancora una volta del tutto irrilevanti. Non voglio fare terrorismo psicologico su questi argomenti, ma è necessario sapere che tutte le contromisure che prendiamo servono a ridurre la possibilità di defacciamento e furto di dati, ma non potranno mai eliminarli del tutto. Questi accorgimenti servono più che altro a personalizzare il sito e renderlo meno attaccabile, un po’ come dire che le vitamine C aiutano l’organismo, certo, ma non ci immunizzano dai rischi influenza.

(Maledetti) Plugin! Nella mia esperienza sono i plugin di WordPress, in molti casi, a dare la maggioranza dei problemi di sicurezza: basti pensare alle falle di cui ho parlato in questi mesi sul blog, come quella di Slider Revolution Plugin, Video Gallery WordPress, Theme My Login, WordPress Pods e la lista potrebbe proseguire per molte altre righe. Certo, si tratta di falle corrette nel frattempo, ma su diversi siti in WordPress abbandonati o poco aggiornati potrebbero essere sfruttabili per molti anni. Da un punto di vista statistico, in effetti, basta installare meno plugin possibile per ridurre un (bel) po’ le possibilità di un attacco, e ricorrere alle sane (anche se più faticose) personalizzazioni per ottenere l’effetto desiderato. Se un plugin sono aggiornati spesso e seguiti dalla community problemi non dovreste averne, e nella maggioranza dei casi basta installare quelli della lista dei migliori plugin di WP per non avere problemi. Ad ogni modo è bene sapere che per togliere di mezzo un plugin difettoso o problematico per la sicurezza basta semplicemente cancellarlo dalla cartella /wp-content/plugins via FTP o meglio ancora SSH.

Sicurezza del database, e file di configurazione wp-config.php Difendersi da XSS (introduzione di codice arbitrario dall’esterno) e SQL poisoning (introduzione di query in lettura/scrittura sul nostro sito) mediante scalata di privilegi (cioè senza conoscere le password di accesso) può essere molto complesso e fuori dalla nostra portata: WordPress cura molto questo aspetto versione dopo versione, ma non c’è un modo per preservarsi dal rischio al 100%. Una delle tecniche principali è quella di cambiare il suffisso delle tabelle del DB (di norma è wp_) in qualcosa di casuale: questo perchè molti attacchi danno per scontato che esista quel prefisso, e cambiarlo ci mette al sicuro da molti pericoli. Attenzione, pero’, che bisogna aggiornare anche il wp-config.php di conseguenza, altrimenti WP non funzionerà più.

VI suggerisco inoltre di leggere l’articolo sui settaggi base e sui settaggi avanzati del file wp-config.php, che descrive nel dettaglio come potenziare ancora di più la sicurezza delle sessioni e dei cookie, per limitare abusi in tal senso.

Suggerimento per la sicurezza: cambiare i path di accesso al sito Inoltre può essere opportuno modificare il path wp-admin, in modo da evitare attacchi manuali o automatizzati al vostro form di login, anche se in questo caso dovrete ricordare il nuovo path di accesso. Per farlo si agisce sulla variabile di sistema WP_ADMIN_DIR come spiegato nell’articolo: si può fare anche modificando il file .htaccess ma, in questo caso, è necessario controllare i permessi CHMOD ed è meglio non farlo da qui, in generale, dato che il file potrebbe essere leggibile dall’esterno senza login.

Una lista di misure di sicurezza ulteriori potrebbe essere la seguente:

  • attivare SSL sul login di WordPress (serve un certificato software a pagamento per farlo);
  • attivare misure di ban dopo un certo numero di tentativi di login;
  • cancellare i file che contengono informazioni sulla versione corrente (molti plugin per la sicurezza permettono di farlo);
  • assicurarsi di avere credenziali di accesso al PHPMyAdmin e all’account FTP robuste (password difficili da indovinare);
  • disabilitare le modifiche al codice dei plugin e del theme via interfaccia amministrativa (basta la direttiva DISALLOW_FILE_EDIT su true nel file wp-config.php, e serve anche ad evitare danni involontari da parte degli “utonti” poco esperti)
  • evitare di divulgare credenziali di accesso al sito via email, o almeno cambiarle periodicamente;
  • tenere attivo un log sul sito per verificare e registrare eventuali accessi illeciti o ripetuti (serve un sistemista per verificarlo a dovere).

Le misure di fatto poco o per nulla utili sono le seguenti:

  • inibire l’accesso ai file PHP sensibili (come ad esempio wp-config.php) via direttive apposite sul file htaccess, perchè comunque per leggere il contenuto del file in questione serve una connessione FTP;
  • pensare “tanto a me figurati se succede“.

Di seguito riporto una lista di plugin per la sicurezza in WordPress.

Se WordPress è la tua passione, e stai sfruttando questo CMS per il tuo sito, dovresti dedicare un po’ di attenzione all’aspetto legato alla sicurezza. Problemi interni sul core del sistema, plugin crackati o non originali, theme pirata installati possono spalancare delle porte nascoste ai malintenzionati e rendere il tuo sito attaccabile sotto vari punti di vista.

In primis, potrebbero defacciare il tuo sito: un giorno lo apri e scopri che la homepage è stata sostituita da una arbitraria, e questo purtroppo può capitare in più occasioni e circostanze. Oltre a questo, che generalmente si risolve reinstallando WP da zero, è possibile che qualcuno riesca ad accedere al tuo sito web, rubandoti le credenziali di accesso o magari perchè hai abilitato la registrazione di qualsiasi utente con il ruolo di amministratore.

Suggerimento: vai subito su Impostazioni -> Generali, e se hai selezionato la casellina Chiunque può registrarsi assicurati di aver selezionato un qualsiasi ruolo che non sia Amministratore; clicca su Salva le modifiche a fondo pagina per confermare la tua scelta.

I plugin di sicurezza sono pensati per potenziare la sicurezza del tuo sito web: questo è generalmente consigliato per qualsiasi sito web in WordPress, in quanto gli attacchi di questo tipo sono probabili comunque, sia sui siti web famosi che su quelli meno conosciuti. Quale è meglio scegliere, dunque? In questo articolo ho provato ad analizzarne tre diversi.

Come scegliere il miglior plugin di WordPress per la sicurezza. La scelta tra i vari plugin di sicurezza, in generale, è influenzata da una serie di valutazioni:

  • interfaccia di funzionamento: non tutte sono equivalenti, poche sono realmente intuitive, molti sono essenziali e facili da attivare ma altri offrono troppe opzioni per l’utente medio.
  • costi: tipicamente questi plugin sono gratuiti, anche se alcuni potrebbero essere a pagamento; qui ne vedremo solo alcuni gratis.
  • funzionalità: tutti i plugin per potenziare la sicurezza sono simili tra loro, sebbene si presentino all’utente in maniera diversa tra loro. Le differenze sono relative al tipo di implementazione del codice, ma anche la filosofia di fondo stabilita per rendere il sito web più sicuro;
  • Supporto online: tutti i plugin presentati in questa pagina possiedono ampie community di supporto, in grado di dare risposte a chiunque abbia difficoltà.

Ricordo che l’uso di plugin di WordPress per la sicurezza richiede, in molti i casi, che i CHMOD per le cartelle di WP siano impostati correttamente.

Usare iTheme Security

schermata-2016-11-20-alle-10-18-28

Fino a qualche tempo fa noto come Better WP Security, questo plugin è uno dei più importanti ed efficaci per potenziare la sicurezza del vostro sito. Da qualche mese è stata introdotta un’opzione per mettere in sicurezza il proprio sito con un semplice click, e questo la rende particolarmente efficace e funzionale anche per i meno esperti.

Consigliato perchè:

  • è facile da configurare (eventualmente con procedura one-click);
  • offre un numero di opzioni chiare ed efficenti;
  • effettua in automatico il log dei tentativi di login automatizzati;
  • permette di creare una lista auto-aggiornata degli indirizzi IP bannati;
  • permette di configurare un away-mode, ovvero un periodo nella giornata in cui nessuno può fare login (i tentativi vengono tutti respinti);

Svantaggi potenziali:

  • alcune opzioni potrebbero compromettere il funzionamento del sito, specie la compatibilità di alcuni plugin;
  • se avete un sito WordPress già infetto da un malware, non dispone di un sistema per rilevarlo.

Ecco il link per scaricarlo: Download iTheme Security

Sucuri Security

schermata-2016-11-20-alle-10-28-44

Scelta anche qui classica, per quanto il nome di Sucuri sia legato più che altro al celebre blog di sicurezza informatica (che spesso si è occupato di sicurezza di WordPress). Questo plugin copre due esigenze fondamentali per qualsiasi plugin di sicurezza, ovvero: da un lato il classico security hardening, cioè il potenzialmento di alcune caratteristiche di WP in modo che siano meno probabilmente violabili. Dall’altro, offre un malware scanner integrato molto utile se volete rilevare un problema pre-esistente.

Vantaggi:

  • malware scanner integrato, utile se avete un sito già infetto;
  • sezione auditing per la sicurezza molto utile;
  • notifiche per la sicurezza in tempo reale.

L’unico potenziale svantaggio, in questo caso, è dovuto al fatto che richiede una certa perizia per poter essere usato a dovere.

Eccovi il link per scaricarlo: Download Sucuri Scanner

Wordfence

schermata-2016-11-20-alle-10-36-15

Concludiamo la breve rassegna dei principali plugin per la sicurezza con Wordfence, uno dei più popolari a livello mondiale:

  • include firewall, scan per eventuale malware, filtri di blocco del traffico, sicurezza del login;
  • permette di abilitare l’autenticazione a due fattori durante il login di WordPress;
  • è piuttosto facile da configurare
  • effettivo nel fare il proprio lavoro

Svantaggi potenziali:

  • al momento alcune funzioni sono disponibili solo a pagamento, ovvero mediante versione Pro (Country Blocking, Scheduled Scans, Password Auditing).

Ancora una volta, ecco il link ufficiale per scaricarlo: Download Wordfence

Una cosa molto importante, in ogni caso e comunque decidiate di metterlo in pratica, è limitare gli attacchi di tipo brute-force, cosa che vedremo nella prossima sezione.

Restando in tema sicurezza, di recente è stato registrato uno degli attacchi brute-force più brutali mai registrati contro il povero wordpress: gli hosting si stanno affannando nel fare in modo di proteggere al meglio i propri sistemi, per quanto sia necessaria la collaborazione di tutti i webmaster.

Gli hosting con supporto WordPress sono molto numerosi, per cui il problema di sicurezza in questione (un attacco brute-force da oltre 90.000 IP differenti, con tanto di installazione di una backdoor nel CMS) si è diffuso a macchia d’olio e moltissimi sono stati i blog colpiti. Avevo già discusso in passato dei metodi per mettere in sicurezza il proprio sito, ma è sempre opportuno proporre una lista aggiornata, come farò in questo post a breve. Il problema di fatto è molto grosso, ed è ancora a mio parere parzialmente sottovalutato da hosting minori e webmaster poco attenti: ho una testimonianza diretta di un  hoster che ha dovuto addirittura cambiare gli IP dei propri server pur di risolvere il problema.

HostGator inoltre, storicamente molto attenta alla sicurezza, ha pubblicato un articolo in cui spiega nel dettaglio come sia possibile proteggere al meglio il proprio blog, sfruttando una password ulteriore da richiedere su wp-login.php, in modo da evitare problemi derivanti da tentativi automatizzati di login. L’attacco si struttura in modo molto semplice quanto pericoloso, in quanto è basato su un dizionario di password molto comuni che vengono testate automaticamente da un range di  decine di migliaia di IP differenti (in modo da limitare la possibilità di ricevere ban automatici dal server), e se inavvertitamente la password fosse indovinata l’attaccante prende il controllo del sito da amministratore ed installa una backdoor che poi potrà sfruttare inavvertitamente nel seguito. In altri casi, invece, il blog della vittima viene manipolato e non è più visibile, senza contare che se si riuscisse ad accedere da amministratore si potrebbero cancellare i vecchi articoli, pubblicare articoli di spam e via dicendo.

La prima regola da seguire è quella di non utilizzare mai password banali per i propri account: ciò non vale solo per wordpress ma anche per le email, per il sito della nostra banca e via dicendo. Gli attacchi basati su dizionario sono molto diffusi e giocano proprio sulle ingenuità degli utenti che utilizzano parole d’ordine come “mionome123” e simili, per cui rinforzate la sicurezza della vostra password e, soprattutto, cambiatela almeno una volta al mese.

Seconda regola di sicurezza da seguire: rimuovere l’utente admin che viene creato di default, ricreando da questa utenza un amministratore con una username differente, accedere con quest’ultima e fare fuori l’utenza. Credo che nelle prossime versioni di wordpress sia plausibile che il nome admin non sia più permesso dall’inizio (almeno, spero che ciò succeda davvero già dalla prossima release). In questo modo le possibilità di accedere indebitamente al sistema saranno notevolmente ridotte, visto che già conoscere l’utenza – addirittura quella amministrativa – aiuta notevolmente le azioni di hacking contro il nostro sito. In secondo luogo, come detto, possiamo installare almeno un paio dei seguenti plugin di sicurezza WP:

  1. Better WP Security
  2. BulletProof Security
  3. WordFence
  4. WebsiteDefender

Infine, come misura estrema ma altrettanto efficace, possiamo pensare di proteggere la cartella di accesso al menù di amministrazione con una doppia password, come descritto sul blog di Keliweb. Di sicuro la sicurezza non deve essere sottovalutata (come ho scritto stamattina per la situazione scandalosa presente attualmente su Whatsapp): in questo caso dipende tutto da noi webmaster e sarebbe anche il caso di chiedere al nostro hoster suggerimenti per situazioni di questo tipo.

Installare SSL su WordPress. Sembra che il 2017 sia l’anno di HTTPS importato in massa sui nostri siti in WordPress: questo può interessare sia le pagine singole che quelle di login, per cui si tratta di acquistare un certificato SSL ed installarlo sul proprio sito. Questo impedirà, o comunque limiterà, i casi in cui le nostre credenziali di accesso vengano spiate da terzi, e farà in modo che se i nostri utenti si loggano sul sito possano farlo con un minimo di certezze e sicurezza in più.

Se vi interessa sapere come fare, c’è un tutorial su come installare HTTPS su WordPress da me pubblicato di recente.

Nella prossima sezione vedremo come valutare come siamo messi a livello di sicurezza sul nostro sito attuale.

Analizzare il livello di sicurezza attuale del vostro sito. Comprendere il livello di sicurezza di un sito in WordPress è indispensabile, periodicamente, per rilevare eventuali falle scoperte e fare in modo di potenziarne, se necessario, le protezioni. Le operazioni di ricerca in questo campo sono facilitate dai vari tool di analisi che sono disponibili in rete, anche se c’è da dire che molti di essi sono a pagamento: di fatto, un’analisi di sicurezza dovrebbe sempre essere seguita da un esperto, dato che molti aspetti potrebbero sfuggire a qualsiasi strumento automatico, se non utilizzato a dovere.

Di fatto, questi tool sono basati su librerie di parsing dei file HTML delle pagine e di analisi della configurazione di rete: alla prova dei fatti, permettono di mettere in evidenza quello che potenzialmente potrebbe non andare nel sito. Tool come quello di Sucuri, tanto per cominciare, mette in evidenza la presenza di malware già installati ed attivi nel sito che potrebbero infastidire i nostri visitatori.

A questa analisi ne possono seguire altre, di livello più avanzato e specifiche della struttura e del funzionamento di WP.

Schermata 2015-03-27 alle 09.19.19

Il tool della HackerTarget, ad esempio, è in grado di mostrare:

  1. la versione di WordPress usata (ammesso che sia visibile in chiaro nei meta tag);
  2. la possibilità di effettuare una user enumaration (cioè visualizzare il nome utente di chi regolarmente edita e gestisce il sito);
  3. la possibilità per un utente non loggato di mostrare il contenuto di directory sensibili;
  4. l’enumerazione dei plugin e dei theme usati dal sito.

Queste analisi mostrano delle vulnerabilità che possono essere letali per il nostro sito in WordPress, almeno in linea di principio:

  1. se è nota la versione di WP usata, potrebbe essere fallata ed un utente malevolo potrebbe sfruttarne le debolezze;
  2. se è noto un nome utente amministratore, si possono indovinare le password per tentative brute force;
  3. se è accessibile il contenuto delle directory di theme o plugin, si possono sfruttare falle specifiche per eseguire script arbitrari o SQL injection;
  4. se, infine, si possono enumerare theme e plugin, è molto probabile che si possano effettuare attacchi specifici mirati a determinate versioni dei software.

Queste analisi servono perchè tutti i webmaster siano consapevoli dei rischi di cui soffrono molti dei loro siti in WP: fermo restando che molti attacchi, a dirla tutta, non sono neanche preventivabili. La messa in sicurezza di un sito in WordPress si può mettere in atto in vari modi, ma vale per tutti il principio dell’essenzialità: inutile lasciare attivi plugin, processi e theme che non siano effettivamente usati dal sito. Se a questo si affianca l’installazione di sistemi di protezione, e la sensibilizzazione del provider a queste problematiche, può aiutare a vivere con maggiore tranquillità la gestione del nostro sito web.

Questo post non sarebbe davvero completo se mancassero le considerazioni finali che riporto in seguito. WordPress è una delle piattaforme di blog più diffuse e, al tempo stesso, più colpite dal virus, malware e codice malevole: in molti casi l’utente medio tende a non considerare determinati aspetti di gestione, e questo facilita moltissimo il compito degli script malevoli e ne mette costantemente a rischio la gestione.

Suggerimenti finali. In linea di massima, il suggerimento più importante per tenere WordPress al sicuro è quello di:

  1. aggiornare theme e core sempre all’ultima versione disponibile;
  2. evitare di adottare plugin molto vecchi, sia perchè dismessi / non più aggiornati che per altre ragioni (molti utenti, ad esempio, tendono a lasciare attivi plugin di molti anni fa perchè le nuove versioni sono diventate a pagamento).

Sul primo bisogna capire bene le motivazioni: le ultime versioni sono allineate su bug e falle di sicurezza, e riducono al minimo l’impatto di queste problematiche. In certi casi, inoltre, le falle che vengono progressivamente pubblicate fanno riferimento a vecchie versioni di WP, per le quali c’è il rischio che rimangano falle aperte anche per molti mesi, o addirittura anni. Aggiornate sempre, quindi, visto che è soltanto così che potrete davvero stare tranquilli di essere al sicuro da defacciamenti, cancellazione di dati o accessi indebiti al vostro sito.

Sul secondo punto, invece, è necessario mettere a fuoco una specifica cattiva abitudine di molti utenti, i quali tendono a lasciare le vecchie versioni dei plugin dato che non è possibile ripristinarle in caso di errori. Ma questo è un preciso meccanismo di protezione del sistema che non dovrebbe mai essere aggirato: WordPress infatti (e non è un caso) sovrascrive i vecchi aggiornamenti con i più recenti, e da qualche tempo – al contrario di quanto avveniva anni fa – disattiva in automatico i plugin che creano problemi in fase di aggiornamento. Questo è inevitabile perchè, col tempo, cambiano le versioni di PHP, vengono riparate le falle di sistema che molti malware potrebbero sfruttare e l’ambiente subisce delle modifiche irrevocabili. I plugin vecchi, se non si possono aggiornare, andrebbero soltanto rimossi o al limite rimpiazzati con altri equivalenti, stabili e sicuri. Tenere attivi plugin vecchi solo perché “fanno funzionare il sito” (fino a prova contraria, di fatto), crea un enorme bug di sicurezza che può essere un pericolo serio per la stabilità del sito.

Seguire la sicurezza del proprio sito in WP non è banale, e può a volte richiedere l’intervento di un esperto: come misura di base per gli utenti comuni, potete sfruttare apposite strategie per potenziare la sicurezza di WordPress. Nella maggioranza dei casi, inoltre, le falle note di WordPress vengono segnalate, di solito non appena sono disponibili gli aggiornamenti del caso, nella sezione sicurezza di questo sito.

Come migliorare la sicurezza di WP

Cercherò ora di riassumere quindi i passi principali da compiere per

  1. capire cosa sia un problema (o falla) di sicurezza in wordpress;
  2. sapere come intervenire su un sito WordPress hacked.

Cosa è esattamente un “problema di sicurezza” per WP?

Una security issue (detta anche security vulnerability o vulnerabilità di WordPress) non è altro che un bug di programmazione, a volte grossolano altre molto meno ovvio, di cui una versione di WordPress è affetta. Solitamente, per come viene gestito ed aggiornato il CMS, le ultime versioni sono quelle meno affette da problemi di sicurezza delle altre. Difficilmente si potrà arrivare a versioni di WP immuni da problemi del genere perchè, nel frattempo, cambieranno le versioni dei software e gli hardware sottostanti, costringendo così gli sviluppatori a rivedere, periodicamente, tutte (o quasi) le issue del caso. L’immagine di falle che si aprono e si chiudono periodicamente credo restituisca un’immagine efficace, e realistica, dello scenario in cui lavoriamo ogni giorno.

Una vulnerabilità di sicurezza non è altro che un bug (di solito) nel core di WordPress ma, per estensione, potrebbe riguardare anche un plugin o un theme che state utilizzando, qualora quest’ultimo presenti porzioni di codice (ad esempio criptate) che effettuino operazioni pericolose per la sicurezza o la stabilità del CMS, o che ad esempio vadano a creare delle “porte di accesso” (o backdoor) per eventuali attaccanti.

Come, quando e perchè segnalare un bug sulla sicurezza

È possibile segnalare eventuali problematiche di sicurezza, ammesso che abbiate la sfortuna di trovarne una per la prima volta (cercate su Google prima), tenendo a mente i seguenti punti:

  1. se il vostro WP è stato defacciato (“hacked“, più in generale) questo non è in generale un problematica di sicurezza (nel senso in cui ne parliamo qui), perchè essa presuppone che siate in grado di stabilire in che modo l’attaccante ha sfruttato un bug o una falla a proprio vantaggio. Bisogna contattare WP via email o forum solo nel caso in cui sappiate dare informazioni molto precise a riguardo.
  2. se avete dimenticato la password di WordPress non si tratta, neanche in questo caso, di un problema di sicurezza. Dovreste resettare la password facendovene inviare una via email oppure, a seconda dei casi, contattando l’amministratore del sito WP su cui state lavorando.
  3. Di solito i problemi di sicurezza di WP sono tutt’altro che banali da identificare e comprendere: attenzione, quindi, a segnalare problemi che siano effettivamente tali e soprattutto ignoti in precedenza.
  4. Dopo tutte le verifiche del caso scrivete a WP per segnalare un problema che avete scoperto, eventualmente, ed il forum per segnalare problemi in corso che sono riconducibili a qualcosa di noto (ad esempio una versione fallata di WP o un plugin anomalo).

Come segnalare un problema di sicurezza generale (non specifico del vostro sito: generale!)?

Ci sono modi chiari e ben codificati per farlo.

  • Per un problema di sicurezza relativo a WordPress.com bisogna consultare la pagina di Automattic;
  • per un problema di sicurezza su un plugin, scrivete una mail a plugins [at] wordpress.org aggiungendo il maggior numero possibile di dettagli e, se possibile, contattando lo sviluppatore in merito al problema riscontrato, via email o (più comunemente) via forum associato alla pagina del plugin.
  • Se il problema riguarda un theme, rimuovetelo quanto prima via FTP dal vostro file system ed installatene uno di default.
  • Se invece il problema riguarda la sicurezza di una versione che avete installato su un hosting, scrivete a security [at] wordpress.org allegando il maggior numero di dettagli possibile.

È davvero corretto rendere pubblici i dettagli di un problema di sicurezza?

Cosa interessante: WordPress suggerisce di non pubblicare in nessun caso i dettagli sulle debolezze informatiche del suo CMS, considerata come attività irresponsabile e poco professionale (irresponsible and unprofessional). Il problema è che, piuttosto, la prassi di questi casi sia l’esatto contrario: su siti come seclists.org vengono pubblicati bollettini pubblici ogni giorno, relativi a problemi di sicurezza, e con vari livelli di dettaglio, che potrebbero effettivamente essere sfruttati all’istante da utenti malintenzionati.

C’è da dire che in certi casi le segnalazioni sono vaghe, e che molti siti hanno la prontezza di tenere d’occhio da sè la lista e provvedere volta per volta. Da un lato ha ragione WordPress ad attuare tale politica cautelativa, per quanto il mio punto di vista sia che, nonostante tutto, quei bug sarebbero comunque circolati una volta scoperti, per cui tanto vale che siano pubblicati e, sperabilmente, risolti così più in fretta di quanto avverrebbe diversamente. Del resto i bug di Microsoft o Adobe (esempi di politiche aziendali chiuse, contrapposte all’open source) vengono resi pubblici solo dopo essere stati risolti, il che – se ci pensate – è decisamente più angosciante di quanto non sia sapere da subito che esiste un problema: è come stare in una stanza in cui, dopo mesi di permanenza, scopriamo che un nostro coinquilino fosse affetto da una malattia sconosciuta ai più. A saperlo, per intenderci, avremmo preso provvedimenti: disattivato il plugin o il theme, al limite messo il sito in stop finchè il problema non fosse stato risolto. Invece così facendo è tutto nelle mani di pochi che, a propria discrezione, decidono se e quando sia il caso di dire la verità (come avvenuto, in un caso recente, sulle webcam fallate di alcuni modelli di Mac).

Il paradigma security throught obscurity (adottato anche dalla Apple, peraltro) mi convince sempre meno, e vi preferisco da sempre il principio di Kerchoffs che afferma:

  • In un sistema crittografico è importante tener segreta la chiave, non l’algoritmo di crittazione.

In altri termini: piuttosto che sconfinare nella paranoia, pensiamo a usare password robuste su WordPress, evitiamo plugin fallati (di solito sono quelli più borderline a dare problemi), lavoriamo su hosting tenuti al  e restiamo sempre a contatto con gli esperti, ad esempio iscrivendo a qualche mailing list sull’argomento.

 Il mio sito in WordPress è stato violato / defacciato / hacked: cosa posso fare?

Sono molte le cose che si possono fare, potreste risolvere in pochi minuti o in qualche ora ma è richiesto un certo livello di esperienza. Come prima cosa, se possibile, installate un plugin come Exploit Scanner che potrebbe esservi di aiuto per identificare il problema, ammesso che riusciate ancora ad accedere come amministratori al sito.

Per il resto, in ordine sparso, quello che faccio di solito è riassumibile in questa lista.

  • cambiare le password di amministratori ed editori del sito, se possibile;
  • se non è possibile accedere al sito via browser, disattivare i record A o i nameserver del sito per cautela, e per impedire ulteriori danni all’attaccante;
  • cambiare la password FTP, o rimuovere la vecchia utenza e ricrearne una nuova da cPanel;
  • scaricare tutti i log di sistema e rimuoverli in seguito;
  • provare a reinstallare l’ultima versione di WordPress sovrascrivendola a quella fallata;
  • rimuovere theme e plugin e, a seconda dei casi, riattivarli uno per uno o verificare su Google se ci siano falle aperte note su ognuno di essi (vedi punto precedente: se non fosse possibile saperlo da Google, sarebbe decisamente complesso intervenire in questi casi!);
  • verificare i permessi sul filesystem mediante CHMOD;
  • verificare il file htaccess, in caso ricrearne uno di default;
  • rigenerare le chiavi di sicurezza di WP (vedi security keys).

Come riconoscere un attacco su WordPress (e difendersi)

La sicurezza di WP è ormai diventata una priorità da cui nessuno dovrebbe prescindere, ed è importante installare un qualche plugin per la sicurezza che ci permetta di evitare defacing, accessi illeciti al sito mediante backdoor ed i classici brute force attacks (tentativi, di solito automatici, di entrare nel vostro sito indovinando la vostra password mediante un dizionario).

Un esempio pratico

Quando si installa iThemes Security (che considero il migliore e più completo plugin per la sicurezza ad oggi), qualche giorno dopo averlo settato vi potrebbero arrivare ripetute notifiche via email di “violazioni”, che poi non è detto che siano davvero tali. Una “Site lockout notification” serve a notificarvi che, in base alla vostra specifica politica di sicurezza, qualche bot, script o utente ha violato le vostre regole tentando di entrare illecitamente nel vostro sito (provando ad indovinare la password di WordPress, ad esempio). Non è il caso di allarmarsi poichè questo genere di attacchi, purtroppo, sono all’ordine del giorno: sul blog che sto segnalando mi stanno arrivando periodicamente, e questo mi ha spinto a ridurre la tolleranza ai tentativi abbassando le soglie numeriche entro cui, in pratica, scatta il meccanismo di protezione. Considerate poi che, in linea di massima, gli hosting sono sempre più “bravi” a prevenire questo genere di attacchi, ma è chiaro che anche noi dobbiamo impegnarci perchè queste cose diventino poco pericolose (ad esempio scegliendo per gli utenti e per noi stessi password robuste).

C’è da dire che, con questo plugin, quantomeno sappiamo che la cosa stia avvenendo – in particolare il blog del cliente credo sia stato preso di mira da qualche bot – ed è probabile che anche il vostro blog in WP sia affetto dallo stesso problema: per evitare di trovarvi defacciati da un giorno all’altro, iTheme Security è un plugin che vi permette quantomeno di arginare il problema. Un ban più robusto e meno tollerante del solito permetterà, quindi, di aggirare ogni difficoltà, unito alla cura di cambiare le vostre password periodicamente e, soprattutto, a sceglierle con criterio.

Come scansionare le vulnerabilità di WP con WPScan

La cosa più incredibile, e direi sottovalutata, annessa agli attacchi informatici via web (e non solo questi, per la verità) è che gli strumenti per eseguirli quasi in automatico sono quasi sempre disponibili liberamente in rete. È ad esempio il caso di WPScan, un tool per la ricerca di threat ed exploit di wordpress: nel frattempo qualcuno sostiene addirittura che determinate vulnerabilità (come il fatto di “far capire” all’attaccante se la username esista o meno) siano a conoscenza del team di sviluppo ma, per qualche motivo, non siano state risolte.

Per funzionare, WPScan – come molti altri plugin di WordPress – richiede obbligatoriamente un’installazione Linux ed il supporto a Ruby, RubyGems e Git: esso permette, dopo l’installazione da riga di comando, di effettuare la scansione di qualsiasi genere di dominio (su cui sia installato WP), verificando anzitutto se effettivamente sia presente questo famoso CMS. Una delle funzionalità più potenti di questo tool è legata all’enumerazione delle username del blog, ed alla rilevazione automatica dei due noti punti di potenziale debolezza di WP: i plugin ed i temi buggati, difettosi, obsoleti o corrotti.

Non ho ancora avuto il tempo di sperimentare il tool, e preciserei che non è chiaro se le username, ad esempio, possano essere rilevate sempre e comunque su qualsiasi blog oppure se si tratti di un comune tipo di attacco brute-force, dato che wordpress “fa capire”, quando si sbaglia username o password, quale delle due sia errata, facilitando le operazioni ad un potenziale attaccante specialmente se si utilizzano username standard come “admin”.

Non entro ulteriormente nel dettaglio dell’applicazione, che è piuttosto ben documentata, ma mi limito a riportare una serie di esempi che, secondo il suo autore, si possono attuare per rendere la vita complessa a chi utilizza WordPress per il proprio blog.

    1. Check semplice di un sito per raccogliere le informazioni basilari;
    2. test delle password in modalità brute force mediante multi-thread (significa che il tempo di esecuzione della procedura avviene “in parallelo” e quindi impiega meno tempo del dovuto);
    3. test delle password mantenendo la username fissa (ad esempio “admin”);
    4. enumerazione dei plugin installati sul sistema;

enumerazione dei plugin in genere più popolari tra i blogger, alla ricerca di quelli risaputamente fallati.

Nessun voto disponibile

Che te ne pare?

Grazie per aver letto Sicurezza di WordPress: la guida completa di Salvatore Capolupo su Trovalost.it
Sicurezza di WordPress: la guida completa (Guide, Configurazione Hosting, Guide per la configurazione di WordPress)

Articoli più letti su questi argomenti:

Trovalost.it è gestito, mantenuto, ideato e (in gran parte) scritto da Salvatore Capolupo