Come proteggere la pagina di login di WordPress: guida completa
La pagina di login (wp-login.php) è il punto di ingresso principale per il pannello di amministrazione di WordPress. È anche il bersaglio preferito degli attaccanti: bot automatizzati tentano migliaia di combinazioni di username e password ogni giorno su siti WordPress di tutto il mondo. Proteggere questa pagina è una delle misure di sicurezza più importanti che puoi adottare.
Perché la pagina di login è un bersaglio
Tutti i siti WordPress hanno la pagina di login allo stesso indirizzo: /wp-login.php o /wp-admin/. Questo significa che un bot può trovare automaticamente la pagina di login di qualsiasi sito WordPress senza fare alcuna ricognizione. I tipi di attacco più comuni:
- Brute force: il bot prova migliaia di combinazioni di username e password usando dizionari di password comuni.
- Credential stuffing: il bot usa credenziali rubate da altri siti (data breach) sperando che l’utente usi la stessa password.
- Enumerazione utenti: il bot scopre gli username validi tramite ?author=1 o la REST API, poi concentra l’attacco su quegli account.
Limitare i tentativi di login
La prima difesa è limitare il numero di tentativi di login falliti da un singolo indirizzo IP. Dopo un certo numero di tentativi sbagliati, l’IP viene bloccato temporaneamente.
Plugin consigliati:
- Limit Login Attempts Reloaded: semplice ed efficace. Configura 3-4 tentativi massimi, lockout di 20 minuti al primo blocco e 24 ore dopo 4 blocchi.
- Wordfence: include la limitazione dei tentativi tra le sue funzionalità di sicurezza, insieme a firewall e scanner malware.
- Login LockDown: alternativa leggera che registra gli IP e i tentativi falliti.
Cambiare l’URL della pagina di login
Se i bot non trovano la pagina di login, non possono attaccarla. Cambiare l’URL da /wp-login.php a qualcosa di personalizzato (es. /accesso-riservato) blocca la maggior parte degli attacchi automatizzati.
Il plugin WPS Hide Login è il più semplice per farlo:
- Installa e attiva WPS Hide Login.
- Vai su Impostazioni → Generali, scorri in fondo.
- Nel campo “URL di login”, inserisci il nuovo percorso (es. accesso-riservato).
- Salva. Da ora, /wp-login.php restituirà un errore 404.
Importante: segna il nuovo URL in un posto sicuro. Se lo dimentichi, puoi disattivare il plugin rinominando la sua cartella via FTP.
Attivare l’autenticazione a due fattori (2FA)
Il 2FA aggiunge un secondo livello di protezione: anche se un attaccante indovina la password, non potrà accedere senza il codice temporaneo generato dal tuo telefono.
Plugin consigliati:
- WP 2FA: supporta Google Authenticator, Authy e codici di backup. Interfaccia semplice e possibilità di forzare il 2FA per tutti gli utenti.
- Two Factor Authentication: supporta TOTP (app authenticator), email e codici di backup.
- Wordfence Login Security: modulo gratuito separato da Wordfence che aggiunge 2FA e CAPTCHA al login.
Come minimo, attiva il 2FA per tutti gli account con ruolo Amministratore e Editor.
Aggiungere un CAPTCHA al login
Un CAPTCHA blocca i bot automatizzati costringendoli a risolvere una sfida che solo un umano può completare. Le opzioni principali:
- Google reCAPTCHA v3: invisibile agli utenti, assegna un punteggio di “umanità” senza interazione. Il plugin Advanced Google reCAPTCHA lo integra facilmente.
- hCaptcha: alternativa privacy-friendly a Google reCAPTCHA. Il plugin hCaptcha for WordPress lo integra nel login.
- Cloudflare Turnstile: il CAPTCHA di Cloudflare, gratuito e rispettoso della privacy.
Proteggere wp-login.php a livello server
Per una protezione aggiuntiva, puoi aggiungere un’autenticazione HTTP a livello server. Questo crea un doppio login: prima l’autenticazione del server, poi quella di WordPress.
Per Apache (.htaccess):
- Crea un file .htpasswd fuori dalla document root con le credenziali.
- Aggiungi al .htaccess:
<Files wp-login.php> AuthType Basic AuthName "Area Riservata" AuthUserFile /percorso/.htpasswd Require valid-user </Files>
Per Nginx:
location = /wp-login.php {
auth_basic "Area Riservata";
auth_basic_user_file /percorso/.htpasswd;
include fastcgi_params;
fastcgi_pass php-fpm;
}
Bloccare l’enumerazione degli utenti
Per impedire ai bot di scoprire gli username validi:
- Blocca le query author: aggiungi al functions.php del tema uno snippet che reindirizza le richieste ?author=N alla homepage.
- Limita la REST API: il plugin Disable REST API for Non-Admins nasconde gli endpoint utente della REST API ai visitatori non autenticati.
- Usa un nickname diverso dal login: in Utenti → Il tuo profilo, imposta il “Nome visualizzato pubblicamente” diverso dall’username di login.
Checklist di sicurezza per il login
Riassumendo, ecco le misure da implementare in ordine di priorità:
- Password forte (16+ caratteri, unica per ogni sito).
- Limitazione tentativi di login (plugin Limit Login Attempts).
- 2FA attivo per tutti gli amministratori.
- URL login personalizzato (WPS Hide Login).
- CAPTCHA sulla pagina di login.
- Protezione HTTP Auth a livello server (per siti ad alto rischio).
- Blocco enumerazione utenti.
Serve assistenza?
Se il tuo sito WordPress subisce attacchi al login o vuoi implementare tutte le misure di protezione senza rischiare di bloccarti fuori, il team di SoccorsoWP può configurare tutto per te. Apri un ticket e blinda l’accesso al tuo WordPress.