Landlock ist ein Sicherheitsmodul des Linux-Kernels, das seit Kernel 5.13 (2021) verfügbar ist. Es erlaubt jedem Prozess – auch unprivilegierten – sich selbst einzuschränken: Ein Programm kann festlegen, auf welche Dateien und Verzeichnisse es zugreifen darf, und damit eine eigene Sandbox aufbauen. Landlock heißt deshalb „stackable LSM“: Es legt eine zusätzliche Sicherheitsebene über die bestehenden Kontrollen, kann aber niemals Rechte erweitern, sondern nur weiter einschränken.
Wie funktioniert Landlock?
Ein Prozess baut ein Ruleset (Regelsatz) auf, fügt Regeln hinzu und aktiviert es für sich und seine Kindprozesse. Drei Systemaufrufe steuern das Verfahren:
landlock_create_ruleset(2) # neues Ruleset anlegen
landlock_add_rule(2) # Zugriffsregel (z.B. Dateibaum) hinzufügen
landlock_restrict_self(2) # Ruleset für den eigenen Prozess aktivieren
Die Zugriffsrechte heißen Access Rights, zum Beispiel LANDLOCK_ACCESS_FS_READ_FILE, LANDLOCK_ACCESS_FS_WRITE_FILE oder LANDLOCK_ACCESS_FS_MAKE_DIR. So kann ein Datei-Konverter das Lesen eines Eingabeordners und das Schreiben in genau einen Ausgabeordner erlauben – alles andere ist blockiert, selbst wenn der Prozess kompromittiert wird.
Warum ist Landlock besonders?
Andere Sicherheitsmodule verlangen Root-Rechte und eine systemweite Konfiguration: AppArmor nutzt Profile in /etc/apparmor.d/, SELinux benötigt Policies und Security Contexts. Landlock dagegen kann ein ganz normales Programm für sich selbst aktivieren, ohne Administrator – ideal für Browser, Compiler oder Datei-Konverter, die fremde Eingaben verarbeiten. Zusammen mit Containern und der Virtualisierung ergänzt Landlock die Sicherheitsmechanismen eines Linux-Systems im Kernel.