Ssh con mfa

Da sia.
Vai alla navigazione Vai alla ricerca

ssh con MFA

google authenticator (secondo fattore)

Google Authenticator è un meccanismo per richiedere un token TOTP in fase di autenticazione.

Il setup di divide in due fasi:

  • creazione di un file .google_autenticator nella propria home;
  • inizializzazione della app sullo smartphone.

Creazione del .google_authenticator

   $ sudo apt-get install libpam-google-authenticator
   $ google-authenticator -t -d -f -r 3 -R 30 (-W)

L'ultimo comando genera un QRcode che va scansito con la app durante la prossima fase. Può essere utile fare il resize della finestra se non si visualizza bene. Altrimenti presenta un link su google.com che genera lo stesso QRcode, oppure da' il codice da digitare nella app per la inizializzazione manuale (coincide con la prima riga del file .google_authenticator) con la checksum di controllo per verificare se non ci sono errori di battitura.

Questo comando genera anche il file .google_authenticator che deve essere nella `home` di destinazione.

App sullo smartphone

La app si chiama: Google Authenticator e si scarica dall'app store.

Per la inizializzazione è possibile:

  • scansire il QRcode di cui sopra;
  • digitale la stringa di inizializzazione che è la prima riga del file .google_authenticator.

accesso ssh senza password (primo fattore)

L'accesso via password è disabilitato per impedire gli attacchi a forza bruta. Per il primo fattore le strade possibili sono:

  • pubkey (cioé la solita autenticazione con chiave ssh);
  • gssapi-with-mic

Per gssapi-with-mic:

1) accertarsi che il client ssh la consenta. Per putty è l'opzione predefinita, per OpenSSH no: bisogna modificare il /etc/ssh/ssh_config ed aggiungere:

   Host *
       GSSAPIAuthentication yes
       GSSAPIDelegateCredentials no
       ServerAliveInterval 5 # questo è solo per non avere degli idletimeout, non c'entra con GSSAPI

2) installare il client, create il file krb5.conf e lanciare kinit

   sudo apt-get install heimdal-clients
   sudo echo "[libdefaults]
       default_realm = UNIMORE.IT
       dns_lookup_realm = false
       dns_lookup_kdc = false
   [realms]  
       UNIMORE.IT = {
               kdc = addc.unimore.it
               kdc = aaddc.unimore.it
       }" > /etc/krb5.conf
   kinit user@UNIMORE.IT
   ssh ....

Con il kinit si acquisisce un TGT kerberos che fino alla sua scadenza permette l'accesso senza password.

Il secondo fattore è il Google Authenticator, che non chiede una password, ma un "Verification code" che è quel che si legge sulla app.