Fernwartungsmodul herunterladen

Zwei-Faktor-Authentifizierung mit SSH erzwingen (Gruppenbasiert)

Wie wir bereits Anfang 2014 berichteten (https://www.mars-solutions.de/blog/yubikey) haben sich sowohl bei uns als auch für Kundenimplementationen die Yubikeys als praktische Tokens für Zwei-Faktor-Authentifizierung herausgestellt. Das größte Modell für ca. 50 EUR beherrscht eine Vielzahl von Anmeldetechniken:

- sicheres statisches Kennwort
- Yubikey Einmalpasswörter
- OATH/HOTP sowie OATH/TOTP
- ist PIV-kompatible SmartCard
- OpenPGP auf dem Key
- FIDO U2F (hierzu demnächst mehr im Blog!)

Zu den Diensten bei denen Sie direkt verwendet werden können zählen z.B.: LastPass, Google, SalesForce.com uvm. Weiterhin ist das Topmodell mit NFC ausgestattet, so daß der Key auch berührungslos ohne USB-Anschluß eingesetzt werden kann.

Yubikey
Beispielimplementation unter Linux - Teil 1

Exemplarisch sind hier die Schritte dargestellt um unter Debian GNU/Linux sowohl Yubikey in die Authentifizierungskette PAM einzubinden, als auch für den Dienst SSH für nur eine bestimmte Benutzergruppe die Zwei-Faktor-Authentifizierung zu erzwingen. Stellen Sie sich einen typischen "Shared Service" vor, der es Benutzern anfangs erlaubt sich klassisch mit Benutzername und Kennwort anzumelden und optional die Möglichkeit bietet einen Yubikey zu registrieren. Ab diesem Punkt wird die Kombination aus Benutzername+Passwort+Yubikey erzwungen.

# apt-get install libpam-yubico

Danach ist die Datei /etc/pam.d/common-auth zu editieren und yubico als zusätzliche erlaubte Methode einpflegen:
[...]
auth sufficient pam_yubico.so id=16 try_first_pass
[...]

Stellen Sie danach sofort sicher ob die herkömmliche Unix/Linux-Anmeldung mit normalem Passwort noch funktioniert. Nun gilt es nur noch den "Public-Part" (die ersten 12 Stellen eines per Knopfdruck ausgegebenen OTPs) richtig zu hinterlegen.

# cd ~
# mkdir .yubico
# cat > authorized_yubikeys
An dieser Stelle dann die Kupferfläche am Yubikey betätigen und mit einem Texteditor nachträglich von hinten auf 12 Stellen reduzieren und den Benutzernamen davorschreiben. Das Ergebnis sollte für einen root-Zugang z.B. so aussehen:
root:ccddhfzruiui

Danach sollte es möglich sein per SSH anzumelden und anstatt dem normalen Passwort sich nur mit dem Yubikey-OTP anzumelden.
Schritt 1 -> erledigt

Beispielimplementation unter Linux - Teil 2

Nun kann es noch sinnvoll sein die Yubikey-Anmeldung nicht ersetzend für ein normales Passwort/Publickey einzusetzen, sondern ergänzend (Zwei-Faktor-Authentifizierung). Zudem sollte es möglich sein zu selektieren wer Zwei-Faktor-Anmeldung zwingend benötigt. Aber der Reihe nach: (Es kann sein das ab hier OpenSSH v6.6 oder größer nötig ist. d.h. unter Wheezy -> Backports oder Jessie)

# edit /etc/ssh/sshd_config
[...]
ChallengeResponseAuthentication yes
[...]
sowie

Match Group root
AuthenticationMethods publickey,keyboard-interactive

[...]

Ab sofort verlangt ein Anmeldevorgang für SSH nun PublicKey-Authentifizierung für Teilnehmer der Gruppe 'root' UND die Yubikey-Anmeldung. Die "AuthenticationMethods" lassen sich praktisch beliebig kombinieren (Passwort + Yubi....).