Skip to main content

Joomla!® - attivare l'Autenticazione a più fattori (MFA) ed il WebAuthn, il login senza password

Pubblicato il: 21 marzo 2024

Joomla!® ci mette a disposizione due modi per aumentare la sicurezza durante la fase di login ed in particolare per l'accesso in area amministrativa alla quale accedono gli utenti con i privilegi più elevati:

  • Multi-factor Authentication (MFA) - Autenticazione a più fattori
  • WebAuthn Passwordless Login - Autenticazione Web

In breve, l'autenticazione a due fattori ci richiede di inserire un'ulteriore conferma oltre a quella di nome utente e password mentre l'autenticazione Web è un sistema che sostanzialmente sostituisce l'inserimento manuale della password. La cosa interessante è che possiamo attivarle singolarmente o anche concatenarle insieme per il massimo della sicurezza. Ma entriamo più nel dettaglio.

Autenticazione a più fattori - Multi-factor Authentication (MFA)

Funzionalità introdotta con la versione 4.2 di Joomla!®. Abilitando l'autenticazione a più fattori, dopo aver inserito le credenziali di nome utente e password, ci verrà richiesta una ulteriore verifica per poter accedere al backend.
Questo sistema differisce dal precedente TFA (Two Factor Authentication) perché mentre nel TFA il codice di verifica andava inserito nella stessa finestra di login insieme al nome utente e password, con l'MFA avremo due fasi, la prima prevede l'inserimento di nome utente e password( o passkey), la seconda di un codice di verifica in una pagina dedicata. Questo secondo step è un significativo passo avanti rispetto al TFA perché ci consente di utilizzare molteplici sistemi di convalida.

Sistemi di convalida MFA

Per l'MFA possiamo avvalerci ad oggi di quattro sistemi di verifica.
Ulteriori sistemi potranno essere implementati in futuro con l'aggiunta di plugin dedicati.

Teniamo presente che possiamo attivare più di un sistema di convalida, così da poter scegliere dalla pagina di verifica quale ci farà più comodo utilizzare in quel momento.

autenticazione a più fattori, sistemi di convalida

1. Codice di verifica

Questo sistema ci chiederà di inserire nella pagina di convalida un codice di sei cifre generato da un'applicazione di autenticazione.
Nella pagina di configurazione di Joomla!® viene riportata questa dicitura:
"È possibile utilizzare un'applicazione di autenticazione (come Google Authenticator, Authy, LastPass Authenticator, ecc), il tuo password manager preferito (1Password, BitWarden, Keeper, KeePassXC, Strongbox, ecc) o, in alcuni casi, il tuo browser."
Io per questo scopo utilizzo il cellulare con la App di Google Authenticator e mi trovo benissimo.

2. YubiKey

Necessita di una chiavetta YubiKey (USB-A o USB-C) da acquistare dal sito https://www.yubico.com.
È un dispositivo hardware che viene inizialmente "accoppiato" al sito e quando inserito via USB, genera il codice di sblocco. È un sistema molto sicuro, ma dobbiamo acquistare la chiavetta e ricordarci di portarcela dietro.

3. Passkey

Permette di effettuare la verifica con un autenticatore (passkey) che può basarsi su un'autenticazione biometrica (impronta digitale, volto ecc.), una chiave hardware USB o altro.

4. Codice via email

Vi viene inviata un'email con un codice di 6 cifre che di default è valido 2 minuti. Accertatevi che le email di sistema vengano correttamente ricevute prima di attivare il metodo (c'è un apposito bottone per inviare un'email di prova in Configurazione Globale tab Server). A volte con il sistema di invio impostato di default (PHP Mail) le email inviate dal sito vengono classificate come SPAM. In caso provare a configurare l'invio SMTP che, utilizzando per l'invio un vero account di posta, difficilmente viene classificato come SPAM.

