SELinux („Security-Enhanced Linux“) ist ein Sicherheitsmodul des Linux-Kernels, das vom US-Geheimdienst NSA zusammen mit Red Hat entwickelt wurde. Es erzwingt eine labelbasierte Mandatory Access Control (MAC): Jedes Subjekt (Prozess) und jedes Objekt (Datei, Verzeichnis, Socket, Port) bekommt ein Sicherheitsetikett, den sogenannten Security Context. Zugriff ist nur erlaubt, wenn die Regeln der Policy zwischen den Etiketten es zulassen – selbst ein kompromittierter Dienst kann dann nicht auf fremde Dateien zugreifen.

Security Context und Type Enforcement

Ein Security Context hat die Form user:role:type:level, zum Beispiel system_u:object_r:httpd_sys_content_t:s0. Das Herzstück ist Type Enforcement (TE): Der Typ (httpd_sys_content_t) bestimmt, was mit dem Objekt geschehen darf und wer darauf zugreifen darf. Dazu kommen rollenbasierte (RBAC) und mehrstufige (MLS) Kontrollen.

Die drei Modi

SELinux kennt drei Betriebsmodi:

  • enforcing – Regeln werden durchgesetzt, Verstöße verweigert und protokolliert (Standard bei Red Hat).
  • permissive – Verstöße werden nur protokolliert, nicht verweigert (ideal zum Testen).
  • disabled – SELinux ist vollständig ausgeschaltet.
getenforce                # aktuellen Modus anzeigen
setenforce 1              # temporär enforcing (0 = permissive)
sestatus                  # Status + Policy anzeigen
ls -Z /var/www            # Security Contexts anzeigen
restorecon -Rv /var/www   # Contexts laut Policy wiederherstellen

Die dauerhafte Konfiguration steht in /etc/selinux/config; semanage verwaltet Booleans, Ports und Datei-Kontexte, audit2allow erzeugt aus verweigerten Zugriffen passende Policy-Regeln.

Verbreitung und Abgrenzung

SELinux ist seit Kernel 2.6.0 (2003) im Linux-Hauptkernel, Red Hat lieferte es ab RHEL 4 (2005) standardmäßig aus; heute ist es bei RHEL, Fedora, CentOS, Rocky und AlmaLinux aktiv. Auch Android nutzt SELinux als Grundlage seiner App-Isolation. Während AppArmor pfadbasiert arbeitet und bei Ubuntu/Debian Standard ist, setzt SELinux auf Etiketten und gilt als mächtiger, aber auch komplexer. Landlock ergänzt beide um eine unprivilegierte Sandbox-Funktion. Zusammen mit Sandbox, Containern und der Firewall bildet SELinux die Sicherheitsebene eines Linux-Systems im Kernel.