Accesso: password, autenticazione a due fattori e brute force
Modulo 7: Sicurezza · Tempo di lettura: 9 minuti
Obiettivo della lezione: Dopo questa lezione sarà in grado di proteggere l'accesso al Suo sito con password solide, autenticazione a due fattori e la limitazione dei tentativi di accesso, e saprà cos'è xmlrpc.php.
Concetti chiave: gestore di password, passphrase, password univoca, autenticazione a due fattori (2FA, TOTP), passkey, brute force, limitazione dei tentativi di accesso, wp-login.php su indirizzo IP, xmlrpc.php, nomi utente che trapelano (REST, ?author=), password per applicazioni
La password: lunga e univoca
Una buona password ha due caratteristiche:
- Lunga: la lunghezza conta più dei caratteri speciali. Una passphrase di quattro o cinque parole casuali (
setaccio-pinguino-ottobre-lanterna) è più forte e più facile da ricordare diP4ssw0rd!. Le linee guida sulla sicurezza informatica raccomandano una password univoca di almeno 12 caratteri, preferibilmente una passphrase. - Univoca: non utilizzata altrove. Il credential stuffing (lezione 7.1) funziona solo se si riutilizza una password.
Nessuno ricorda decine di password lunghe e univoche. Utilizzi quindi un gestore di password: un programma che le crea, le conserva e le compila al posto Suo. Così dovrà ricordarne solo una: quella del gestore stesso, che a sua volta va protetta con l'autenticazione a due fattori.
Può verificare se una password si trova in una violazione di dati nota su haveibeenpwned.com. Se il Suo indirizzo email compare in una violazione, cambi la password presso ogni servizio in cui ha utilizzato la stessa password.
Autenticazione a due fattori
Con l'autenticazione a due fattori (2FA), oltre alla password serve qualcos'altro per accedere: di solito un codice di sei cifre generato da un'app sul telefono (un'app di autenticazione, secondo lo standard TOTP). Un intruso in possesso della Sua password non riesce comunque a entrare.
WordPress non dispone di autenticazione a due fattori integrata. La si aggiunge con un plugin. Ce ne sono molti; uno semplice è Two Factor, realizzato dai collaboratori di WordPress stesso. Anche i plugin di sicurezza spesso la includono. Nella scelta, consideri:
- app TOTP e codici di backup (per quando perde il telefono); i codici via email sono più deboli, perché anche la casella di posta può essere violata;
- la possibilità di renderla obbligatoria per amministratori e redattori;
- passkey: accesso con impronta digitale, volto o una chiave di sicurezza, senza password. Esistono plugin anche per questo. Le passkey sono resistenti al phishing, perché funzionano solo sul sito reale.
Attivi l'autenticazione a due fattori anche su tutto ciò che sta intorno al Suo sito: il pannello di hosting, l'email, il registrar e il gestore di password. Un intruso che prende il controllo del pannello di hosting non ha bisogno della Sua password di WordPress.
Brute force e limitazione dei tentativi di accesso
Un sito WordPress aperto riceve tentativi di accesso su wp-login.php tutto il giorno, spesso con admin e liste di password comuni. Con una password lunga e la 2FA non riescono a entrare, ma ogni tentativo richiede elaborazione al Suo server (un avvio completo di WordPress). In caso di un'ondata consistente, il Suo sito diventa lento.
WordPress stesso non limita il numero di tentativi. Ciò che aiuta, in ordine di "blocco anticipato":
- Sul server: molti hoster bloccano un indirizzo IP che effettua molti tentativi falliti in poco tempo, ancora prima che WordPress si avvii (con un firewall o una funzione del server web). Chieda al Suo hoster cosa succede.
- wp-login.php riservato al Suo indirizzo IP: con alcune righe in
.htaccess(per LiteSpeed e Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Funziona bene se ha un indirizzo IP fisso. Se non lo ha (da casa, dal telefono), si esclude da solo se l'indirizzo cambia. Un'alternativa è una password aggiuntiva sulla pagina di accesso (una "cartella protetta", basic authentication) con una password diversa da quella di WordPress.
- Un plugin che limita i tentativi: dopo cinque tentativi falliti, l'indirizzo IP viene bloccato per un certo periodo. Funziona, ma solo dopo che WordPress è già in esecuzione, quindi il carico di elaborazione rimane.
Nascondere o rinominare la pagina di accesso (ad esempio /mio-login invece di /wp-login.php) riduce il rumore nel Suo registro. Non è una vera protezione, e alcuni plugin e temi si aspettano l'indirizzo predefinito. Va bene come aggiunta, mai al posto di una buona password e della 2FA.
xmlrpc.php
xmlrpc.php è una vecchia interfaccia risalente a prima della REST API, con cui app e altri siti comunicano con WordPress. È ancora usata da alcune app, da Jetpack e da alcune integrazioni. Per la maggior parte dei siti è superflua.
Gli intrusi apprezzano xmlrpc.php, perché con una sola richiesta si possono provare centinaia di password contemporaneamente (con la funzione system.multicall), e perché può essere sfruttata per attacchi contro altri siti (pingback). Cosa fare:
- Non la utilizza: la blocchi. Alcuni hoster, tra cui WebOké, bloccano xmlrpc.php di default sul server. Altrimenti, con una regola in
.htaccesso con un plugin di sicurezza. - La utilizza (ad esempio per un'app che ne ha bisogno): la lasci aperta, ma assicuri password forti, 2FA e una limitazione dei tentativi. Le app moderne di solito usano la REST API con una password per applicazioni (lezione 3.3).
Nomi utente che trapelano
Nella lezione 3.3 ha visto che WordPress mostra una derivazione dei nomi utente:
https://example.com/?author=1reindirizza a/author/<nome>/;https://example.com/wp-json/wp/v2/usersmostra un elenco con gli slug di chiunque abbia pubblicato qualcosa.
È grave? Un nome utente non è una password. Con una password lunga e univoca e la 2FA, la differenza è minima. Ma fornisce a un intruso metà delle credenziali di accesso e facilita il phishing mirato. Misure ragionevoli:
- assegni agli amministratori un nome utente diverso dal loro nome pubblico, e non pubblichi con un account amministratore (lezione 3.3);
- limiti l'elenco utenti nella REST API con un plugin di sicurezza o qualche riga di codice, se non ne ha bisogno. Non chiuda completamente la REST API: l'editor a blocchi e molti plugin ne hanno bisogno.
Password per applicazioni
Le password per applicazioni (lezione 3.3) sono un modo sicuro per dare accesso a un'app o un sistema, ma aggirano la Sua autenticazione a due fattori: un'app con una password per applicazioni non ha bisogno di alcun codice. Le crei solo quando necessario, per un account con un ruolo basso, e le revochi quando non utilizza più il collegamento.
Riepilogo
- Utilizzi password lunghe e univoche (passphrase) in un gestore di password.
- Attivi l'autenticazione a due fattori, con un plugin in WordPress e anche sul pannello di hosting, email e registrar.
- Blocchi i tentativi di accesso il prima possibile: sul server, con una regola IP o una password aggiuntiva, oppure con un plugin.
- Blocchi xmlrpc.php se non lo utilizza.
- I nomi utente trapelati non sono un disastro, ma un segnale: non pubblichi come amministratore e limiti l'elenco utenti REST se non ne ha bisogno.
Quiz
Esercizio
Esercizio A7.3: Cosa rivela il Suo sito durante l'accesso? Inserisca l'indirizzo del Suo sito e dimostri che è il Suo sito (con il codice dell'esercizio, come record TXT o come file). Il programma verifica tre cose: se xmlrpc.php restituisce un elenco di funzioni (aperto) o è bloccato, se /wp-json/wp/v2/users mostra nomi utente (slug), e dove reindirizza /?author=1. Indichi se ha bisogno di xmlrpc.php; in caso contrario, un xmlrpc.php aperto risulta rosso. Gli slug trapelati sono arancioni con spiegazione.
Esercizio D7.3: Attivare l'autenticazione a due fattori. Attivi l'autenticazione a due fattori per tutti gli amministratori del Suo sito WordPress, e anche sul Suo pannello di hosting e sulla Sua email. Conservi i codici di backup nel Suo gestore di password. Spunti per ogni elemento che è attivo e annoti quale metodo utilizza (app, passkey, email) e dove si trovano i codici di backup. Annoti anche come protegge ulteriormente wp-login.php e perché sceglie quel metodo.
Esercizio D7.3: Attivare l'autenticazione a due fattori
Questo esercizio lo svolge da sé; nessuno lo verifica. Spunti ciò che ha fatto e segni l'esercizio come completato.
Per gli amministratori preferisca un'app o una passkey invece della sola email. Un indirizzo IP fisso può essere autorizzato su wp-login.php; con indirizzi variabili è più adatta una limitazione dei tentativi di accesso.
Le Sue spunte e note restano solo in questo browser; non le inviamo da nessuna parte. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che ha svolto l'esercizio.
Per saperne di più
Questi articoli descrivono i passaggi nei pannelli di WebOké; in altri pannelli funzionano in modo simile.
- Guida DirectAdmin 3.7: Password sicure e cosa fare in caso di password trapelata
- Impostare la verifica in due passaggi in Mio WebOké e un'app di autenticazione
- L'accesso a xmlrpc.php di WordPress non funziona
- Proteggere wp-login.php di WordPress
- Guida DirectAdmin 15.9: Directory protette da password
- Accesso sicuro (Veilig Internetten, governo olandese): https://veiliginternetten.nl/veilig-inloggen/
- Attacchi brute force (developer.wordpress.org, in inglese): https://developer.wordpress.org/advanced-administration/security/brute-force/