Nota: l'eventuale modifica del tempo di validità (con range da 30" a 5') si può eseguire dalle impostazioni del plugin Multi-factor Authentication - Authentication Code by Email.

I plugin MFA

Tutti questi controlli sono implementati attraverso plugin. In futuro potrebbero aggiungersi ulteriori plugin con nuovi metodi di autenticazione.

  • Multi-factor Authentication Verification Code
    Verifica il codice di 6 cifre generato dall'app di autenticazione
  • Multi-factor Authentication YubiKey
    Gestisce la verifica con il token della YubiKey
  • Multi-factor Authentication Authentication Code by Email
    Gestisce il codice a tempo inviato via email
  • Multi-factor Authentication Passkeys
    Permette la verifica con un autenticatore (passkey)
  • Multi-factor Authentication Fixed Code
    Disabilitato di default, serve unicamente per prove e test
i plugin MFA

Ulteriori informazioni al seguente link che porta alla documentazione ufficiale di joomla.org: https://docs.joomla.org/J4.x:Multi-factor_Authentication

Autenticazione Web (WebAuthn) Accesso tramite passkey

Ci permette di loggarci con il solo nome utente senza dover digitare la password. Questo sistema è molto sicuro perché utilizza una cifratura forte basata su chiavi pubblica e privata. La chiave pubblica viene memorizzata nel sito, quella privata rimane nell'autenticatore.
I vantaggi in termini di sicurezza sono molteplici, non dobbiamo più ricordarci ogni volta la password ed inoltre risolve i problemi legati alla sua gestione, intercettazione (man in the middle) ecc.
L'autenticatore è ormai di uso comune per molti servizi. Io per l'accesso ai siti web utilizzo il lettore d'impronte sulla tastiera del computer o il FaceID del cellulare.
Per funzionare sono indispensabili una connessione HTTPS ed un certificato valido sul dominio. Va benissimo anche quello di Let's Encrypt.
Il plugin del WebAuthn è il System - Passkey (Passwordless) Login, abilitato di default.

Per approfondire l'argomento soprattutto in relazione agli standard accettati per gli autenticatori, i browser supportati, le FAQ ed altro, consultate questo link alla documentazione di joomla.org: https://docs.joomla.org/WebAuthn_Passwordless_Login

Considerazioni sull'argomento

Livelli di sicurezza

Considerando quanto detto sinora, abbiamo a disposizione due strumenti per rendere sicuro l'accesso all'area amministrativa: MFA e WebAuthn.
Le combinazioni tra i due ci aprono diversi scenari con diversi livelli di sicurezza.
Come riportato nella documentazione di joomla.org, le combinazioni possibili dalla più sicura alla meno sicura sono:

  1. WebAuthn come metodo di login primario e successivamente MFA. In pratica nella finestra di login inserisco solo l'user name, mi autentico col passkey (senza digitare la password) e passo alla pagina per la seconda verifica MFA ad es. con codice generato da Google Authenticator;
  2. WebAuthn come unico metodo. Inserisco nome utente, mi autentico con il passkey e mi ritrovo subito nell'area amministrativa;
  3. Username e password come metodo primario, poi MFA. Prima accedo con username e password, poi passo alla pagina di verifica per la seconda convalida;
  4. Solo username e password. Sconsigliato, è il meno sicuro.

MFA e privacy utenti

Anche a livello privacy utente si è lavorato molto. Ci sono limiti ben precisi per la gestione delle schede MFA ed anche a ciò che un Super User può e non può fare.
Se volete approfondire, vi consiglio di leggere questo articolo di Joomla!® Magazine:
https://magazine.joomla.org/all-issues/october-2022/new-to-joomla-4-2-multi-factor-authentication-mfa

Attivare Autenticazione Web + Autenticazione a più fattori

