Linux: implementazione di un sistema di autenticazione a più fattori con PAM e Google Authenticator

Le tecnologie di MFA sono ormai standard anche per i sistemi operativi server, dove la protezione delle credenziali è cruciale. In particolare, Linux offre un framework modulare chiamato PAM (Pluggable Authentication Modules), che consente di integrare facilmente nuovi metodi di verifica senza modificare il codice delle applicazioni. Grazie a PAM, è possibile aggiungere il supporto per Google Authenticator, uno dei token basati su OTP (One‑Time Password) più diffusi e affidabili.
Questo articolo spiega passo passo come installare, configurare e testare la MFA su una macchina Linux utilizzando PAM e Google Authenticator. Verranno forniti tutti i dettagli necessari per rafforzare gli account contro le minacce più comuni, migliorando al contempo la conformità alle migliori pratiche di sicurezza.
Cos’è PAM e come funziona
PAM è un framework modulare che gestisce l’autenticazione, l’autorizzazione e la gestione delle sessioni su sistemi Linux. Funziona come un’interfaccia standard fra le applicazioni (ad esempio login, sudo, ssh) e una serie di moduli di verifica (password, token hardware, OTP, ecc.). Quando un utente tenta di accedere, PAM esegue in sequenza i moduli configurati, raccoglie le credenziali richieste e valuta la loro validità.
Grazie alla sua architettura flessibile, è possibile aggiungere, rimuovere o riordinare i metodi di autenticazione semplicemente modificando i file di configurazione, senza intervenire sul codice delle applicazioni che li utilizzano. Questo rende PAM particolarmente adatto a scenari in cui è necessario introdurre rapidamente nuovi livelli di sicurezza, come l’autenticazione a più fattori.
Inserendo il modulo di Google Authenticator nella catena di controlli di PAM, il framework integra automaticamente il nuovo fattore di verifica basato su OTP. Il risultato è un meccanismo di accesso più robusto, che richiede sia la password tradizionale sia il codice temporaneo generato dall’applicazione mobile.
Installazione e configurazione di Google Authenticator
Per prima cosa, è necessario installare il pacchetto relativo al modulo PAM di Google Authenticator. Su distribuzioni basate su Debian/Ubuntu è possibile utilizzare i seguenti comandi:
sudo apt-get update
sudo apt-get install libpam-google-authenticatorSu distribuzioni basate su Fedora o CentOS il comando è:
sudo dnf install google-authenticatorUna volta completata l’installazione, si esegue il comando google-authenticator con l’utente che dovrà utilizzare la MFA. Il tool genera una chiave segreta, un codice QR e diverse opzioni (numero di codici di backup, scadenza dei token, ecc.). Scansionando il QR con l’app Google Authenticator sullo smartphone o inserendo manualmente la chiave, l’app produrrà un codice di sei cifre valido per 30 secondi.
È consigliabile annotare in un luogo sicuro i codici di backup forniti dal tool: questi consentono di recuperare l’accesso qualora lo smartphone non fosse più disponibile. Inoltre, il file di configurazione ~/.google_authenticator generato dal comando contiene le impostazioni che potranno essere modificate in base alle proprie esigenze di sicurezza.
Implementazione di MFA con PAM e Google Authenticator
Il passo successivo consiste nell’integrare il modulo nel file di configurazione di PAM. Apriamo il file /etc/pam.d/common-auth (su Debian/Ubuntu) oppure /etc/pam.d/system-auth (su Red Hat/Fedora) e aggiungiamo, subito dopo la riga che richiama pam_unix.so, la seguente istruzione:
auth required pam_google_authenticator.so nullokL’opzione nullok consente agli utenti che non hanno ancora configurato Google Authenticator di accedere utilizzando solo la password; rimuovendola (nullok → niente) si impone il secondo fattore per tutti gli utenti, garantendo una protezione uniforme. Dopo aver salvato il file, PAM chiederà prima la password e, se corretta, presenterà il prompt per inserire il codice OTP generato dall’app.
È possibile personalizzare ulteriormente il comportamento del modulo aggiungendo parametri come totp, rate-limit=3 o deny=3 per limitare i tentativi di inserimento errato. Tali opzioni aumentano la resilienza contro attacchi di forza bruta, mantenendo al contempo una configurazione leggibile e gestibile.
Infine, è buona pratica riavviare i servizi che utilizzano PAM (ad esempio sshd o login) per assicurarsi che la nuova configurazione sia effettivamente caricata. In caso di problemi, il file di log /var/log/auth.log (o journalctl -u sshd) fornisce dettagli utili per diagnosticare eventuali errori di configurazione.
Test del sistema di autenticazione
Per verificare il corretto funzionamento, effettuare un login con un account già configurato per la MFA. Dopo aver inserito username e password, il prompt visualizzerà la richiesta del codice OTP. Inserendo il valore mostrato sull’app, l’accesso dovrebbe essere consentito; al contrario, un codice errato bloccherà l’autenticazione e registrerà l’evento nei log di sicurezza.
È consigliabile testare l’accesso da diversi terminali (console locale, SSH, su Mac o Windows con client SSH) e in momenti diversi della giornata, per garantire che il meccanismo sia affidabile indipendentemente dalle condizioni di rete. Inoltre, provare a utilizzare i codici di backup generati in fase di configurazione dimostra che il sistema rimane accessibile anche in caso di perdita del dispositivo mobile.
Durante i test, verificare anche il comportamento delle opzioni nullok e dei limiti di tentativi impostati nel modulo. Se si riscontrano blocchi inattesi, è possibile regolare i parametri nel file di configurazione PAM o aggiornare la versione del pacchetto per risolvere eventuali bug.
Considerazioni finali
L’autenticazione a più fattori con PAM e Google Authenticator rappresenta una soluzione pratica, economica e altamente efficace per proteggere i sistemi Linux. Pur richiedendo una configurazione iniziale – installazione del modulo, generazione della chiave segreta e aggiornamento dei file di configurazione PAM – i benefici in termini di sicurezza superano di gran lunga l’investimento di tempo.
È fondamentale mantenere aggiornati sistema operativo, pacchetti e applicazioni, utilizzare password robuste e adottare le migliori pratiche di gestione delle credenziali. In questo modo la MFA si integra perfettamente in una strategia di difesa a più livelli, rendendo molto più arduo per gli aggressori ottenere accessi non autorizzati.
Infine, ricorda di documentare il processo di implementazione all’interno del team IT e di formare gli utenti sull’uso quotidiano dei token OTP. Una buona consapevolezza operativa, combinata con la tecnologia descritta, garantisce che la protezione rimanga efficace anche di fronte a minacce sempre più sofisticate.