FOSDEM: Systemd und die Neuerfindung der Home-Verzeichnisse
Systemd-Homed bietet verschlüsselte, portable Home-Verzeichnisse. Lennart Poetterings Vortrag erläutert Details und Tücken der neuen Lösung für alte Probleme.
Die neue Systemd-Komponente "Homed" kann das individuelle Linux-Home-Verzeichnis zu einer verschlüsselten, portablen Containerdatei machen, die erst bei der Anmeldung entschlüsselt und eingehängt wird. Die Ideen um Systemd und seine Komponenten sind immer wieder für kontrovers geführte Diskussionen gut, weil sie nach Ansicht von Skeptikern zu leichtfertig mit der UNIX-Philosophie "Mache nur eine Sache und mache sie gut" brechen. Systemd-Homed gibt weniger Grund zu Kritik aus dieser Richtung, denn es ist als optionale Komponente für Systemd konzipiert. Drei Tage vor diesem Vortrag war Homed bereits als Merge im Quellcode der kommenden Systemd-Version 245 angekommen.
Ein $HOME fĂĽr Nomaden
Der Vortrag zu Systemd-Homed auf der FOSDEM 20 war als Fragestunde strukturiert, in welcher Lennart Poettering auf Details, Tücken und Komplikationen in der Umsetzung einging. Denn die Grundlage von Systemd-Homed war bereits Gegenstand seiner Präsentation zur Konferenz "All Systems Go" im September 2019.
IT-Verantwortliche dürften bei portablen Home-Verzeichnissen gleich an zentral verwaltete, servergestützte Benutzerprofile denken. Während des FOSDEM-Vortrags wurde aber schnell klar, dass die Ansätze von Systemd-Homed vorerst den Alltag von Desktop-Anwendern im Sinn haben, die häufiger von einem Linux-System zum anderen wechseln. Systemd-Homed kann das gesamte Home-Verzeichnis beispielsweise in einer verschlüsselten Loopback-Datei oder auf einem USB-Stick speichern. Eine separate Textdatei enthält den User-Record in JSON-Syntax, die lediglich den Benutzernamen verrät. Auf einem anderen Linux-System mit Systemd-Homed arbeiten Anwender dann mit ihrem transportablen Home-Verzeichnis nach der Anmeldung und Entschlüsselung munter weiter.
Tatsächlich war die Arbeit mit mehreren Laptops ein öfters genannter Anwendungsfall in diesem Vortrag, denn um mehr geht es dieser Lösung zunächst noch nicht. Zwar kann ein Home-Verzeichnis auch auf einer CIFS-Freigabe liegen, allerdings gibt es seitens Systemd-Homed kein File-Locking für konkurrierende Zugriffe oder eine Synchronisierung einzelner Dateien. Es arbeitet nur mit Containern, Verzeichnissen oder gemounteten Volumes. Der Abgleich unterschiedlicher Home-Verzeichnisse bleibt weiterhin den Anwendern überlassen.
Mehr als ein Backend zur VerschlĂĽsselung
Neben der Portabilität ist die Verschlüsselung der Benutzerdaten über ein benutzergeneriertes Passwort ein Anliegen, das Lennart Poettering sauber lösen will. In der Vergangenheit kannten Linux-Distributionen wie Ubuntu und dessen Abkömmlinge die Möglichkeit, Dateien im Home-Verzeichnis mittels eCrypFS und dem Benutzerpasswort zu schützen. Ecrypfs wurde aber schon in Ubuntu 18.04 und anderen Distributionen aufgrund zahlreicher offener Bugs fallen gelassen. Eine Vollverschlüsselung per LUKS/Cryptsetup Daten hat wiederum den Nachteil, dass zur Entschlüsselung ein systemweites Passwort abgefragt wird, das Anwender ohne root-Privilegien weder selbst anlegen noch ändern können.
Mit Systemd-Homed dient das Login-Passwort auch zur Entschlüsselung des Home-Containers, der mittels LUKS2 oder Fscrypt verschlüsselt sein darf. Fällt der Datenträger in fremde Hände, so offenbart ein unverschlüsselt gespeicherter User-Record mit Meta-Informationen in JSON-Syntax lediglich den Benutzernamen. Alternativ funktionieren als Speicher aber auch einfache, unverschlüsselte Verzeichnisse, BTRFS-Subvolumes und die erwähnten CIFS-Freigaben im Netzwerk.
TĂĽcken im Detail: "It sucks"
Was nach einer einleuchtenden, nicht überambitionierten Lösung klingt, offenbarte im Vortrag dann doch etliche Hürden, die Systemd-Homed teils noch überwinden muss. Das gelingt nicht immer elegant: Damit alle Ordner und Dateien nach dem Einhängen des Home auch wirklich dem angemeldeten Benutzer gehören, muss die UID in deren Zugriffsrechten zu diesem Benutzer passen. Nach der Arbeit auf einem ganz anderen Linux-System ist das aber nicht immer gegeben, da UIDs systemspezifisch sind. Systemd-Homed führt kurzerhand ein chown()
auf alle Dateisystemobjekte im Home-Verzeichnis aus, damit deren UID auf dem aktuellen System wieder stimmt. "It sucks", kommentierte Poettering trocken, aber dies sei die gegenwärtig praktikable Lösung. Eine oft angesprochene, andere Herangehensweise wären User-Namespaces. Diese brächten wiederum den Nachteil einer Sandbox um den gesamten Benutzeraccount mit sich, der das Linux-System dann nicht mehr in gewohnter Weise nutzen kann.
Nach einer maßgeschneiderten Lösung verlangten auch SSH-Logins per Schlüssel, die bei einem abgeschlossenen Home-Verzeichnis nicht möglich wären. Denn OpenSSH will den Public Key aus der Datei ~/.ssh/authorized_keys auslesen. Deshalb speichert Systemd-Homed diese Public Keys zusätzlich im unverschlüsselten User Record und macht sie SSH verfügbar. Ein Problem bleibt nach gelungener Anmeldung per SSH aber die Entschlüsselung des Home-Containers, weil SSH keine Benutzerpasswörter überträgt. Lennart Poettering empfiehlt, für diese Fälle einfach die Anmeldung per SSH an einem Zweit-Account, um von dort aus das Home-Verzeichnis des primären Accounts zu entsperren.
Kommen Container-Dateien für LUKS2 zum Einsatz, so gibt es durch die vorgegebene Größe bei der Erstellung des Containers stets nur begrenzten Platz für Daten im $HOME. System-Homed unterstützt ein Online-Resizing des Dateisystems im Container, um bei Bedarf mehr Platz zu schaffen. Auf Systemen mit mehreren Benutzern und Home-Containern verlangt die Verteilung des verfügbaren Speicherplatzes aber von Adminstratoren mehr Aufmerksamkeit.
Handarbeit fĂĽr experimentierfreudige Anwender
Geht das Linux-System in den Ruhezustand, so schließt Systemd-Homed das gemountete, verschlüsselte $HOME ab und entfernt die Crypto-Schlüssel aus dem Speicher. Bei einem Aufwachen des Systems ist also wieder die Eingabe des Passworts zum Entschlüsseln des Home-Verzeichnisses gefragt. Homed macht es nötig, dass diese Passwortabfrage dann nicht in der verwendeten Desktop-Umgebung erfolgt, sondern in einem privilegierten Systemprozess wie dem Display-Manager GDM. Dies funktioniert aktuell noch nicht und Lennart Poettering hofft hier auf die Mithilfe der Gnome-Entwickler, die angehaltene Benutzersession wieder von GDM entsperren zu lassen.
Abhilfe schafft aktuell ein Exkurs in eine virtuelle Konsole, um von dort aus das Home-Verzeichnis wieder per manueller Anmeldung zu entsperren, bevor es zurĂĽck auf den Desktop geht. Wer also in einigen Wochen mit Systemd-Homed experimentieren will, beispielsweise unter Fedora Rawhide oder Arch Linux, muss sich noch auf Workarounds wie diesen einstellen. (tiw)