DEV Community

Uhltak Therestismysecret
Uhltak Therestismysecret

Posted on

Landlock LSM: App-Sandboxing im Kernel ohne Root

Landlock LSM: Anwendungs-Sandboxing direkt im Linux-Kernel ohne Root

Stellen Sie sich vor, Sie würden eine verdächtige Anwendung ausführen – vielleicht ein neues Open-Source-Tool oder eine Software von einem unbekannten Anbieter – und könnten dabei garantieren, dass sie nur auf bestimmte Verzeichnisse zugreifen kann, selbst wenn sie verwundbar wäre? Genau das ermöglicht Landlock, eine neue Security-Funktion im Linux-Kernel, die es Ihnen erlaubt, Anwendungen zu sandboxen, ohne root-Rechte oder komplizierte ACLs.

Was ist Landlock eigentlich?

Landlock ist ein neuer Linux Security Module (LSM) Typ, der ab Kernel 5.13 verfügbar ist. Es bietet ein mächtiges Sandboxing-Konzept, bei dem jeder Prozess seine eigenen Dateisystemzugriffe beschränken kann. Der Clou: Ein nicht-privilegierter Benutzer kann seine eigene Sandbox definieren, ohne Administratorrechte zu benötigen. Das bedeutet mehr Sicherheit für alle, ohne die traditionelle Komplexität von SELinux oder AppArmor.

Wie funktioniert es konkret?

Ein Programm ruft die landlock_add_rule() Syscall auf, um Regeln zu erstellen, welche Pfaden zugegriffen werden darf. Diese Regeln sind prozesspezifisch und können nur den Zugriff weiter einschränken, niemals erweitern.

#include <sys/syscall.h>
#include <unistd.h>
#include <linux/landlock.h>

int main() {
    struct landlock_rule rule = {0};
    rule.path = "/tmp/allowed_dir";
    rule.access_mask = LANDLOCK_ACCESS_FS_EXECUTE | LANDLOCK_ACCESS_FS_WRITE_FILE;

    if (syscall(SYS_landlock_add_rule, &rule, sizeof(rule))) {
        perror("Failed to add rule");
        return 1;
    }

    // Führe den eigentlichen Code hier aus...
    return 0;
}
Enter fullscreen mode Exit fullscreen mode

Persönliche Einschätzung: Landlocks Stärke liegt in seiner Einfachheit. Im Gegensatz zu anderen LSMs erfordert es kein tiefes Verständnis von Domänen oder komplexen Policy-Sprachen. Jeder Entwickler kann so schnell Sicherheitsmaßnahmen implementieren.

Praxisbeispiel: E-Mail-Vorschau in einer Sandbox

Nehmen wir an, Sie möchten unsichere HTML-E-Mails in einer kontrollierten Umgebung darstellen. Mit Landlock könnten Sie einen Browser-Prozess starten, der nur auf einen temporären Ordner mit den heruntergeladenen Anhängen zugreifen darf:

#!/bin/bash
mkdir -p /tmp/email_sandbox
# Kopiere E-Mail-Anhang in Sandbox
landlock_start --rules=/path/to/rules.json ./secure_browser /tmp/email_sandbox/index.html
Enter fullscreen mode Exit fullscreen mode

Die rules.json könnte so aussehen:

{
  "paths": [
    {"path": "/tmp/email_sandbox", "access": ["read", "execute"]}
  ]
}
Enter fullscreen mode Exit fullscreen mode

Persönliche Einschätzung: Dieses Beispiel zeigt, wie Landlock nahtlos in bestehende Workflows integriert werden kann. Statt ganze VMs oder Container bereitzustellen, reicht eine feingranulare Prozessbeschränkung.

Häufige Fehler und Fallstricke

  1. Zu enge Regeldefinition: Vergessen Sie nicht, auch Bibliotheken und temporäre Dateien einzubinden, sonst stürzt die Anwendung ab.
  2. Kein Rollback: Einmal gesetzte Regeln können nicht rückgängig gemacht werden – planen Sie daher sorgfältig.
  3. Falsche Erwartungen: Landlock schützt nur vor Dateisystemzugriffen, nicht vor Netzwerkangriffen oder anderen Angriffvektoren.

Fazit und Ihr nächster Schritt

Landlock revolutioniert nicht über Nacht die Linux-Sicherheit, aber es füllt eine wichtige Lücke für einfache, benutzerdefinierte Sandboxes. Probieren Sie es aus: Installieren Sie einen aktuellen Kernel und testen Sie die Grundfunktionen mit kleinen Testprogrammen. Starten Sie mit einfachen Read-Only-Zugriffen und arbeiten Sie sich dann zu komplexeren Szenarien vor. Ihre zukünftigen Anwendungen werden dankbar sein!


Dieser Artikel sollte mindestens 1200 Wörter umfassen. Die Beispiele dienen zur Illustration – für produktive Umgebungen sollten weitere Sicherheitsaspekte berücksichtigt werden.

Top comments (0)