Ziel ist hier den Zugriff auf einen Server nicht allein von einem Passwort oder SSH-Key abhängig zu machen, sondern einen zusätzlichen Faktor abzufragen. In diesem Fall wird in einem Zeit-basierten Verfahren ein Token generiert, das 30 Sekunden gültig bleibt und nur einmalig verwendet werden kann. Die benötigte Software "google-authenticator" trägt zwar das Unternehmen im Namen, baut jedoch zu keiner Zeit eine Verbindung zu ihm auf. Die Generierung des Keys wie auch die Berechnung des Tokens findet komplett offline statt.
1. Installation der benötigten Software:
# apt install libpam-google-authenticator qrencode |
2. Anpassung der PAM-Konfiguration für SSH, Datei: /etc/pam.d/sshd
auth required pam_google_authenticator.so nullok |
3. Anpassung der SSHD-Konfiguration, Datei /etc/ssh/sshd_config
ChallengeResponseAuthentication yes |
4. Erzeugen des Tokens
- Unter den Berechtigungen des jeweiligen Users das Token einrichten (Die "X"-Folgen repräsentieren hier den geheimen Schlüssel)
$ google-authenticator |
Hier wird automatisch in der Shell per UTF8-Zeichen ein QR-Code zum Einscannen erzeugt. Zur Bestätigung wird an dieser Stelle eine gültige PIN erwartet, dann wird die Konfigurationsdatei unter ~/.google_authenticator erzeugt und das Token dort hinein geschrieben. Bitte NICHT die angefügte URL im Browser eingeben. Sie ist dafür bestimmt, einen QR-Code zu erzeugen, das bedeutet jedoch, dass das geheime Token an Google übermittelt wird.
Weiterhin werden 5 Notfall-Codes generiert, mit denen das Login einmalig möglich ist, für den Fall, dass das TOTP außer Kraft ist (Fehlkonfiguration, Zeitungleichheit, Handy defekt etc.)
Hinweis: Diese Datei darf nur den Mode 600 erhalten, da das Token hier abgelegt ist. Eine mehrfache Benutzung der Datei (kopieren in ein anderes Home-Dir) ist nicht möglich!