Ssh con mfa
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.