Der Login auf einem SSH-Server lässt sich bereits mit Bordmitteln gut absichern. Voraussetzung dafür ist, dass der Admin in der
»sshd_config
«
die Directive
»PasswordAuthentication
«
auf
»No
«
setzt und sämtliche Benutzer konsequent mit passwortgeschützten RSA / DSA-Keys ausstattet. Alternativ kann die Authentifizierung an einem OpenSSH-Server schon seit Urzeiten auch mit dem Einmalpasswortverfahren S/KEY abgesichert werden.
S/KEY wurde zwischenzeitlich durch OPIE [6] ersetzt und erlaubt es, im Voraus Passwortlisten mit Einmalpasswörtern zu generieren, die dann ähnlich wie die TAN-Listen beim eBanking verwendet werden. Alternativ können Einmalpasswörter aber auch im Bedarfsfall auf einem OTP-Generator erstellt werden, zum Beispiel mit Opikey [15] auf einem Android-Smartphone.
Wesentlich einfacher und eleganter lässt sich eine SSH-Sitzung heute aber mit dem Google-Authenticator [16] sichern. Denn das Google-Authenticator Project steht unter der Apache License 2.0 und ist damit frei verfügbar. Für den Server steht ein PAM-Modul zur Verfügung, der Google-Authenticator Client läuft auf Android-, iOS- und Blackberry-Geräten und kann einfach aus dem jeweilgen App-Store installiert werden.
Serverseitig ist die Installation des Google-Authenticator PAM-Moduls auf einem Ubuntu-Server ein Kinderspiel, denn hier lässt sich ein passendes Paket direkt aus den Repositories installieren:
sudo apt-get install libpam-google-authenticator
Alternativ laden Sie den Sourcecode von
[17]
herunter und kompilieren ihn für Ihre Plattform. Ist das PAM-Modul installiert, melden Sie sich mit dem Benutzer an der Konsole an, der sich später mit dem Google-Authenticator anmelden soll und geben Sie
»google-authenticator
«
ein.
Das Programm zeigt dann im Terminal einen QR-Code, einen Secret Key, einen Verification Code sowie fünf Emergency Scratch-Codes an. Die Emergency Scratch-Codes sollten Sie wieder ausdrucken und an einer sicheren Stelle verwahren. Denn mit diesen Einmal-Passworten können Sie sich auch dann am SSH-Server anmelden, wenn Sie das Smartphone mit dem Google-Authenticator einmal nicht zur Hand haben.
In der Google Authenticator App auf dem Smartphone klicken Sie nun auf das Plus-Zeichen am unteren Rand und wählen dann den Befehl
»Barcode scannen
«
. Alternativ können Sie das Konto auch manuell hinzufügen. Dazu geben Sie den Kontonamen in der Form
»User@Host
«
und den entsprechenden geheimen Schlüssel an.
Die nachfolgenden Fragen dienen der zusätzlichen Absicherung des Accounts. Hier sollten Sie die mehrfache Verwendung eines Authentisierungs-Tokens verbieten und maximal drei Login-Versuche pro 30 Sekunden zulassen, um Brute-Force-Angriffen vorzubeugen. Abschließend müssen Sie den Google-Authenticator noch in der PAM-Konfiguration aktivieren und eine Änderung an der SSH-Konfiguration vornehmen. Dazu öffnen Sie die Datei
»/etc/pam.d/sshd
«
im Editor und fügen am Ende die Zeile
auth required pam_google_authenticator.so
hinzu. Anschließend speichern Sie die Datei. In der
»/etc/ssh/sshd_config
«
ändern Sie den Wert für die
»ChallengeResponseAuthentication
«
auf
»yes
«
und starten den SSH-Daemon neu.
Wenn Sie sich künftig auf Ihrem Server per SSH einloggen, fragt der SSH-Server wie gewohnt Benutzernamen und Passwort und zusätzlich den Verification Code ab, den der Google-Authenticator auf Ihrem Smartphone anzeigt.