Mit dem Google Authenticator ist es möglich, der SSH-Einwahl eine zusätzliche Sicherheitsebene hinzuzufügen. Man muss also nicht nur den entsprechenden Benutzer und das Passwort kennen, sondern noch im Besitz eines Gerätes sein – in diesem Fall dem Smartphone.
Hinweise vorab
Die sogenannte “Challenge Response Authentication” die hier verwendet wird, funktioniert im Moment nur in Kombination mit Passwörtern – nicht mit Private Keys.
Die SSH-Einwahl mit der Kombination Google Authenticator + Private Key funktioniert also leider nicht. Das soll wohl erst mit OpenSSH 6.2 möglich sein (habe ich in einem Foren-Beitrag auf code.google.com gelesen).
Smartphone vorbereiten
Für unser Smartphone brauchen wir die App “Google Authenticator”.
Server konfigurieren
Paket zur Erzeugung der QR-Codes installieren:
apt-get install libqrencode3
Das Google Authenticator-Paket für Debian herunterladen. Das gibt es hier:
http://ftp.us.debian.org/debian/pool/main/g/google-authenticator/
Für 64-Bit wäre das also:
wget http://ftp.us.debian.org/debian/pool/main/g/google-authenticator/libpam-google-authenticator_20110413.68230188bdc7-1.1_amd64.deb
…und für die 32-Bit Variante:
wget http://ftp.us.debian.org/debian/pool/main/g/google-authenticator/libpam-google-authenticator_20110413.68230188bdc7-1.1_i386.deb
Google Authenticator installieren:
dpkg -i libpam-google-authenticator_20110413.68230188bdc7-1.1_i386.deb
Nun muss der Google Authenticator auf dem Server eingerichtet werden. Das muss unter dem Account geschehen, mit dem man sich später per SSH einloggen will.
google-authenticator
Nun erhält man einen QR-Code sowie einige Scratch Codes Die Abfragen müssen dann noch entsprechend beantwortet werden. Den Barcode scannt man nun mit dem Smartphone ab, danach landet ein neuer Eintrag in der Google Authenticator-App.
Was für eine Funktion haben die Scratch Codes?
Die Scratch-Codes sind Einmal-Kennwörter die man immer dann verwenden kann, wenn das Smartphone kaputt geht oder man es gerade nicht dabei hat. Sind alle Einmal-Kennwörter verbraucht, kann man sich z.B. wieder eine neue Authenticator-Datei erstellen lassen.
So, weiter geht’s… nun bearbeitet man die Datei /etc/pam.d/sshd und fügt folgende Zeile ein:
auth required pam_google_authenticator.so
Jetzt muss noch die SSH-Konfiguration bearbeitet werden:
vim /etc/ssh/sshd_config
…und die Challenge Response Authentifizierung sowie PAM aktiviert werden:
ChallengeResponseAuthentication yes UsePAM yes
Am Schluss muss noch der SSH-Dienst neugestartet werden:
/etc/init.d/ssh restart
SSH-Einwahl testen
Beim nächsten Einloggen per SSH wird nun nicht mehr nur nach dem Passwort gefragt, sondern auch nach dem Validation Code. Diese erhält man, indem man am Smartphone einfach die entsprechende App startet.