Authentifizierung mit USB-Stick
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
PAM steht für "Pluggable Authentication Modules". Durch die Nutzung von PAM-Modulen ist man in der Lage, verschiedene Authentifizierungsmechanismen unter Linux zu implementieren. Als Beispiel sollen Kerberos, LDAP, Public-Key-Authentication oder Smartcards genannt sein. Das hier vorgestellte PAM-Modul ermöglicht es dem Benutzer, sich mit einem handelsüblichen USB-Stick, oder einer Speicherkarte, am System zu authentifizieren.
Wie funktioniert pamusb?¶
Für die Authentifizierung wird auf dem verwendeten Medium im Verzeichnis .pamusb der öffentliche Schlüssel BENUTZER.pad abgelegt. Im Homeverzeichnis des Benutzers liegt im versteckten Ordner .pamusb der private Schlüssel MEIN_STICK.pad.
Für den Zugang werden noch der Hersteller des Mediums sowie die Produktbezeichnung und Seriennummer hinzugezogen, wenn das Medium über diese verfügt. Einige, oft sind dies sehr günstige Ausführungen, USB-Sticks und Speicherkarten haben diese Attribute leider nicht. Für solche zeigt pamusb-conf
"GENERIC" in den entsprechenden Feldern an. Von der Verwendung solcher Medien wird abgeraten, da es einen der Authentifizierungsmechanismen aushebelt und es dann ausreichen würde die Schlüsseldateien auf ein anderes solches Medium zu kopieren.
Allerdings würde das kopieren der Schlüsseldateien ebenso ausreichen wenn der potentielle Angreifer über ein Medium mit identischen Merkmalen verfügt, sei es produktionsbedingt oder durch Manipulation. pamusb
dient der Bequemlichkeit und sollte nicht verwendet werden wenn man sich der Einschränkungen für die Sicherheit nicht bewusst ist.
Das pamusb
-Modul arbeitet mit allen Applikationen zusammen, die PAM unterstützen, z.B. sudo oder Displaymanagern wie LightDM, GDM und SDDM.
Bei der Verwendung von pamusb erfolgt die Anmeldung nur über den USB-Stick bzw. die Speicherkarte und ohne eine zusätzliche Passworteingabe. Für den Fall das man das Medium verliert oder ähnliches ist jedoch weiterhin eine Anmeldung nur mit dem Passwort möglich. Man könnte diese Konfiguration auch abändern um das USB-Medium als zweiten Faktor, zusätzlich zum Passwort, zu nutzen. Allerdings gibt es für eine 2-Faktor-Authentifizierung sicherere Optionen, wie z.B Yubikey 🇬🇧 oder über Fingerabdruck.
Es ist zu beachten, dass die Authentifizierung per USB-Medium nur zur Anmeldung, nicht aber für die Verschlüsselung privater Ordner verwendet wird. Wenn die Entschlüsselung der privaten Ordner (z.B. /home/BENUTZER, /home/BENUTZER/desktop) an eine Passworteingabe gebunden ist, findet Ubuntu diese Ordner nach einem Neustart mit pamusb nicht.
Eine ähnliche Einschränkung besteht bei Verwendung des GNOME Schlüsselbunds. Dessen automatische Freischaltung bei Login ist nicht möglich wenn pamusb, oder eine andere nicht Passwort basierende Authentifizierungs-Methode, verwendet wird. Sie können aber natürlich weiterhin genutzt werden, allerdings mit manueller Passwort-Eingabe für den Keyring. Der technische Hintergrund dieser Einschränkung ist das derzeitige Design des GNOME Schlüsselbunds, Interessierte finden nähere Informationen in einem Eintrag im GNOME Bugtracker 🇬🇧.
Seit Version 0.8.2 bietet pamusb allerdings ein Hilfsprogramm um den GNOME Keyring bei Login zu entsperren. Dieses basiert darauf das man das nötige Passwort in einer Klartext-Datei im Home-Verzeichnis ablegt. Da dies indirekt erlaubt jeden Benutzer mit Rootzugriff auf den Keyring zuzugreifen (da er das Passwort auslesen könnte) ist dies standardmäßig deaktiviert und muss erst aktiv und manuell vom Benutzer konfiguriert werden. Details dazu finden sich unter Getting started 🇬🇧 im Projekt Wiki.
Installation¶
Da der ursprüngliche Entwickler 🇬🇧 pamusb nicht weiter unterstützt und die letzte dort angebotene Version 0.5.0 wegen veralteter Bibliotheken nicht lauffähig gemacht werden kann, sollte der Fork von McDope u.A. von GitHub 🇬🇧 genutzt werden. Dieser baut wiederum auf der Arbeit von luka-n, IGP, Danesprite und Fincer auf. Eine Liste aller Mitwirkenden findet sich in der Datei AUTHORS 🇬🇧 des Github-Projekts.
Hinweis:
Wenn die Paketinstallation über das Terminal erfolgt, und während dessen ein USB-Stick oder eine Speicherkarte eingesteckt ist, erfolgt eine automatische Konfiguration dieses Mediums für einen Benutzer - wenn gewünscht. Das hinzufügen weiterer Benutzer, oder Medien, ist unter Konfiguration beschrieben. Bei Installation über eine grafische Anwendung funktioniert diese automatische Konfiguration derzeit noch nicht (siehe Fehler #34 🇬🇧).
pamusb kann nicht über die Paketverwaltung sondern nur über eine Fremdquelle installiert werden [1]:
Fremdquelle¶
Um die Fremdquelle zu authentifizieren, muss man den Signierungsschlüssel mit folgendem Befehl importieren:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 913558C8A5E552A7
Um aus der Fremdquelle zu installieren, muss man unabhängig von der Ubuntu-Version die folgende Paketquelle freischalten:
Hinweis!
Zusätzliche Fremdquellen können das System gefährden.
deb https://apt.mcdope.org/ ./
Nach dem Aktualisieren der Paketquellen erfolgt die Installation über folgendes Paket:
libpam-usb
Befehl zum Installieren der Pakete:
sudo apt-get install libpam-usb
Oder mit apturl installieren, Link: apt://libpam-usb
Manuell¶
Der Quelltext kann von GitHub 🇬🇧 heruntergeladen, entpackt [4] und kompiliert [5] werden. Ebenfalls ist es möglich ein eigenes .deb-Paket zu bauen. Die manuelle Installation ist relativ komplex und wird daher hier nicht beschrieben, ist jedoch im Wiki des Github-Projekts dokumentiert.
Aus diesem Quelltext werden auch die Pakete der Fremdquelle gebaut.
Hinweis!
Fremdsoftware kann das System gefährden.
Konfiguration¶
Um nun mit der Konfiguration fortzufahren, ist es notwendig, den USB-Stick einzustecken und ein Terminal [2] zu öffnen.
Medium hinzufügen¶
Mit pamusb-conf
kann nun der USB-Stick oder die Speicherkarte der /etc/security/pam_usb.conf hinzugefügt werden. Dazu ist folgender Befehl notwendig:
sudo pamusb-conf --add-device MEIN_STICK
Ausgabe:
Please select the device you wish to add. * Using "Philips USB Flash Drive (1234567890123456)" (only option) Which volume would you like to use for storing data ? * Using "/dev/sdb1 (UUID: E8ED-3F91)" (only option) Name : MEIN_STICK Vendor : Philips Model : USB Flash Drive Serial : 1234567890123456 UUID : E8ED-3F91 Save to /etc/security/pam_usb.conf ? [Y/n] Y Done.
Sollte in einem der Felder "GENERIC" angezeigt werden, sollte ein anderes Medium verwendet werden da die Authentifizierung ansonsten nur auf den privaten Schlüsseln basiert. Die Frage, ob die Daten der /etc/security/pam_usb.conf hinzugefügt werden sollen, bestätigt man mit Y . Um weitere Medien der Konfiguration hinzuzufügen, ist der Befehl zu wiederholen.
Benutzer hinzufügen¶
Mit pamusb-conf
kann nun der /etc/security/pam_usb.conf ein Benutzer hinzugefügt werden.
sudo pamusb-conf --add-user BENUTZER
Ausgabe:
Which device would you like to use for authentication ? * Using "MEIN_STICK" (only option) User : BENUTZER Device : MEIN_STICK Save to /etc/security/pam_usb.conf ? [Y/n] Y Done.
Die Frage, ob der Benutzer der /etc/security/pam_usb.conf hinzugefügt werden soll, bestätigt man mit Y . Um weitere Benutzer der Konfiguration hinzuzufügen, ist der Befehl zu wiederholen.
Um zu prüfen, ob alles richtig angelegt wurde, nutzt man den Befehl pamusb-check
, der die Authentifizierung simuliert.
pamusb-check BENUTZER
Ausgabe:
* Authentication request for user "BENUTZER" (pamusb-check) * Device "MEIN_STICK" is connected (good). * Performing one time pad verification... * Verification match, updating one time pads... * Access granted.
pamusb-agent¶
Der pamusb-agent ermöglicht das automatische Ausführen von Befehlen und wird bei der Paketinstallation automatisch eingerichtet. Standardmäßig sind jedoch keine Aktionen definiert. Damit ist es z.B. möglich, den Bildschirm durch das Entfernen des USB-Sticks zu sperren.
Beispiel für das automatische Sperren des Bildschirms beim Entfernen des USB-Sticks und Verwendung von GNOME: hierzu wird die /etc/security/pam_usb.conf in der Sektion "users
" angepasst. Diese ist mit Root-Rechten in einem Editor [3] zu öffnen.
<user id="BENUTZER"> <!-- Der Benutzer für den die Einstellung gelten soll --> <device>MEIN_STICK</device> <!-- Der USB-Stick der vom Benutzer genutzt wird --> <option name="quiet">true</option> <!-- kein ausführlicher Output --> <agent event="lock"> <!-- Sperrung des Bildschirms --> <cmd>gnome-screensaver-command -\-lock</cmd> <env>DISPLAY=:1</env> <env>DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus</env> <!-- 1000 ist mit der UID des Benutzers zu ersetzen --> <env>XAUTHORITY=/run/user/1000/gdm/Xauthority</env> <!-- 1000 ist mit der UID des Benutzers zu ersetzen --> </agent> <agent event="unlock"> <!-- Entsperrung des Bildschirms --> <cmd>gnome-screensaver-command -\-deactivate</cmd> <env>DISPLAY=:1</env> <env>DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus</env> <!-- 1000 ist mit der UID des Benutzers zu ersetzen --> <env>XAUTHORITY=/run/user/1000/gdm/Xauthority</env> <!-- 1000 ist mit der UID des Benutzers zu ersetzen --> </agent> </user>
Nutzer anderer Desktop-Umgebungen könnten z.B xdg-screensaver
aus dem Paket xdg-utils als Ersatz für gnome-screensaver-command
verwenden.
Weitere Optionen¶
Eine detailierte Beschreibung aller Konfigurationsoptionen findet sich im Wiki des Forks 🇬🇧.
Links¶