Hushfort

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

  1. 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.

    Due password sbagliate digitate nel modulo di login di WordPress; ogni volta WordPress dice che la password per demo-admin non è corretta e lascia passare il tentativo successivo
  2. 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.

    Scheda Limiti e restrizioni di Hushfort: limiti di login attivati, con tentativi falliti consentiti 8, finestra temporale 5 minuti e durata del blocco 15 minuti
  3. 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.

    Origine dell'IP impostata su Automatica (solo header proxy verificati) e 203.0.113.10 aggiunto in IP consentiti
  4. 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é.

    Email di avviso attivata con due indirizzi per gli avvisi inseriti, poi salvata
  5. 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.

    Schermata Cronologia di Hushfort: Blocchi attivi per tre indirizzi IP con i nomi utente tentati, 8 tentativi ciascuno e 15 minuti rimanenti, sopra la cronologia completa dei tentativi falliti

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?

Abbastanza per una persona che sbaglia a digitare qualche volta, pochi abbastanza da rendere inutile tirare a indovinare. Qualcosa come da 5 a 10 errori in pochi minuti, con un blocco di 15 minuti, è una via di mezzo tranquilla.

WordPress limita i tentativi di login di default?

No. WordPress di base accetta un numero illimitato di login falliti. Alcuni hosting aggiungono un limite a livello di server, quindi chiedi al tuo, ma non puoi contarci.

Un limite di login può chiudermi fuori dal mio sito?

Può succedere se continui a sbagliare. Aggiungi il tuo IP alla lista consentiti, oppure aspetta che il blocco finisca. Anche un altro amministratore può aggiungere il tuo IP alla lista consentiti.

Limitare i tentativi di login basta a fermare il brute force?

Rallenta i tentativi fino a renderli lentissimi, ma gli attaccanti con molti indirizzi IP possono distribuire i loro tentativi. Abbinalo al login a due fattori, a password robuste e alla chiusura del login via XML-RPC.

Perché dietro Cloudflare i blocchi colpiscono le persone sbagliate?

Dietro un proxy, ogni visitatore può sembrare provenire dall'IP del proxy. Imposta l'origine dell'IP in modo che il plugin si fidi dell'header con l'IP reale, e solo quando la richiesta arriva davvero da quel proxy.

Segnala un bug o richiedi una funzione

Il tuo messaggio arriva direttamente al team che sviluppa Hushfort.

Di cosa si tratta?

Usata solo per risponderti.

Usiamo questi dati solo per risponderti. Privacy