YubiKey 13 – Benutzer-Anmeldung an Linux/Ubuntu nur mit einem YubiKey erlauben

Mit einem YubiKey lässt sich die Benutzer-Anmeldung an einem Linux-PC ebenfalls mit einem zweiten Faktor (U2F) absichern. Den U2F kann man dabei global für jede Benutzeranmeldung, sei es die grafische Anmeldung, via SSH, etc. vorgeben. Auch eine feine Granulierung nach Anmeldeverfahren ist möglich.

Der Aufwand ist ein wenig höher als bei einem Windows-System, aber überschaubar und auch relativ schnell erledigt.

Der Login eines virtualisiertes Systems kann so ebenfalls mit dem Hardwaretoken ergänzt werden. Voraussetzung ist, dass der Host-Rechner den YubiKey vollständig an das Gast-System durchreicht.

In diesem Beispiel verwende ich ein virtualisiertes Ubuntu-System in einer Oracle VirtualBox.

Die Anleitung für ein Windows findet ihr ebenfalls hier im Blog
YubiKey 11 – Windows System anpassen zur Anmeldung mit einem YubiKey an einem Linux-Server


Inhaltsverzeichnis

Ubuntu vorbereiten

PAM-Modul installieren

Ubuntu und YubiKey für Login vorbereiten

Ubuntu – Login auf YubiKey umstellen

Anmeldung mit YubiKey funktioniert


Ubuntu vorbereiten

Eine Anleitung für die Vorbereitung einer VirtualBox findet ihr hier im Blog.
YubiKey 05 – VirtualBox für die Erstellung des OpenPGP-Schlüsselpaars und zum Anschluss des YubiKeys vorbereiten
Wichtig ist, dass das über den USB-Controller der YubiKey vom Host- an das Gast-System durchgereicht wird.

Mit dem folgenden Befehl lassen sich die angeschlossenen USB-Geräte auflisten. Der YubiKey sollte dann angezeigt werden.

lsusb

Angeschlossene USB-Geräte auflisten
Angeschlossene USB-Geräte auflisten

In der Liste ist auch der YubiKey enthalten. Er wird also korrekt vom Host an den Gast durchgereicht.

PAM-Modul installieren

PAM” steht für “Pluggable Authentication Modules” ….

sudo apt install libpam-u2f

Weitere Informationen zum “pam-u2f“-Paket finden sich auf

  1. https://github.com/Yubico/pam-u2f
  2. https://developers.yubico.com/pam-u2f/
  3. https://manpages.ubuntu.com/manpages/cosmic/man8/pam_u2f.8.html
Yubico - YubiKey 5C NFC - Two Factor Authentication USB...
Angebot Yubico YubiKey 5Ci - Two Factor Authentication...

Ubuntu und YubiKey für Login vorbereiten

Es wird ein neues Verzeichnis im Home-Verzeichnis der Benutzers benötigt. Es lässt sich mit dem Befehl anlegen.
Besteht bereits ein solches Verzeichnis, könnt ihr diesen Schritt überspringen.

mkdir ~/.config/YubiKey

Im nächsten Schritt wird ein angeschlossener YubiKey für die Registrierung vorbereitet.

pamu2fcfg > ~/.config/YubiKey/u2f_keys

Denkt daran die Metallkontakte am YubiKey zu drücken, sonst erhaltet ihr die Fehlermeldung
Unable to generate registration challenge, timeout error (-7)

In der “manpage” ist zu “mapu2fcfg” zu lesen:
DESCRIPTION
Perform a U2F registration procedure using a connected U2F token and output a configuration line that can be used with the U2F PAM module.

Mit diesem Befehl wurde euer YubiKey-Schlüssel ausgelesen und in die Datei “~/.config/YubiKey/u2f_keys” geschrieben.

Einen weitern YubiKey, also ein Backup-Tocken, kann man ebenfalls auslesen und in die Datei eintragen lassen. Dazu ist der Befehl nur geringfügig anzupassen.

pamu2fcfg -n >> /etc/YubiKey/u2f_keys

