Come limito i tentativi di accesso (login) in WordPress?
Di Eureka Studio · Aggiornato il
In breve
WordPress di base accetta tentativi di accesso illimitati. Per limitarli, usa un plugin che conta i login falliti per IP in una finestra temporale e blocca quell'IP per un po', ad esempio 8 errori in 5 minuti significano 15 minuti di attesa. Assicurati che contino anche gli errori della 2FA e delle password delle applicazioni, e aggiungi il tuo IP alla lista consentiti.
Passaggi
1Passaggio 1
Guarda com'è un numero illimitato di tentativi
Senza un limite, WordPress risponde a ogni password sbagliata con lo stesso errore, tutte le volte che glielo chiedono, e il messaggio predefinito conferma perfino che il nome utente esiste.

2Passaggio 2
Attiva i Limiti di login e imposta le regole
In WordPress, apri Hushfort → Limiti e restrizioni e attiva Attiva i limiti di login. I valori predefiniti sono 8 tentativi falliti in 5 minuti, poi un blocco di 15 minuti; dopo 4 blocchi in 24 ore il blocco dura 1.440 minuti. Premi Salva le modifiche.

3Passaggio 3
Aggiungi il tuo IP alla lista consentiti e controlla l'origine dell'IP
Più in basso, imposta Origine dell'IP. "Automatica (solo header proxy verificati)" va bene per la maggior parte dei siti, compresi quelli dietro Cloudflare. Poi aggiungi l'IP del tuo ufficio o di casa in IP consentiti, così non potrai mai chiuderti fuori, e salva.

4Passaggio 4
Ricevi un'email quando un IP viene bloccato
Attiva Email di avviso e indica uno o più indirizzi, separati da virgole. L'interruttore richiede un SMTP funzionante sul sito; senza, Hushfort lascia l'opzione disattivata e ti spiega perché.

