Autenticazione a due fattori con autenticazione chiave ssh e yubikey?

15

OpenSSH non invocherà PAM a tutti se chiave pubblica (RSA) l'autenticazione è configurata e il client presenta una chiave valida. Pertanto, se si utilizza l'autenticazione basata su chiave, non è possibile applicare facilmente 2FA.

Una soluzione per questa limitazione riguarda la scrittura di un helper programma che richiederà un OTP di Yubikey. Questo programma di supporto è organizzato per essere eseguito da sshd dopo l'utente autentica con successo usando la direttiva ForceCommand. Esempio: link

Dal momento che non mi fido delle mie conoscenze sulla programmazione della shell (gestione dei segnali, assegnazione tty, ecc.) per rivedere l'helper programma, quindi ho continuato a cercare qualcosa di diverso.

Quali sono i buchi nel seguente approccio alternativo?

  • Configura yubikey per fare 2FA per l'autenticazione basata su password ssh.

  • Ogni accesso, 'X', avrà un login "bastion" chiamato 'pre-X'.

  • Entrambi gli accessi saranno presenti sulla stessa macchina

  • Un'istanza sshd

  • Usando la direttiva di configurazione sshd Match, il server ssh sarà configurato per disabilitare l'autenticazione a chiave pubblica per tutti gli accessi che corrisponde al modello 'pre - *'.

  • Il login 'bastion' verrà creato senza directory home, shell di login impostata su / bin / false, gid impostato su 'nogroup' e qualsiasi cosa altrimenti possiamo fare per renderlo il più debole possibile. Per sempre misurare, utilizzare la direttiva sC ForceCommand per questi accessi a esegui sempre / bin / false e usa ChrootDirectory su sandbox.

  • Utilizzare la direttiva AllowUsers per disabilitare gli accessi diversi da quelli di bastion accesso da qualsiasi IP eccetto localhost.

  • Usa ProxyCommand dal client ssh per scappare via tunneling tramite il login del bastion.

L'ho fatto e funziona bene, ma mi chiedo se mi sia sfuggito qualcosa?

Gli utenti del bastione sono creati in questo modo:

# password will never be typed in, so need to record it
sudo useradd -M -N -g nogroup -s /bin/false pre-user001 -p $(dd if=/dev/urandom bs=128 count=1 2>/dev/null  | base64 -w0)

sshd_config ha il seguente aspetto:

# Nobody can login from anywhere except localhost
AllowUsers *@localhost
# ... except for logins starting with 0
AllowUsers pre-*@*

# force password auth for bastion logins
Match User pre-*
PasswordAuthentication yes
RSAAuthentication no
PubkeyAuthentication no
ForceCommand /bin/false
    
posta user391 12.04.2013 - 18:32
fonte

2 risposte

3

A partire dal 2015 (con OpenSSH > = 6.2), l'ipotesi che sshd non invocherà PAM in combinazione con l'autenticazione della chiave pubblica non viene più mantenuta.

Con OpenSSH 6.2 puoi applicare un secondo fattore o anche più fattori per l'autenticazione oltre all'autenticazione della chiave pubblica.

La direttiva AuthenticationMethods può essere utilizzata per specificare più fattori su un livello globale o specifico dell'utente in sshd_config , ad esempio :

AuthenticationMethods publickey,keyboard-interactive

keyboard-interactive attiva la catena PAM dove ad es. un OTP modulo pam può essere configurato per sshd.

    
risposta data 02.01.2016 - 11:19
fonte
2

Ho usato DuoSecurity in passato con grande successo, segue un metodo simile a Yubikey ma consente l'utilizzo di più metodi di autenticazione.

Molto semplice da configurare con una curva di apprendimento minima per l'utente.

    
risposta data 14.04.2013 - 17:10
fonte

Leggi altre domande sui tag