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

  1. 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.

  2. 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.

  3. 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/.

Guide e documentazione

Prodotti correlati

← Tutte le integrazioni

Il vostro primo accesso senza password, già questa settimana

30 minuti con un ingegnere, non una presentazione commerciale. Insieme pianificheremo come avviare un progetto pilota funzionante nel vostro ambiente VPN, SSO o Windows.