Su un sito WordPress lasciato con la configurazione predefinita, la pagina di accesso è probabilmente la risorsa più richiesta del server, non da veri visitatori, ma da bot che testano continuamente combinazioni di credenziali. Questa attività, chiamata attacco a forza bruta, sfrutta il fatto che l'URL di accesso è identico su milioni di installazioni WordPress nel mondo. La buona notizia è che bastano poche misure semplici per respingere la grande maggioranza di questi tentativi, senza richiedere competenze avanzate.
Perché questa minaccia colpisce così tanto WordPress
WordPress fa funzionare una quota molto importante dei siti web nel mondo, il che lo rende un bersaglio privilegiato per script automatizzati che non puntano a un sito specifico, ma scandagliano l'intero internet alla ricerca di installazioni mal protette. Una parte significativa di questi tentativi di accesso utilizza password già compromesse in violazioni di dati altrove sul web, il che rende particolarmente rischioso riutilizzare una password tra più servizi per un account amministratore.
Cambiare il nome utente admin
Se il tuo account amministratore principale si chiama ancora admin, metà del lavoro di un attaccante è già fatto: gli resta solo da indovinare la password. WordPress non permette di rinominare un nome utente esistente, ma è semplice creare un nuovo utente con un nome distinto e diritti di amministratore, trasferire i contenuti esistenti a questo nuovo account, quindi eliminare il vecchio account admin.
Limitare il numero di tentativi di accesso
Senza restrizioni, un bot può testare diverse migliaia di combinazioni al minuto. Un plugin di limitazione dei tentativi, come Limit Login Attempts Reloaded o funzionalità equivalenti integrate in suite di sicurezza più ampie, blocca temporaneamente un indirizzo IP dopo un numero definito di fallimenti, generalmente cinque tentativi seguiti da un blocco di qualche minuto fino a qualche ora. Questa sola misura basta a rendere un attacco automatizzato troppo lento per essere redditizio.
Aggiungere l'autenticazione a due fattori
WordPress non offre nativamente l'autenticazione a due fattori nel proprio core, questa funzionalità va aggiunta tramite un plugin dedicato. Una volta attivata, richiede, oltre alla password, un codice temporaneo generato da un'app sullo smartphone, il che rende inutile una password rubata da sola per un attaccante. Questa protezione dovrebbe essere imposta a tutti gli account con diritti di amministratore o editor, non solo all'account principale.
Cambiare l'URL di accesso
I bot puntano sistematicamente agli indirizzi predefiniti, wp-login.php e wp-admin. Un plugin come WPS Hide Login permette di sostituire questo indirizzo con un URL personalizzato, noto solo a te. Questa misura non sostituisce le protezioni precedenti, ma riduce considerevolmente il volume di tentativi automatizzati che raggiungono realmente il tuo server, poiché la maggior parte dei bot non cercherà mai oltre un indirizzo predefinito assente.
Disattivare XML-RPC se non lo usi
Questo file, presente di default su WordPress, consente connessioni remote utilizzate da alcune app mobili o strumenti di pubblicazione esterni. Costituisce anche un vettore di attacco aggiuntivo, in particolare per tentativi di accesso raggruppati che a volte aggirano le limitazioni classiche. Se nessuno strumento della tua PMI ne dipende, disattivarlo a livello di server o tramite un plugin chiude questa porta senza alcuna perdita funzionale.
Affidarsi al proprio hosting
Molti hosting gestiti offrono già un firewall applicativo e un filtraggio dei tentativi sospetti a livello di rete, prima ancora che la richiesta raggiunga WordPress. Verificare cosa offre concretamente il tuo hosting attuale a volte permette di scoprire che parte della protezione è già in atto, e che lo sforzo richiesto lato sito si limita alle misure complementari descritte qui.
Punti da verificare prima della pubblicazione: confermare che i plugin citati (Limit Login Attempts Reloaded, WPS Hide Login) siano ancora mantenuti e disponibili nella directory ufficiale di WordPress al momento della pubblicazione, e verificare che l'assenza di autenticazione a due fattori nativa nel core di WordPress resti valida a quella data.