SELinux Einleitung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

SELinux

SELinux (Security-Enhanced Linux) ist ein Sicherheitssystem, das den Linux-Kernel um eine zusätzliche Kontrollschicht erweitert. Es wurde ursprünglich von der NSA entwickelt und ist heute fester Bestandteil von RHEL-basierten Distributionen wie Rocky Linux.

Wozu braucht man SELinux?

Normalerweise entscheidet Linux anhand von Besitzer, Gruppe und Berechtigungen, ob ein Prozess auf eine Datei zugreifen darf – das klassische rwx-Modell. Das reicht in vielen Fällen aus, hat aber eine Schwachstelle: Wird ein Dienst kompromittiert, darf der Angreifer alles, was der Dienst auch darf.

SELinux geht einen Schritt weiter. Es legt fest, welcher Prozess auf welche Ressource zugreifen darf – unabhängig vom Dateisystembesitzer. Ein kompromittierter Webserver kann damit zum Beispiel nicht einfach auf die Passwortdatenbank zugreifen, selbst wenn er als root läuft.

Dieses Prinzip nennt sich Mandatory Access Control (MAC).

Wie funktioniert das?

SELinux weist jedem Objekt im System einen Kontext zu – Dateien, Prozessen, Ports und Sockets bekommen ein Etikett. Dieser Kontext hat die Form:

user:role:type:level

In der Praxis ist vor allem der Typ entscheidend, z. B. httpd_sys_content_t für Webserver-Inhalte oder sshd_exec_t für den SSH-Daemon.

Eine zentrale Richtlinie (Policy) definiert dann, welche Typen miteinander kommunizieren dürfen. Alles, was nicht explizit erlaubt ist, wird blockiert.

Die drei Modi

SELinux kennt drei Betriebsmodi:

Modus Verhalten
Enforcing SELinux ist aktiv. Verstöße werden blockiert und protokolliert.
Permissive SELinux ist passiv. Verstöße werden nur protokolliert, aber nicht blockiert. Nützlich zur Fehlersuche.
Disabled SELinux ist vollständig deaktiviert. Nicht empfohlen.

Den aktuellen Modus zeigt:

getenforce

Wichtig zu wissen

SELinux ist kein Ersatz für klassische Linux-Berechtigungen – beide Systeme greifen gleichzeitig. Eine Datei muss also sowohl die normalen Dateiberechtigungen als auch den passenden SELinux-Kontext haben, damit ein Prozess darauf zugreifen kann.

Viele Probleme mit Diensten unter Rocky Linux haben SELinux als Ursache. Der erste Schritt bei der Fehlersuche ist daher immer ein Blick in die SELinux-Logs:

ausearch -m avc -ts recent

Siehe auch