[[Vorlage(Getestet, focal jammy)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Packprogramme: Archive entpacken] [:Programme_kompilieren: Programme kompilieren] [:sudo: Root-Rechte erlangen] }}} [[Inhaltsverzeichnis(2)]] [wikipedia:Pluggable_Authentication_Modules: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 [https://support.yubico.com/hc/en-us/articles/360016649099-Ubuntu-Linux-Login-Guide-U2F Yubikey] {en} oder über [:fprint: 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 [https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/1 Eintrag im GNOME Bugtracker] {en}. 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 [https://github.com/mcdope/pam_usb/wiki/Getting-Started#auto-unlock-your-gnome-keyring Getting started] {en} im Projekt Wiki. = Installation = Da der ursprüngliche [https://www.pamusb.org/ Entwickler] {en} 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:mcdope/pam_usb/:GitHub] {en} 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 [https://github.com/mcdope/pam_usb/blob/master/AUTHORS AUTHORS] {en} des Github-Projekts. {{{#!vorlage 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 Konfiguration] beschrieben. Bei Installation über eine grafische Anwendung funktioniert diese automatische Konfiguration derzeit noch nicht (siehe [https://github.com/mcdope/pam_usb/issues/34 Fehler #34] {en}). }}} pamusb kann nicht über die Paketverwaltung sondern nur über eine [:Fremdquelle:] installiert werden [1]: == Fremdquelle == [[Vorlage(Fremdquelle-auth, key 913558C8A5E552A7)]] [[Vorlage(Fremdquelle, https://apt.mcdope.org/, ./)]] Nach dem Aktualisieren der Paketquellen erfolgt die Installation über folgendes Paket: {{{#!vorlage Paketinstallation libpam-usb }}} == Manuell == Der Quelltext kann von [github:mcdope/pam_usb:GitHub] {en} 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 [https://github.com/mcdope/pam_usb/wiki/Getting-Started Wiki des Github-Projekts] dokumentiert. Aus diesem Quelltext werden auch die Pakete der Fremdquelle gebaut. [[Vorlage(Fremd, Software)]] = 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: {{{#!vorlage Befehl 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 [[Vorlage(Tasten, 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. {{{#!vorlage Befehl 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 [[Vorlage(Tasten, 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. {{{#!vorlage Befehl 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. {{{ MEIN_STICK gnome-screensaver-command -\-lock DISPLAY=:1 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus XAUTHORITY=/run/user/1000/gdm/Xauthority gnome-screensaver-command -\-deactivate DISPLAY=:1 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus XAUTHORITY=/run/user/1000/gdm/Xauthority }}} 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 [https://github.com/mcdope/pam_usb/wiki/Configuration Wiki des Forks] {en}. = Links = * [https://pamusb.org/ Projektseite (Ursprünglicher Autor, nicht mehr unterstützt und veraltet)] {en} * [https://github.com/mcdope/pam_usb/ Aktueller Fork, Quelle für 0.7.0 und aufwärts] {en} # tag: Sicherheit, System, Hardware