Habt ihr bereits die “u2f_keys” in ein anderes Verzeichnis verschoben, dann lt. der Befehl so

sudo pamu2fcfg -n >> ~/.config/YubiKey/u2f_keys

Die Zugriffsrechte der Datei lassen sich mit anzeigen.

ls -la ~/.config/YubiKey/u2f_keys

Mit einem Editor könnt ihr die Datei auch einsehen und editieren.

nano ~/.config/YubiKey/u2f_keys

Das kann ein Sicherheitsrisiko darstellen, da normale Benutzer ohne Adminrechte in der Lage sind den Key zu modifizieren. Soll der Schlüssel davor geschützt werden, kann er in ein anderes Verzeichnis verschoben werden und die Zugriffsrechte auf die Datei geändert werden.

Die “u2f_keys“-Datei verschieben wird deshalb in einen neuen Ordner mit dem Namen “YubiKey” im Verzeichnis “/etc” verschoben.

Im offiziellen YubiKey Manual wird beschrieben, wie die Datei “/etc/pam.d/sudo” bearbeitet wird. Durch diese Änderung lassen sich keine “sudo“-Befehle mehr ohne den YubiKey ausführen!!!
https://support.yubico.com/hc/en-us/articles/360016649099-Ubuntu-Linux-Login-Guide-U2F

Ubuntu – Login auf YubiKey umstellen

Achtung
Nach diesem Schritt ist eine Anmeldung wirklich nur noch mit dem YubiKey möglich. Verliert ihr den Schlüssel, dann ist ein Login nicht mehr möglich. Legt deshalb zu Sicherheit gleich einen zweiten Schlüssel in der Datei an.

sudo mkdir /etc/YubiKey
cd /etc/YubiKey/
sudo mv ~/.config/YubiKey/u2f_keys /etc/YubiKey/

Die Datei wurde mit dem letzten Befehl in das Verzeichnis “/etc/YubiKey/” verschoben und lässt sich ab jetzt nur noch mit “sudo” bearbeiten. Für alle anderen ist die Datei nur noch lesend zugänglich.

ls -la /etc/YubiKey/


###################################

Ab hier besondere Vorsicht!

Die Terminal-Sitzung die ihr gerade benutzt muss offen bleiben!
Die Terminal-Sitzung die ihr gerade benutzt muss die Datei “/etc/pam.d/sudo” geöffnet lassen. Wird die Session geschlossen und der YubiKey funktioniert nicht, gibt es keine Möglichkeit mehr “sudo” ohne den hinterlegten YubiKey zu nutzen.

Deshalb ist die Datei nur zu SPEICHERN!
–> Strg + O

Der Editor darf NICHT verlassen werden!

###################################


Nun fehlt die Ergänzung in der “/etc/pam.d/sudo” vornehmen.

sudo nano /etc/pam.d/sudo

Nach der Zeile “@include common-auth ist der Verweis auf die “u2f_keys” einzutragen.

auth       required   pam_u2f.so authfile=/etc/YubiKey/u2f_keys cue

Datei nur zu SPEICHERN!
–> Strg + O und in der Terminal-Sitzung geöffnet lassen.

Nur SPEICHERN!
Nur SPEICHERN!

In dieser Zeile gibt es eine Abweichung zur offiziellen Dokumentation von Yubico. Es wird am Ende der Zeile ein “cue” angehängt. Dadurch wird “Please touch the device.” ausgegeben, wie unten im Screenhsot zu sehen.

In der offiziellen Dokumentation steht dazu:
cue Set to prompt a message to remind to touch the device.
https://developers.yubico.com/pam-u2f/

Nun kann die Konfiguration getestet werden.

Im Screenshot seht ihr das Vorgehen:

/etc/pam.d/sudo editieren
/etc/pam.d/sudo editieren

Das Terminal 1 bleibt IMMER geöffnet!

Öffnet ein neues Terminal-Fenster und gebt dort den Befehl ein.

Terminal-Sitzung 2: YubiKey ist nicht angeschlossen

