Aggiungere RADIUS a sudo per 2FA su CentOS 7 e Ubuntu 14.04
Importante: testa sempre su una macchina non critica prima di distribuire in produzione. Mantieni una sessione root aperta quando modifichi PAM, per poter ripristinare in caso di errore.
Panoramica breve
Gli attaccanti spesso sfruttano credenziali perse, rubate, deboli o predefinite per elevare privilegi dopo aver infiltrato una rete. Il 2FA riduce molto questo rischio, ma l’accesso può comunque avvenire via malware o altre vie. Integrare RADIUS con PAM per sudo permette di usare un sistema centralizzato per l’autorizzazione (AD/NPS/LDAP) e un server separato per la seconda fattore (WiKID, FreeRADIUS, ecc.). Questa architettura è comune in ambienti enterprise.
Requisiti e concetti (1 linea ciascuno)
- PAM: Pluggable Authentication Modules, sistema di autenticazione modulare su Linux.
- RADIUS: protocollo di autenticazione/autorization usato per 2FA e servizi di rete.
- WiKID/FreeRADIUS/NPS: esempi di server RADIUS, WiKID è un server 2FA dedicato.
1. Configurare sudo su CentOS/RHEL per 2FA
L’esempio è su RHEL/CentOS 7. Installare i prerequisiti:
sudo yum -y install make gcc pam pam-devel
Scaricare il codice PAM RADIUS (versione più recente; il nome del file può variare):
wget ftp://ftp.freeradius.org/pub/radius/pam_radius-x.x.x.tar.gz
Costruire la libreria:
tar -xzvf pam_radius-x.x.x.tar.gz
cd pam-radius-x.x.x
sudo ./configure
sudo make
Copiare la libreria nella posizione corretta:
cp pam_radius_auth.so /lib/security/
Oppure su sistemi x86_64:
cp pam_radius_auth.so /lib64/security/
Creare la directory di configurazione e copiare il file di configurazione come ‘server’:
sudo mkdir /etc/raddb
cp pam_radius_auth.conf /etc/raddb/server
Modificare /etc/raddb/server e aggiungere l’IP del server RADIUS e il shared secret:
# server[:port] shared_secret timeout (s)
127.0.0.1 secret 1
radius_server_IP secret 3
#
# having localhost in your radius configuration is a Good Thing.
Nota: puoi anche impostare il server WiKID come server RADIUS direttamente per testare rapidamente. Rimuovi i test dopo la verifica.
Dire a sudo di usare RADIUS: modificare /etc/pam.d/sudo sostituendo la linea di autenticazione appropriata con:
auth required pam_radius_auth.so
Questo è tutto per CentOS/RHEL 7 (la stessa logica si applica anche a RHEL/CentOS 5 e 6 con i dovuti aggiustamenti di path).
2. Configurare sudo su Ubuntu 14.04 per 2FA
Su Ubuntu 14.04 installare il pacchetto pam-radius:
sudo apt-get install libpam-radius-auth
Configurare /etc/pam_radius_auth.conf (stesso formato di cui sopra):
# server[:port] shared_secret timeout (s)
127.0.0.1 secret 1
radius_server_IP secret 3
#
# having localhost in your radius configuration is a Good Thing.
Modificare /etc/pam.d/sudo e inserire la riga di pam_radius sopra la chiamata a common-auth:
auth required pam_env.so readenv=1 user_readenv=0
auth required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth sufficient pam_radius_auth.so
@include common-auth
@include common-account
@include common-session-noninteractive
D’ora in poi, quando un amministratore userà sudo dovrà inserire il One-Time Passcode. PAM inoltrerà username e OTP al server RADIUS/WiKID per la validazione.
Test e verifica
- Mantieni una shell root aperta quando modifichi PAM. Se qualcosa va storto, usa quella shell per ripristinare.
- Esegui sudo da un altro terminale e verifica che venga richiesta la password + OTP.
- Controlla i log: /var/log/secure (CentOS) o /var/log/auth.log (Ubuntu) per messaggi di pam_radius.
- Se usi FreeRADIUS, abilita il debug di FreeRADIUS per vedere le richieste RADIUS in tempo reale (radiusd -X o freeradius -X).
Nota: assicurati che firewall e SELinux non blocchino il traffico UDP verso il server RADIUS (porta default 1812).
Rollback rapido (playbook di emergenza)
- Se sudo smette di funzionare: dalla sessione root aperta ripristina /etc/pam.d/sudo al file precedente o commenta la riga pam_radius_auth.
- Se non hai sessione root, accedi come utente con accesso fisico/console e ripara il file.
- Mantieni sempre una copia di backup del file PAM prima di modificarlo: sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.bak
Quando questa soluzione fallisce o non è adatta
- Ambienti senza rete stabile verso il server RADIUS (es. dati mobili intermittenti): 2FA via RADIUS potrebbe bloccare l’accesso.
- Backup/EMERGENCY account: assicurati di avere account amministrativi separati protetti da metodi alternativi (chiavi SSH, account offline) per emergenze.
- Applicazioni non compatibili con PAM o sudo-wrapper particolari: questa integrazione riguarda solo i servizi che usano PAM.
Alternative e approcci aggiuntivi
- Autenticazione a due fattori locale: PAM con Google Authenticator (libpam-google-authenticator) per OTP TOTP.
- YubiKey: usare pam_yubico per autenticazione hardware OTP.
- SSH key + U2F/WebAuthn: riduce la dipendenza da password per accessi remoti.
Modello mentale / Heuristics
Tratta l’autenticazione in due livelli: autorizzazione centrale (chi può eseguire sudo) e autenticazione a fattore aggiuntivo (verifica che l’utente sia effettivamente quello che dice di essere). Mantieni directory e 2FA separati per flessibilità e auditing.
Checklist per l’amministratore (prima della distribuzione)
- Backup dei file PAM (/etc/pam.d/sudo, /etc/pam.d/common-auth, ecc.)
- Sessione root persistente aperta per rollback rapido
- Test RADIUS da client (radtest o debug freeradius)
- Regole firewall aperte per UDP 1812/1813 se necessario
- Test con account non critici
- Documentazione interna per recovery procedure
Compatibilità e note di migrazione
- Il pacchetto e i path possono cambiare tra distribuzioni e versioni (es. /lib vs /lib64). Verifica la posizione di pam_radius_auth.so.
- Ubuntu 14.04 e CentOS 7 sono versioni datate; considera l’aggiornamento a release supportate per motivi di sicurezza.
Sicurezza e privacy
- Non loggare OTP in chiaro. Verifica le impostazioni di log del tuo server RADIUS e del sistema per evitare fughe di token o secret.
- Tratta i shared secrets RADIUS come segreti di alto valore; limitane l’accesso e ruotali se esposti.
- Se tratti dati personali durante l’autenticazione, valuta i requisiti GDPR locali per l’archiviazione dei log.
Esempio di flusso decisionale (mermaid)
flowchart TD
A[Vuoi proteggere sudo con 2FA?] --> B{Hai un server RADIUS esistente?}
B -- Sì --> C[Integra pam_radius con il server RADIUS]
B -- No --> D{Preferisci OTP software o hardware?}
D -- OTP software --> E[libpam-google-authenticator]
D -- Hardware --> F[pam_yubico o U2F]
C --> G[Test e rollback]
E --> G
F --> G
Breve glossario (1 riga per voce)
- OTP: One-Time Password, codice usa e getta per 2FA.
- RADIUS: Remote Authentication Dial-In User Service, protocollo di autenticazione centralizzato.
- PAM: Pluggable Authentication Modules, sistema di autenticazione modulare su Linux.
Riepilogo finale
Integrare RADIUS a sudo tramite pam_radius è un modo pratico per applicare 2FA agli account amministrativi su CentOS 7 e Ubuntu 14.04. I passaggi principali sono: installare il modulo PAM, configurare il file server/ /etc/pam_radius_auth.conf con gli IP e i secret, modificare /etc/pam.d/sudo per chiamare pam_radius_auth.so, testare e predisporre procedure di rollback. Questa configurazione mantiene l’autorizzazione nella directory aziendale e sposta l’autenticazione a due fattori su un server dedicato, migliorando sicurezza e auditableità.
Key takeaways: tieni backup, testa in ambienti non produttivi, mantieni un canale di recovery e monitora i log.
Materiali simili

Installare ONLYOFFICE con Docker

iPhone: risolvere consumo batteria dopo iOS 26

Ritagliare immagini in Word, Excel e PowerPoint

Proteggere contatti e foto su iPhone iOS 9

Fine supporto Windows 10: come aggiornare o migrare
