Landlock LSM: Secure Linux Apps ohne root-Rechte
Stellen Sie sich vor, Sie laden ein Programm herunter und führen es einfach aus – und das Tool hat sofort uneingeschränkten Zugriff auf Ihren gesamten Home-Ordner, Ihre Kryptowährungs-Wallet oder sogar interne Unternehmensdateien. Genau das passiert immer noch in den meisten Standard-Linux-Umgebungen. Wir vertrauen Anwendungen blind, während unser System offen liegt. Aber diese Ära könnte bald vorbei sein. Dank eines eleganten neuen Features im Linux-Kernel namens Landlock können wir Programme jetzt sicher einsperren – ganz ohne root-Rechte.
Landlock ist eine neue Mandatory Access Control (MAC)-Technologie, die als Loadable Security Module (LSM) integriert ist. Es erlaubt jedem Benutzer, Sandbox-Richtlinien zu erstellen, die bestimmen, welche Dateien und Netzwerkressourcen eine Anwendung nutzen darf. Keine komplexen SELinux-Policies, keine tiefgreifenden Änderungen an Ihrem System – nur sauberes, benutzerdefiniertes Sandboxing.
Warum herkömmliche Sandboxing-Lösungen versagen
Seit Jahren nutzen wir verschiedene Ansätze, um Apps einzuschränken: AppArmor, SELinux, Firejail, Flatpak-Sandboxes. Doch all diese Werkzeuge haben einen großen Nachteil – sie erfordern entweder Root-Rechte oder sind extrem komplex zu konfigurieren. In einem typischen Entwickler-Setup oder einem Multi-User-System bedeutet das: Entweder vertraut man der Software komplett, oder man investiert stundenlang in Sicherheitskonfigurationen.
Mit Landlock ändert sich das Grundparadigma. Jede User kann eigene Sandbox-Richtlinien erstellen, ohne Administratorrechte zu benötigen. Das ist revolutionär für alle, die mit ungetesteter Software arbeiten müssen – sei es bei Penetrationstests, beim Testen von Plugins oder einfach beim Öffnen verdächtiger Dokumente.
Beispiel 1: Einfache Dateisystem-Einschränkung mit landlock-confined
Das landlock-Paket enthält praktische Tools wie landconfine, die uns zeigen, wie einfach das Einsatzscenario wird:
# Erstellt eine temporäre Sandbox mit eingeschränktem Dateizugriff
# Nur /tmp und /usr/share/icones dürfen gelesen werden
landconfine --no-net --files=/tmp,/usr/share/icons -- firefox
Enter fullscreen mode Exit fullscreen mode
In diesem Beispiel startet Firefox mit stark reduzierter Angriffsfläche. Der Browser kann nur auf temporäre Daten und Icons zugreifen – keine persönlichen Dateien, keine Konfigurationsordner. Selbst wenn eine Schwachstelle im Browser ausgenutzt wird, bleibt der Schaden lokal begrenzt.
Persönlich finde ich diesen Ansatz bahnbrechend. Ich habe jahrelang mit komplexen Container-Lösungen gekämpft, nur um simple Isolation zu erreichen. Landlock macht das trivial.
Unter der Haube: Wie Landlock funktioniert
Landlock arbeitet über einen mehrstufigen Enforcement-Mechanismus. Zuerst wird ein “Access Rights Map” definiert, das genau festlegt, welche Operationen erlaubt sind. Dann werden hierarchische Regeln („Rulesets“) erstellt, die Pfade und deren Berechtigungen verknüpfen. Schließlich wird das Ruleset über Syscalls (landlock_restrict_self) aktiviert.
Die Magie geschieht im Kernel: Jeder Dateizugriffsversuch wird gegen die aktiven Regeln geprüft. Stimmt etwas nicht überein? Die Anwendung erhält einfach „Permission denied“ – ohne dass ein externes Tool im Spiel ist.
Beispiel 2: Manuelle Sandbox mit landlock(2) syscall
Wer mehr Kontrolle will, kann die C-Bibliothek liblandlock nutzen. Hier ein minimalistisches Python-Beispiel mit ctypes:
import ctypes
import os
# Lade liblandlock
lib = ctypes.CDLL("liblandlock.so.1")
# Definiere Rule: Nur /home/user/dokumente lesbar
path_bstr = b"/home/user/dokumente"
rules = [
(path_bstr, ctypes.c_uint64(0x0001)) # READ permission
]
# Erstelle Handle für Ruleset
handle = lib.landlock_create_ruleset(rules, len(rules), None)
# Einschränkungen auf aktuellen Prozess anwenden
lib.landlock_restrict_self(handle, 0)
os.close(handle)
# Jetzt läuft dieser Python-Prozess sandboxed!
print("Landlock aktiviert. Versuche, außerhalb des erlaubten Pfades zu lesen...")
Enter fullscreen mode Exit fullscreen mode
Dieser Code demonstriert, wie man programatisch eine Sandbox um seinen eigenen Prozess baut. Ideal für Skripte, die temporär mit sensiblen Daten arbeiten sollen, aber danach nichts weiter sehen dürfen.
Meine Einschätzung: Diese Low-Level-API öffnet Türen für Frameworks, die automatisch Sandboxing implementieren können – denken Sie an Jupyter Notebooks oder CI/CD-Agents, die isoliert laufen sollen.
Netzwerkeinschränkungen ab Kernel 6.3
Ursprünglich beschränkte sich Landlock auf das Dateisystem. Mit Kernel 6.3 kamen Netzwerkpermissions hinzu – nun können auch Socket-Operationen kontrolliert werden. Eine Anwendung kann so völlig vom Internet getrennt werden, während sie trotzdem auf lokale Dateien zugreifen darf.
Beispiel 3: Kombination aus File- und Network-Restrictions
# Startet einen Texteditor komplett offline
# Erlaubt nur Schreibzugriff auf ~/docs, blockiert jeglichen Netzwerkzugriff
landconfine --net=none --files=/home/user/docs:rwx -- nano report.txt
Enter fullscreen mode Exit fullscreen mode
Diese Kombination ist perfekt für redacted Dokumentenbearbeitung. Selbst wenn Malware versehentlich ausgeführt wird, kann sie keine Daten nach außen senden.
Was mich daran begeistert: Die Granularität. Sie können exakt steuern, ob TCP, UDP oder Unix-Domainsockets erlaubt sind. So lassen sich sogar teilweise vernetzte Umgebungen abbilden.
Häufige Fehler und Fallstricke
Trotz seiner Eleganz gibt es Fallen:
„Ich habe meine Config vergessen“: Landlock schließt standardmäßig alles aus, was nicht explizit erlaubt ist. Vergessen Sie wichtige Ordner wie
/usr/liboder Shared Libraries, crasht Ihre App sofort.Symlinks ignorieren: Landlock folgt Symlinks NICHT. Wenn
/tmp/dataein Link zu/secretist, wird der Zugriff trotzdem blockiert. Prüfen Sie Ihr Target-Manifest sorgfältig.Prozess-Erstellung missverstehen: Child-Prozesse (via fork/exec) erben die Sandbox-Richtlinien. Das ist oft gewollt, kann aber unerwartete Effekte haben – z.B. wenn ein Editor ein externes Tool aufruft.
Kernel-Version prüfen: Nicht alle Distributionen haben Landlock bereits kompiliert. Prüfen Sie mit
grep LANDLOCK /.configoder installieren Sie einen neueren Kernel (ab 5.13 für Files, ab 6.3 für Networks).
Fazit: Der nächste Schritt zur praktischen Linux-Sicherheit
Landlock fügt dem Linux-Sicherheitsstack ein fehlendes Puzzleteil hinzu: Benutzerdefinierte, granulare Isolation ohne administrative Overhead. Während SELinux und AppArmor weiterhin für systemweite Policies unverzichtbar bleiben, füllt Landlock die Lücke für Ad-hoc-Sandboxing.
Ihr konkreter nächsten Schritt
Prüfen Sie Ihren Kernel: Führen Sie
uname -raus. Ab Version 5.13 sollten Sielandlocksupport haben. Für Netzwerkkontrolle brauchen Sie mindestens 6.3.Testen Sie die Demo-Tools: Installieren Sie das Paket
landlock(oft unterlandlock-toolsverfügbar). Spielen Sie mitlandconfineherum – starten Sie einen Browser oder einen PDF-Reader mit eingeschränktem Zugriff.Integrieren Sie in Ihre Workflows: Überlegen Sie, welche Ihrer täglichen Aufgaben von automatischem Sandboxing profitieren würden. Vielleicht wrapper Scripts für Downloads? Oder CI-Jobs, die nur auf bestimmte Artefakte zugreifen dürfen?
Die Zukunft der Anwendungssicherheit liegt in dezentralen, benutzergetriebenen Modellen. Landlock ist nicht perfekt – es unterstützt noch keine Fähigkeiten (capabilities) oder Mount-Namensräume – aber es ist ein massiver Fortschritt. Und das Beste: Sie können es heute schon nutzen, ohne Ihr gesamtes System umzukonfigurieren.