Mit dem Befehl “lsusb” wird abgefragt, ob der YubiKey am System angeschlossen ist.

sudo echo test

Nach einer dreimaligen Eingabe des richtigen Passworts wird abgebrochen, da der YubiKey nicht erkannt wurde.

Terminal-Sitzung 2: YubiKey ist angeschlossen

Mit dem Befehl “lsusb” wird abgefragt, ob der YubiKey am System angeschlossen ist.

Ihr seht, der YubiKey wird erkannt.

sudo echo test

Und siehe da, nach dem Drücken der Metallkontakte wird der Befehl ausgeführt.

Nach diesem Test sieht man, dass die Konfiguration korrekt ist und der YubiKey zum Ausführen der “sudo“-Befehle zwingend benötigt und auch erkannt wird.

Für die zwingende Abfrage des YubiKeys bei der Anmeldung ist das Skript “/etc/pam.d/common-auth” zu editieren.

Die Datei ist die globale Konfigurationsdatei für die Anmeldung und gilt, z.B. auch für SSH-Sessions.
Das ist auch eine weitere Abweichung von der offiziellen Yubico-Dokumentation.

  #YubiKey required for login
  auth    required   pam_u2f.so nouserok authfile=/etc/YubiKey/u2f_keys cue

Die Option “nouserik” geben wird noch mit.

In der Dokumentation steht dazu:

Set to enable authentication attempts to succeed even if the user trying to authenticate is not found inside authfile or if authfile is missing/malformed.

das bedeutet

Wird gesetzt, damit Authentifizierungsversuche auch dann erfolgreich sind, wenn der Benutzer, der sich zu authentifizieren versucht, nicht in der auth-Datei gefunden wird oder wenn die auth-Datei fehlt/falsch ist.

Damit können sich auch Benutzer noch anmelden, die über keinen YubiKey verfügen.

Anzeige/Werbung

sudo-Befehle ohne YubiKey

Weiter oben haben wir zum Testen eine Zeile in der “/etc/pam.d/sudo” hinzugefügt, damit beim Ausführen von “sudo“-Befehlen zwingend eine YubiKey erforderlich ist.

Wer das nicht möchte, kann das deaktivieren, dann wird wieder nach dem Passwort anstatt nach dem Hardwaretoken gefragt.

Es ist die Datei “/etc/pam.d/sudo” zu editieren und ein paar Anpassungen vorzunehmen.

  1. Die Zeile “@include common-auth” ist auszukommentieren.
  2. Die Zeile, die wir weiter oben für das Testen eingefügt haben, ist ebenfalls auszukommentieren.
  3. Der Inhalt aus der “/etc/pam.d/common-auth” ist unterhalb der auskommentierten Zeile “@include common-auth” einzufügen.

Durch die Änderungen werden die globalen Vorgaben aus der “common-auth” überschrieben und nur die Einstellungen der “sudo“-Datei ziehen.

Der Inhalt der Datei sieht dann so aus

  #%PAM-1.0

session    required   pam_env.so readenv=1 user_readenv=0
session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0

#@include common-auth

# Content of  commom-auth
# here are the per-package modules (the "Primary" block)
auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_sss.so use_first_pass
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional                        pam_cap.so
# end of pam-auth-update config

#YubiKey required for login
#auth    required   pam_u2f.so nouserok authfile=/etc/YubiKey/u2f_keys cue

@include common-account
@include common-session-noninteractive

Passwortabfrage bei sudo-Befehle aktivieren
Passwortabfrage bei sudo-Befehle aktivieren

Auf diese Weise lässt sich der Zwang für den YubiKey auch für andere Protokolle deaktivieren, z.B. SSH.
Dafür ist die Datei “/etc/pam.d/sshd” zu editieren und die Anpassung vorzunehmen wie oben beschrieben.

Anmeldung mit YubiKey funktioniert

Nach der ganzen Konfiguration teste wir den Login …

Login mit YubiKey
Login mit YubiKey

.. und siehe da, es wird nach dem YubiKey gefragt. 🙂

(**) Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Schreibe einen Kommentar

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