5Passaggio 5
Guarda il limite in azione
Dopo il numero di errori consentito, l'IP viene bloccato invece di ricevere un altro tentativo. La Cronologia elenca ogni blocco attivo con il nome utente tentato, il numero di tentativi e quando termina il blocco, con un pulsante Sblocca.
Perché è importante
Limitare i tentativi di accesso in WordPress significa bloccare per qualche minuto un IP dopo pochi login falliti, così il brute force smette di funzionare. Un attacco brute force è solo pazienza: prova una password, sbaglia, prova la successiva. A WordPress non importa. Risponderà a mille tentativi sbagliati dallo stesso indirizzo con la stessa cortesia del primo. Se un account ha una password debole o riutilizzata, è solo questione di tempo.
Un limite di login cambia i conti. Se un IP può fare solo una manciata di tentativi prima di dover aspettare quindici minuti, indovinare una password decente richiede anni invece di ore. Inoltre evita al tuo server di generare la pagina di login più e più volte per un bot.
Cosa non copre da solo. Gli attaccanti che controllano migliaia di indirizzi IP possono inviare pochi tentativi da ciascuno. Ecco perché un limite di login funziona meglio insieme al login a due fattori, che rende inutile una password indovinata senza il codice.
Errori comuni
- Contare solo il modulo di login. Le password si possono provare anche tramite
xmlrpc.php, tramite le password delle applicazioni della REST API e al passaggio del codice a due fattori. Se questi non contano per il limite, gli attaccanti li usano e basta. Chiudi anche il login via XML-RPC; leggi come disattivare XML-RPC in sicurezza. - Leggere l'IP sbagliato dietro un proxy. Se il tuo sito è dietro Cloudflare e il plugin
legge l'indirizzo del proxy, un solo bot può bloccare tutti i visitatori. Se invece si fida ciecamente dell'header
X-Forwarded-For, un bot può inventarsi un nuovo IP a ogni richiesta e non essere mai contato. La regola sicura è fidarsi degli header del proxy solo quando la richiesta arriva davvero dal proxy. - Blocchi troppo lunghi. Un blocco di 24 ore per tre errori di battitura punisce il tuo stesso personale. Mantieni breve il primo blocco e allunga quelli ripetuti.
- Nessuna lista consentiti. Aggiungi il tuo IP fisso, così una password dimenticata non ti chiuderà mai fuori.
Senza plugin
WordPress ha un hook, wp_login_failed, che si attiva dopo ogni login fallito. Puoi contare
gli errori con un transient e rifiutare i login quando il conteggio è troppo alto. Una versione minima per
un plugin must-use (wp-content/mu-plugins/login-limit.php):
<?php
add_action( 'wp_login_failed', function () {
$key = 'll_' . md5( $_SERVER['REMOTE_ADDR'] );
$n = (int) get_transient( $key );
set_transient( $key, $n + 1, 15 * MINUTE_IN_SECONDS );
} );
add_filter( 'authenticate', function ( $user ) {
$key = 'll_' . md5( $_SERVER['REMOTE_ADDR'] );
if ( (int) get_transient( $key ) >= 8 ) {
return new WP_Error( 'too_many', 'Too many failed attempts. Try again later.' );
}
return $user;
}, 30 );
Funziona, ma sii onesto su ciò che non copre: legge solo REMOTE_ADDR, quindi dietro un proxy
conta il proxy; non conta come tentativi separati quelli inviati tramite multicall XML-RPC; non ha
lista consentiti, email di avviso né log. Ognuna di queste cose è altro codice da scrivere e mantenere.
Alcuni hosting offrono anche strumenti a livello di server, come fail2ban che sorveglia il log di accesso. È una soluzione robusta se il tuo hosting la gestisce per te; su un hosting condiviso di solito non puoi configurarla.
Se qualcosa va storto
- Ti sei chiuso fuori. Aspetta che il blocco finisca, prova da un'altra rete come i dati mobili, oppure chiedi a un altro amministratore di aggiungere il tuo IP alla lista consentiti.
- Vengono bloccati tutti insieme. Probabilmente il tuo sito è dietro un proxy e il plugin sta leggendo l'IP del proxy. Cambia l'impostazione Origine dell'IP.
- I blocchi non scattano mai. Controlla se l'origine dell'IP si fida di un header che i bot possono falsificare. Se ogni tentativo mostra un "IP" diverso, la causa è quella.
Per tutti i modi di rientrare, leggi Accesso bloccato dopo aver cambiato l'URL di login.
Con Hushfort
Limiti di login fa parte di Hushfort Pro, il componente aggiuntivo a pagamento che si installa sopra Hushfort Security, il plugin di sicurezza gratuito per WordPress.
Il livello Limiti di login di Hushfort conta i login falliti per IP (o per IP e nome utente) all'interno di una finestra temporale che scegli tu, e blocca l'IP per un tempo che scegli tu. Blocchi ripetuti entro 24 ore possono far scattare un blocco esteso, più lungo.
- Contano anche i codici a due fattori errati e i login falliti con password delle applicazioni, quindi non c'è nessuna porta laterale per tirare a indovinare.
- Gli header del proxy sono considerati affidabili solo quando la richiesta arriva davvero da Cloudflare o da una rete privata.
- Le email di avviso vanno a tutti gli indirizzi che indichi.
- Ogni tentativo fallito e bloccato compare in una Cronologia filtrabile.
- La lista consentiti è condivisa con tutti gli altri livelli di Hushfort, quindi ti aggiungi una volta sola.
Disattivando Hushfort si annullano tutti i blocchi esistenti.
Domande frequenti
Quanti tentativi di login dovrei consentire?
WordPress limita i tentativi di login di default?
Un limite di login può chiudermi fuori dal mio sito?
Limitare i tentativi di login basta a fermare il brute force?
Perché dietro Cloudflare i blocchi colpiscono le persone sbagliate?
Guide correlate
Come attivo l'autenticazione a due fattori (2FA) su WordPress?
Attiva l'autenticazione a due fattori su WordPress con qualsiasi app: configura la 2FA, salva i codici di recupero e scopri cosa fare se perdi il telefono.
Leggi i passaggiCos'è xmlrpc.php e come disabilito XML-RPC in WordPress?
xmlrpc.php è una seconda porta di login che nascondere wp-login.php non chiude. Come disabilitare XML-RPC, tenere i pingback e verificare il risultato.
Leggi i passaggiCome cambio l'URL di login (accesso) di WordPress?
Cambia l'URL di login di WordPress e nascondi wp-admin in cinque passaggi sicuri. Prova il nuovo URL prima di uscire e scopri come rientrare se lo scordi.
Leggi i passaggi