Ora che abbiamo una panoramica delle funzioni disponibili procediamo con il tutorial e vediamo come configurare l'accesso al nostro sito al massimo livello di sicurezza abilitando: l'autenticazione Web (WebAuthn) per il login primario senza password e l'autenticazione a più fattori (MFA) con Google Authenticator come secondo step di verifica.
Nota: in questo tutorial la versione di Joomla!® è la 5.0.3 con php 8.1. Ho a disposizione: tastiera con Touch ID, iPhone con Face ID e App Google Authenticator.

Autenticazione Web (WebAuthn)

Attivare l'autenticazione con passkey è veramente semplice. Dal menù laterale:

Utenti -> Gestione -> clic sul nome utente -> tab Accesso tramite passkey -> + Aggiungi nuova passkey (tasto verde)

Nel caso del Touch ID comparirà una finestrella di conferma, appoggio il dito sul Toch ID ed è fatta. Le chiavi sono generate e da questo momento posso entrare in amministrazione inserendo solo il nome utente e facendo clic su Accedi con una passkey.
Nota: devi avere una connessione HTTPS ed un certificato valido sul dominio.

inserire passkey
passkey inserita
Touch ID
login con passkey

Autenticazione a più fattori

Configurazioni iniziali MFA

Per cominciare entriamo nel backend del sito e andiamo in:
Utenti --> Gestione --> Opzioni --> Tab Autenticazione a più fattori

Si aprirà un pannello con le configurazioni di default.
Con il tasto "? Aiuto" in alto a dx possiamo richiamare l'help in linea con le descrizioni dettagliate dei singoli parametri.
Ricordiamoci degli ultimi due, Massimi tentativi MFA e Tempo di blocco limite MFA (in ore) in caso volessimo modificarli in futuro.

Il primo stabilisce il numero massimo di tentativi errati tollerati prima di attivare un blocco a tempo (secondo parametro) durante il quale non sarà più possibile inserire codici di verifica. Io penso che 10 (valore di default) sia anche troppo, di solito lo abbasso a 5.

Un'altra interessante possibilità è quella di esentare o di forzare gruppi selezionati di utenti all'attivazione dell'MFA.

Opzioni pannello MFA

Attivazione MFA

Nota: in questa finestra ritroviamo la voce Passkey e la cosa potrebbe confondere, meglio soffermarci un attimo e chiarire.
L'attivazione che abbiamo fatto prima (dal tab Accesso tramite passkey) era relativa alla Passkey per il WebAuthn, l'accesso senza password dalla finestrella di login. Questa che ci viene proposta qui non verrà usata per il login, ma come sistema di verifica MFA al pari del codice a 6 cifre di Google Authenticator o YubiKey.

Andiamo ora ad attivare l'autenticazione a più fattori con codice di verifica.

Dal menù laterale: Utenti -> Gestione -> clic sul nome utente e poi
-> tab Autenticazione a più fattori -> + Aggiungi un nuovo codice di verifica

attivazione MFA con codice di verifica

Apriamo l'app di autenticazione (Google Authenticator ad esempio) e inquadriamo con la telecamera il codice QR che compare a video.
Nota: o inserisci manualmente la chiave visualizzata sopra al QR code.

L'autenticatore si configurerà ed inizierà a generare codici di verifica per il sito.

Ora sarà sufficiente digitare le 6 cifre generate nel campo in basso Inserisci il codice di verifica a sei cifre (non facciamolo quando mancano pochi secondi al refresh), Salva & Chiudi e abbiamo finito.

QR code

ATTENZIONE, c'è ancora una cosa che dobbiamo fare, creare i codici di backup da utilizzare in caso fossimo impossibilitati ad usare l'autenticatore.

Facciamolo ora! Prima di eseguire del logout (non si sa mai).

Nella finestra a lato, clicchiamo su Stampa questi codici.
Comparirà una tabellina con 10 codici (validi una sola volta) che avremo cura di conservare per i casi di emergenza.

È anche presente un bottone Rigenera codici di backup da usare nel caso stiano per esaurirsi o in caso di perdita o compromissione.
Nota: questi codici non andranno inseriti nella finestra "Codice di verifica" ma in quella "Codici di backup" (vedi nota successiva).

