Baustelle/Authentifizierung mit USB-Stick

Artikel wird überarbeitet

Dieser Artikel wird momentan überarbeitet.

Solltest du dir nicht sicher sein, ob an dieser Anleitung noch gearbeitet wird, kontrolliere das Datum der letzten Änderung und entscheide, wie du weiter vorgehst.


Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!

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

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:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

Inhaltsverzeichnis
  1. Wie funktioniert pamusb?
  2. Installation
    1. PPA
    2. Manuell
  3. Konfiguration
    1. USB-Stick hinzufügen
    2. Benutzer hinzufügen
    3. Konfiguration der Authentifizierung
    4. pamusb-agent
  4. Links

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 am System zu authentifizieren.

Wie funktioniert pamusb?

Für die Authentifizierung wird auf dem USB-Stick im Verzeichnis .pamusb der öffentliche Schlüssel benutzer.pad abgelegt. Im Homeverzeichnis des Benutzers liegt im versteckten Ordner .pamusb der private Schlüssel MeinStick.pad.

Für den Zugang werden noch der Hersteller des Sticks sowie die Produktbezeichnung und Seriennummer hinzugezogen.

Hinweis:

Ein einfaches Kopieren des Schlüssels reicht also nicht aus, um Zugang zum System zu erhalten.

Das pamusb-Modul arbeitet mit allen Applikationen zusammen, die PAM unterstützen, z.B. sudo oder Displaymanagern wie LightDM, GDM und SDDM.

Installation

pamusb kann nicht über die Paketverwaltung sondern nur über ein PPA installiert werden [1]:

PPA

Die jeweils aktuelle Version ist über ein "Personal Package Archiv" (PPA) [2] erhältlich.

Adresszeile zum Hinzufügen des PPAs:

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.


Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der Wiki/Vorlagen/PPA/ppa.png PPA-Beschreibung des Eigentümers/Teams promasu zu entnehmen.

Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.

Nach dem Aktualisieren der Paketquellen erfolgt die Installation über folgendes Paket:

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install libpam-usb 

sudo aptitude install libpam-usb 

Es ist darauf zu achten, dass die Passworteingabe nur zur Anmeldung, nicht aber zur Verschlüsselung der privaten Ordner verwendet wird. Bei der Verwendung von pamusb erfolgt die Anmeldung nur über den USB-Stick und ohne eine Passworteingabe. 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.

Manuell

Da der ursprüngliche Entwickler {en} pamusb nicht weiter unterstützt und die letzte angebotene Version 0.5.0 Version wegen veralteter Bibliotheken nicht lauffähig gemacht werden kann, kann zum Beispiel der Fork von Danesprite u.A. von GitHub heruntergeladen, entpackt [5] und kompiliert [4] werden.

Konfiguration

Um nun mit der Konfiguration fortzufahren, ist es notwendig, den USB-Stick einzustecken und ein Terminal [2] zu öffnen.

USB-Stick hinzufügen

Mit pamusb-conf kann nun der USB-Stick der /etc/pamusb.conf hinzugefügt werden. Dazu ist folgender Befehl notwendig:

sudo pamusb-conf --add-device MeinStick 

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            : MeinStick
Vendor          : Philips
Model           : USB Flash Drive
Serial          : 1234567890123456
UUID            : E8ED-3F91
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.

Die Frage, ob die Daten der /etc/pamusb.conf hinzugefügt werden sollen, bestätigt man mit Y . Um weitere USB-Sticks der Konfiguration hinzuzufügen, ist der Befehl zu wiederholen.

Benutzer hinzufügen

Mit pamusb-conf kann nun der /etc/pamusb.conf ein Benutzer hinzugefügt werden.

sudo pamusb-conf --add-user benutzer 

Ausgabe:

Which device would you like to use for authentication ?
* Using "MeinStick" (only option)
User            : benutzer
Device          : MeinStick
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.

Die Frage, ob der Benutzer der /etc/pamusb.conf hinzugefügt werden soll, bestätigt man mit Y . Um weitere USB-Sticks 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 "MeinStick" is connected (good).
* Performing one time pad verification...
* Verification match, updating one time pads...
* Access granted.

Konfiguration der Authentifizierung

Um nun die Authentifizierung zu aktivieren, muss die Datei /etc/pam.d/common-auth angepasst werden. Dazu öffnet man die Datei mit Root-Rechten in einem Editor [3] und ändert den Inhalt der Datei

von:

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

in:

auth	[success=1 default=ignore]	pam_usb.so use_first_pass
#auth	[success=1 default=ignore]	pam_unix.so nullok_secure
auth	requisite	pam_unix.so nullok_secure

Die letzte Zeile stellt die Passwort-Abfrage als fallback ein, sodass auch ohne USB-Stick aber mit Passwort eine Anmeldung möglich ist.

Ab jetzt ist eine Anmeldung am System nur noch mit dem Benutzer-Kennwort und dem USB-Stick möglich. Dies kann man in einem Terminal [2] testen:

sudo -i
Password:
root@bernie:~#
exit 

Die Datei /var/log/auth.log zeigt die korrekte Authentifizierung mit dem Kennwort und dem USB-Stick an.

tail -n 5 /var/log/auth.log 

Ausgabe:

Jul 15 20:45:44 ubuntu pam_usb[6732]: pam_usb v0.4.1
Jul 15 20:45:44 ubuntu pam_usb[6732]: Authentication request for user "benutzer" (sudo)
Jul 15 20:45:44 ubuntu pam_usb[6732]: Device "MeinStick" is connected (good).
Jul 15 20:45:44 ubuntu pam_usb[6732]: Access granted.
Jul 15 20:45:48 ubuntu sudo:   benutzer : TTY=pts/0 ; PWD=/ ; USER=root ; COMMAND=/bin/bash

Achtung!

Soll kein Passwort mehr eingegeben werden bzw. die Authentifizierung nur über den USB-Stick erfolgen, sieht die Konfiguration folgendermaßen aus:

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

Beachte: Bei der passwortlosen Authentifikation steigt das Sicherheitsrisiko enorm, da jeder Prozess sudo-Rechte verwenden kann, solange der USB-Stick angestöpselt ist.

Des Weiteren wird auch der GNOME Schlüsselbund nicht automatisch entsperrt, weshalb man dies manuell tun muss, oder ein leeres Passwort setzen muss, damit keine Sperrung des Passwort-Safes erfolgt.

pamusb-agent

Der pamusb-agent ermöglicht das automatische Ausführen von Befehlen. 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: hierzu wird die /etc/pamusb.conf in der Sektion "users" angepasst. Diese ist mit Root-Rechten in einem Editor [3] zu öffnen.

Hinweis:

Bitte den Text von hier kopieren, da das im Programm enthaltene Beispiel nicht funktioniert.

<user id="benutzer"> <!-- Der Benutzer für den die Einstellung gelten soll -->
      <device>MeinStick</device> <!-- Der USB-Stick der vom Benutzer genutzt wird -->
      <option name="quiet">true</option> <!-- kein ausführlicher Output -->
      <agent event="lock">gnome-screensaver-command -l</agent> <!-- Sperren des Bildschirms -->
      <agent event="unlock">gnome-screensaver-command -d</agent> <!-- Entsperren des Bildschirms -->
</user>

Um nun den pamusb-agent auch unter GNOME nutzen zu können, muss dieser dem Autostart hinzugefügt werden.

Not removable device error

Es kann dazu kommen, dass alle checks ok sind, der Stick beim Einstecken und Ausführen von pamusb-agent aber einen Fehler zurückgibt. Als rovisoriaxhw Lösung kann man in /usr/bin/pamusb-conf die Zeilen

if deviceProperties['storage.removable'] != 1:
raise Exception, 'Not a removable device'

durch ein vorangestelltes # deaktivieren.

Fehlermeldung beim Ausführen von pamusb-agent

Es kann beim Ausführen von pamusb-agent zu folgendem Fehler kommen:

Traceback (most recent call last):
File "/usr/bin/pamusb-agent", line 30, in <module>
import xml.elementtree.ElementTree as et
ImportError: No module named elementtree.ElementTree

Sollte dies der Fall sein, muss die Datei /usr/bin/pamusb-agent gefixt werden. Dazu öffnet man sie mit Root-Rechten in einem Editor [3] und sucht nach folgender Zeile (laut Fehlertext Zeile 30):

import xml.elementtree.ElementTree as et

Diese ändert man in:

import xml.etree.ElementTree as et

Anschließend den pamusb-agent normal starten.

Weitere Einstellungen der /etc/pamusb.conf sind in der Dokumentation {en} zu finden.

Achtung!

Um sich wieder ohne USB-Stick am System anmelden zu können, entfernt man die Zeile:

auth	[success=1 default=ignore]	pam_usb.so use_first_pass

aus der Datei /etc/pam.d/common-auth.