Zwei-Faktor-Authentifizierung per SSH mit dem YubiKey unter Debian

Yubikey an USB Port mit Schlüsselbund

Der YubiKey ist ein flacher USB-Stick, für eine sichere Anmeldung bei Netzwerken und Diensten. Damit lässt sich sich beispielsweise Sicherheit eines Computers oder einer Website deutlich verbessern, da man einen weiteren Faktor zur Authentifizierung hinzufügt (Zwei-Faktor-Authentifizierung). Da der YubiKey vorgibt eine Tastatur zu sein, spart man sich dazu das lästige Abtippen des Einmalpassworts, was bei üblichen OTP-Keys der Fall ist. Besonders sinnvoll ist eine solche zweifache Authentifizierung beispielsweise bei der Anmeldung per SSH, sofern man nicht bereits ein recht sicheres Verfahren, wie den automatischen SSH Login mit einem Schlüsselpaar verwendet.

Dieses Tutorial beschreibt die Installation der YubiKey Bibliothek und die Konfiguration eines Debian Systems zur Zwei-Faktor-Authentifizierung per SSH mit dem YubiKey. Vorraussetzung für dieses Tutorial ist ein YubiKey, welcher bei einem der YubiKey Reseller für ca. 30 Euro erworben werden kann.

Wichtig: Sollte man bei der Konfiguration einen Fehler machen, ist es wahrscheinlich, dass man sich selbst aussperrt. Deshalb bitte stets ein Terminal offen lassen um eventuelle Fehler im Nachhinein korrigieren zu können.

Schritt 1: API Key und ID generieren

Um den YubiKey verwenden zu können benötigt man einen API-Key und eine ID, welche auf https://upgrade.yubico.com/getapikey/ generiert werden kann.

Es dauert etwa 5-10 Minuten bis API-Key und ID funktionieren.

Screenshot des yubico API Key Generators

Schritt 2: YubiKey Library installieren

apt-get update && apt-get install libpam-yubico

Schritt 3: PAM Konfiguration anpassen

nano /etc/pam.d/sshd

Hier fügt man die untenstehende rot markierte Zeile ein. Dabei müssen id und key eingegeben werden, welche in Schritt 1 generiert wurden.

# PAM configuration for the Secure Shell service

# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth required pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth required pam_env.so envfile=/etc/default/locale
auth required pam_yubico.so mode=client id=XXXXX key=XXXXXXXXXXXXXXXXXXXXX

# Standard Un*x authentication.

Danach muss die Datei /etc/pam.d/common-auth ebenfalls geringfügig angepasst werden.

nano /etc/pam.d/common-auth

Hier erweitert man die folgende Zeile um „try_first_pass“.

auth [success=1 default=ignore] pam_unix.so try_first_pass nullok_secure

Die Konfiguration ist damit abgeschlossen. Alle Benutzer des Systems müssen sich nun zusätzlich mit einem OTP (One-Time-Password) Ihres YubiKeys anmelden. Damit das funktioniert, müssen die YubiKeys der jeweiligen Benutzer noch zugewiesen werden.

Schritt 3: YubiKey einem Benutzer zuweisen

Hierfür erstellt man im Home-Verzeichnis des jeweiligen Benutzer den Ordner .yubico und darin die Datei authorized_yubikeys.

mkdir ~/.yubico && nano ~/.yubico/authorized_yubikeys

Darin gibt man den Benutzernamen und die ersten 12 Zeichen eines generierten Passworts seines YubiKeys (YubiKey identifier) ein.

benutzername:xxxxxxxxxxxx

Diesen Schritt wiederholt man für jeden Benutzer, der sich per SSH am System anmelden soll.

Schritt 4: Überprüfen der SSH Konfiguration

Zuletzt sollte man sicherstellen, dass die sshd Konfiguration die authentifizierung mit einem Passwort zulässt

nano /etc/ssh/sshd_config

Hier muss PasswordAuthentication auskommentiert oder aktiviert sein.

PasswordAuthentication yes

Danach folgt ein Neustart des SSH Deamons.

service ssh restart

Schritt 5: Erster Login mit dem YubiKey

Ist alles fertig konfiguriert, kann nun die Anmeldung getestet werden. Hierfür öffnet man ein neues Terminal und meldet sich per SSH am Server an.

ssh benutzer@server.adresse

Wenn man nun nach dem Passwort gefragt wird, gibt man zu erst das „normale“ Passwort des Benutzers ein und direkt danach betätigt man den YubiKey (kurzer Tipp auf die goldene Fläche), welcher das OTP direkt anhängt und mit Enter bestätigt.

2 Gedanken zu „Zwei-Faktor-Authentifizierung per SSH mit dem YubiKey unter Debian

  1. Maik

    Hi ich habe ein kleines Problem mit der API, wenn ich mir sie zuschicken lassen will kommt OTP failed: NO_VALID_ANSWER. im Oberen Kästchen muss ich ja meine eMail angeben und im unteren muss ich mit meinem Yubikey ein Passwort erzeugen ? Also in den PC reinstecken und finger drauf halten ?

    Gruß
    Maik

    Antworten
    1. Markus Mansshardt Beitragsautor

      Hallo Maik,

      oben gibst du deine E-Mail Adresse ein und unten ein „one time password“ deines Yubikeys. Damit sollte es eigentlich klappen. Versuche einmal ob es mit einer alternativen E-Mail Adresse klappt. Stelle auch sicher, dass dein Yubikey ein „one time password“ erzeugt und kein statisches, welches du im Yubikey ebenfalls interlegen kannst. Das statische Passwort wird erzeugt wenn du länger auf die Goldfläche drückst. Das „one time password“ wird generiert wenn du kurz darauf tippst.

      Viele Grüße,
      Markus

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.