ubuntuusers.de

Authentifizierung mit USB-Stick

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

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 🇬🇧.

Diese Revision wurde am 30. Oktober 2022 15:36 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Hardware, System