von Manfred Gipp
Anmeldung am System
Die klassische Anmeldung ist über Anmeldename und Passwort. Wobei der Anmeldename meist schon vorgegeben ist, so dass man nur noch das Passwort eingeben muss.
An sich ganz einfach und doch sehr kompliziert.
Denn was verwendet man gerne als Passwort? Einfach den Namen mit einer Zahl? Oder "08154711"? Oder, oder, oder.
Meist sind die Passwörter viel zu einfach oder viel zu einfach zu erraten.
Deswegen wir heute gerne die zwei-Faktor-Authentifizierung verwendet. Also einmal das übliche mit Anmeldename und Passwort und zusätzlich ein z.B. Hardwaretoken.
Hardwaretoken
Ein Hardwaretoken ist im Prinzip nichts anderes als ein Gerät, das irgendwie am PC/Laptop/Smartphone angeschlossen wird, um eine zusätzliche Sicherheit zu bekommen. Ohne den Hardwaretoken geht es dann nicht.
Aber was ist, wenn ich den nicht zur Hand habe? Oder verloren habe? Oder das Teil defekt ist?
Für die Anmeldung am Betriebssystem (hier Linux) gibt es eine Zwischenlösung. Eine Anmeldung mit Hardwaretoken ODER mit Anmeldename und Passwort. Nicht mit dem Wörtchen UND. Also entweder oder. Aber nicht zwingend beides.
Das soll Thema dieses Artikels sein.
Aussuchen des Verfahrens
Wenn man den Yubikey einfach in einen USB Slot steckt, kann man z.B. einfach einen Editor öffnen und statt einer Tastatureingabe auf den goldenen Knopf drücken, der auf dem Key drauf ist.
Ergebnis ist ein Zahlen/Buchstaben Code, der standardmäßig und einzigartig von dem Key geliefert wird. Wenn das schon mal funktioniert ist alles gut.
Wenn nicht, ist auf alle Fälle die Installation der entsprechenden Pakete. Für mich sind das folgende Pakete gewesen. (Basis ein Debian Client) Woher die Pakete kommen, muss jeder für seine Distribution selbst heraus finden.
Pakete
- yubikey-personalization-gui
- yubikey-manager
- python3-ykman
- libyubikey0
- libykpers-1-1
- libykclient3
- libpam-yubico
- python-yubico-tools
Die oben genannten Pakete machen auf alle Fälle Sinn, da sie später für die PAM-Authentifizierung benötigt werden.
Zusätzlich hat sich für mich bewährt, dass der Systemadministrator (also root) die Einrichtung vornimmt. Es gäbe auch eine Einrichtung pro Benutzer. Aber auch hier muss root etwas vorher aktivieren bzw. einrichten. Hier geht es um die Aktivierung für alle Benutzer auf dem System, ohne dass der Benutzer selbst groß etwas tun muss.
ACHTUNG:
Die folgende Konfiguration geht nur in Verbindung mit einem Internetzugang. Offline geht das nicht. Für die Offlinefunktionalität braucht man zusätzliche Dinge, die hier nicht besprochen werden.
Eine gute Beschreibung habe ich bei Debian selbst gefunden.
Yubico API key signup
Zuerst muss ein gemeinsamer symmetrischer Schlüssel für die Verwendung mit den Yubico Web Services erzeugt werden. (Deswegen die Internetzugangsnotwendigkeit).
Bei Yubico gibt es einen Server, der wohl immer frei bleiben wird, der hier eine Unterstützung bietet. Theoretisch bekommt man dann per Mail alle notwendigen Informationen. Das war bei mir leider nicht so. Also war es notwendig, die beiden Informationen gesondert abzuspeichern.
Authentifizierung per ID aus einer Datei
Ich habe eine Datei mit dem Namen yubikeys im Verzeichnis /etc erstellt.
Diese Datei beinhaltet nichts anderes als den Benutzernamen einen Doppelpunkt und die ersten 12 Zeichen aus der Ausgabe vom key selbst. So wie am Anfang in einem Editor der yubikey ausgelesen wurde.
Beispiel:
manfred:cc8899101112
Mehr nicht. Berechtigungen zum Lesen für Gruppe und Other sollte gegeben werden. (644)
PAM ist zuständig für die Authentifizierung
PAM (Plugable Authentication Module) ist für die Authentifizierung zuständig.
Bei Debian (bullseye) war es an sich ganz einfach. Hier gibt es das Verzeichnis
/etc/pam.d
Hier ist die Authentifizierung in viele kleine Teildateien aufgeteilt. Die Datei "common-auth" beinhaltet die Konfiguration für die eigentliche Authentifizierung. Ich habe ganz am Anfang folgenden Eintrag verwendet (alles in einer Zeile):
auth sufficient pam_yubico.so id="id von yubico API key signup" authfile=/etc/yubikeys
An sich war das alles.
ACHTUNG:
Am besten ausprobieren, bevor man rebooted. Also ein Terminal aufmachen und z.B. per SSH versucht sich anzumelden.
ssh localhost
Fragt das Passwort für den angemeldeten Benutzer ab. Daraufhin den goldenen Knopf auf dem yubikey antippen und kurz warten. Wenn alles in Ordnung ist, wird man angemeldet.
Ansonsten einfach das Benutzerpasswort eingeben und es funktioniert auch ohne den yubikey.
Variationen
Hier gibt es noch viele Variationen dieses Themas. Aber um erste Funktionalität zu bekommen, ist diese Vorgehensweise für mich schon mal gar nicht schlecht gewesen.
Kommentare
Einen Kommentar schreiben