Integrazioni · Linux SSH
2FA per SSH su Linux con pam_radius e approvazione sul telefono
Per i team che amministrano server Linux via SSH e vogliono che ogni shell, sudo e su richieda, oltre alla password, un’approvazione sul telefono. Linux PAM dispone di un modulo RADIUS standard: puntatelo sull’auth-proxy Notakey e l’intero parco server entra nella stessa configurazione della vostra VPN.
Come si collega
Da PAM a RADIUS fino al proxy, nient’altro sul server
sshd e sudo si autenticano tramite PAM. Il modulo pam_radius invia nome utente e password all’auth-proxy Notakey tramite RADIUS; il proxy inoltra la verifica della password al vostro server RADIUS, invia una richiesta di approvazione al telefono dell’utente e restituisce Access-Accept solo se entrambe le verifiche hanno esito positivo. La guida tratta Debian/Ubuntu con libpam-radius-auth; sulle distribuzioni della famiglia RHEL il modulo è distribuito come pam_radius e i file PAM si trovano nella stessa struttura /etc/pam.d/.
Con il modulo impostato come sufficient, un Access-Accept fa entrare subito l’utente, mentre qualsiasi altra risposta ricade sulla normale verifica della password locale. Il vostro amministratore break-glass mantiene una password puramente locale; tutti gli altri possono essere creati senza. La loro unica via d’accesso è allora RADIUS attraverso il proxy, cioè password più approvazione sul telefono, e non c’è nulla di locale da attaccare con la forza bruta.
Lo stesso proxy e lo stesso server RADIUS che già proteggono la VPN e l’amministrazione del router servono anche il parco Linux. Sul lato proxy non cambia nulla.
Cosa sapere prima di iniziare
- Il timeout predefinito del modulo è di 3 secondi. Impostatelo almeno al vpn_message_ttl del proxy (30 secondi); 60 offre un margine comodo. Un errore immediato senza notifica push indica di solito un timeout o un segreto condiviso errati.
- Gli accessi SSH a chiave pubblica saltano completamente la fase auth di PAM, quindi un accesso con chiave non attiva alcuna notifica push. Per chiave più push, impostate AuthenticationMethods publickey,keyboard-interactive e provate questa variante separatamente.
- La password viaggia in PAP tra il server e il proxy. Mantenete quel collegamento su una rete di gestione, oppure eseguite il proxy come container sull’host stesso.
- Lo stesso nome utente deve esistere nel server RADIUS di destinazione, nel servizio Notakey con un telefono registrato e come account locale o di directory sulla macchina Linux. PAM si limita ad autenticare: l’utente ha comunque bisogno di un account a cui accedere.
- Proteggere sudo significa che ogni sudo chiede l’approvazione sul telefono. La cache delle credenziali di sudo lo rende sopportabile.
- sshd richiede UsePAM yes e KbdInteractiveAuthentication yes; entrambi sono i valori predefiniti su Debian/Ubuntu.
Da zero alla prima approvazione
- 01
Predisponete prima l’uscita di emergenza
Prima di toccare PAM, assegnate a root o a un amministratore break-glass dedicato una password locale robusta e verificatela dalla console. La configurazione ricade sempre sulle password locali, quindi questo account è la vostra via d’accesso se il proxy, RADIUS o la rete non funzionano.
- 02
Installate pam_radius e puntatelo sul proxy
Installate libpam-radius-auth, aggiungete a /etc/pam_radius_auth.conf una riga con l’indirizzo del proxy, il segreto condiviso abbinato al vpn_secret_in del proxy e un timeout di 60 secondi, e limitate i permessi del file a 0600.
- 03
Attivatelo in PAM e provate da un secondo terminale
Aggiungete auth sufficient pam_radius_auth.so sopra l’include di common-auth in /etc/pam.d/sshd (e, se volete, in sudo, su o login), aggiungete try_first_pass alla riga pam_unix in common-auth, poi collegatevi via SSH da un secondo terminale con un nome utente RADIUS e approvate la notifica push. Prima di chiudere la sessione originale, verificate che l’account break-glass funzioni ancora.
Domande frequenti
- Resto chiuso fuori se il proxy o RADIUS non sono raggiungibili?
- No, se mantenete un amministratore break-glass con una password locale. pam_radius è impostato come sufficient, quindi qualsiasi risposta diversa da Access-Accept ricade sulla normale verifica della password locale.
- Gli accessi SSH con chiave attivano una notifica push?
- No. Gli accessi a chiave pubblica saltano completamente la fase auth di PAM. Per chiave più push, impostate AuthenticationMethods publickey,keyboard-interactive e provate questa variante separatamente.
- Quali distribuzioni Linux copre la guida?
- Debian e Ubuntu con libpam-radius-auth. Sulle distribuzioni della famiglia RHEL il modulo è distribuito come pam_radius e i file PAM si trovano nella stessa struttura /etc/pam.d/.