stampare codici di backup

Usciamo (logout) dall'amministrazione e testiamo il tutto.

Nella finestrella di login inseriamo solo l'user name, poi Accedi con una Passkey, ci autentichiamo e comparirà la pagina di verifica MFA. Apriamo l'autenticatore ed inseriamo il codice a 6 cifre, poi tasto > Valida.

Nota: nel caso avessimo configurato più metodi di autenticazione, dal tasto < Seleziona un metodo diverso sarà possibile sceglierne un'altro compreso quello che richiede l'inserimento dei codici di backup.

convalida codice di verifica

Recuperare l'accesso in caso di emergenza

Se per una serie di sfortunate coincidenze non si dovesse essere più in grado di autenticarci al secondo step, possiamo provare a disabilitare il o i plugin dell'MFA intervenendo nel database con phpMyAdmin.
I plugin MFA (in questa versione di Joomla!®) sono quelli con id dal 204 al 208.

Quello che dobbiamo fare è disabilitare il/i plugin che avevamo configurato tra i metodi di verifica. Se ad esempio avessimo scelto come sistema di convalida il "Codice di verifica", il plugin da disattivare sarebbe in questo caso plg_multifactorauth_totp con id 204.
Nota: vedi anche foto sopra, i plugin MFA.

plugin MFA nel database

ATTENZIONE - Sono operazioni delicate, da fare con cognizione di causa. Accertiamoci di avere un backup aggiornato del database prima di operare.
Possiamo agire in due modi, dando un comando SQL o in modo "visivo" semplicemente cliccando nelle varie finestre di phpMyAdmin. Io vi consiglio quest'ultimo.

I plugin coinvolti nell'MFA sono asserviti dalla tabella: #_extensions (dove # è un prefisso normalmente di 5 caratteri).

Nel database lo stato di abilitato/disabilitato dei plugin ha come valori:
Enabled=0 -> disabilitato
Enabled=1 -> abilitato

In questo esempio ho creato un database di test (db_testj5) ed il prefisso delle tabelle è "wja1s". Quella che dobbiamo cercare è quindi: wja1s_extensions

1. da phpMyAdmin seleziono il database collegato al sito web (nell'esempio db_testj5)

2. dal tab Struttura vado alla tabella wja1s_extensions e clicco su Mostra

tabella #_extensions

3. nella colonna extension_id cerco il plugin plg_multifactorauth_totp (id 204) e clicco su Modifica

modificare tabella #_extensions

4. nel campo "enabled" metto 0 per disabilitare

5. clic in basso su Esegui per avviare la query

Usciamo da phpMyAdmin e proviamo ad accedere.

enabled=0 per disabilitare plugin
esegui modifica alla tabella
query eseguita

L'alternativa per disabilitare il plugin plg_multifactorauth_totp è lanciare una query SQL (nel database del sito) del tipo:

UPDATE `#_extensions` SET `enabled` = '0' WHERE `name` = 'plg_multifactorauth_totp';

dove # va sostituito con il prefisso della vostra tabella

Le query per disabilitare gli altri plugin saranno:

UPDATE `#_extensions` SET `enabled` = '0' WHERE `name` = 'plg_multifactorauth_yubikey';
UPDATE `#_extensions` SET `enabled` = '0' WHERE `name` = 'plg_multifactorauth_webauthn';
UPDATE `#_extensions` SET `enabled` = '0' WHERE `name` = 'plg_multifactorauth_email';

Dopo aver disabilitato il plugin, l'autenticazione MFA sarà disabilitata per tutti gli account utente.
Una volta rientrati in amministrazione sarà il caso di abilitare nuovamente il plugin (da System -> Manage -> Plugins) e rigenerare nuovi codici di backup o disattivare definitivamente la verifica MFA dal pannello di controllo dell'Autenticazione a più fattori.