Zugriffskontrolle im Kernel

Was ist SELinux?

Security-Enhanced Linux

SELinux ist eine im Linux-Kernel verankerte Zugriffskontrolle, die jedem Prozess und jeder Datei ein Label gibt und anhand einer zentralen Regelmenge entscheidet, wer worauf zugreifen darf. Diese Regeln gelten zusätzlich zu den normalen Dateirechten und binden auch root.

Wenn ein Dienst unter Red Hat oder Rocky Linux eine Datei nicht öffnen kann, obwohl die Dateirechte eindeutig stimmen, steht meist die Regelmenge im Kernel im Weg.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Gilt zusätzlich
Zu den Dateirechten, auch für root
Drei Modi
Enforcing, Permissive, Disabled
Erste Wahl
Boolean setzen statt eigener Regel
Verwechselt mit
AppArmor

Kontexte statt Benutzerrechte

Jedes Objekt im System trägt einen Kontext aus Benutzer, Rolle, Typ und optional einer Sicherheitsstufe, sichtbar über ls -Z für Dateien und ps -Z für Prozesse. Entscheidend ist im Alltag der Typ. Der Webserver läuft als httpd_t und darf laut Regelwerk auf httpd_sys_content_t zugreifen, auf den Kontext der Benutzerverzeichnisse dagegen nicht. Ob der Dateieigentümer das erlauben würde, spielt keine Rolle.

Daraus folgt der Fehler, den fast jeder einmal macht: Eine Datei wird mit mv aus dem Home-Verzeichnis nach /var/www verschoben und behält dabei ihren alten Kontext, während cp den Kontext des Zielverzeichnisses erbt. Die Rechte sehen richtig aus, der Zugriff scheitert trotzdem. Dagegen hilft restorecon: Das Werkzeug setzt den Kontext auf den Wert zurück, den die Systemdatenbank für diesen Pfad vorsieht.

Die drei Modi

Im Modus enforcing werden Verstöße blockiert und protokolliert, in permissive nur protokolliert, und disabled schaltet den Mechanismus ganz ab. Für die Fehlersuche ist permissive das richtige Werkzeug, weil du in einem Durchlauf alle Blockaden siehst statt immer nur die erste.

Zwischen permissive und disabled liegt allerdings ein Unterschied, der oft übersehen wird. Läuft ein System längere Zeit mit abgeschaltetem SELinux, bekommen neue Dateien keine Labels mehr. Beim Wiedereinschalten passt dann nichts mehr zusammen, und es braucht ein vollständiges Neulabeln des Dateisystems, das je nach Datenmenge dauert und einen Neustart verlangt. Ab RHEL 9 reicht der Eintrag in /etc/selinux/config zum Abschalten ohnehin nicht mehr, dafür ist der Kernel-Parameter selinux=0 nötig, von dem Red Hat im Produktivbetrieb ausdrücklich abrät.

Booleans vor eigenen Regeln

Für die meisten Sonderfälle gibt es fertige Schalter. getsebool -a listet sie, setsebool -P setzt sie dauerhaft. Der Klassiker ist die Erlaubnis für den Webserver, selbst Netzverbindungen aufzubauen, etwa zu einer Datenbank oder einem API-Endpunkt. Bevor du ein eigenes Modul schreibst, lohnt sich immer die Suche, ob ein Boolean den Fall schon abdeckt.

Bleibt eine Lücke, erzeugt audit2allow aus den protokollierten Verweigerungen ein Policy-Modul. Das ist bequem und genau deshalb heikel: Wer die Ausgabe ungeprüft einspielt, erlaubt unter Umständen genau den Zugriff, den ein Angriff gerade versucht hat. Lies die Regel, bevor du sie lädst, und beschränke sie auf den Typ, um den es geht.

Denials lesen

Verweigerungen landen als AVC-Meldungen im Audit-Log. ausearch -m avc -ts recent holt die letzten heraus, und sealert übersetzt sie in eine Erklärung samt Vorschlag. Wer die Meldung selbst liest, achtet auf scontext, tcontext und tclass: Welcher Prozess wollte auf welches Objekt welcher Art zugreifen?

Nicht jede Blockade taucht auf. Für bekannte, unkritische Fälle enthält die Policy dontaudit-Regeln, die die Protokollierung unterdrücken. Wenn ein Problem unerklärlich wirkt, schaltet semodule -DB diese Unterdrückung vorübergehend ab.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Nicht verwechseln

SELinux und was oft damit gleichgesetzt wird

SELinux gegen Dateirechte und ACLs

Die klassischen Rechte kann der Eigentümer selbst vergeben. SELinux entscheidet darüber hinaus anhand einer zentral gepflegten Policy, die kein Benutzer eigenmächtig aufweichen kann.

SELinux gegen AppArmor

AppArmor arbeitet mit Profilen über Dateipfade und ist schneller eingerichtet. SELinux hängt die Regel am Label des Objekts, wirkt dadurch auch bei Umbenennungen und Verschiebungen, verlangt aber mehr Einarbeitung.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
In der Praxis

Abschalten löst dein Problem und schafft ein größeres

Der erste Reflex ist, in den erlaubenden Modus zu schalten, und danach läuft der Dienst. Die Ursache bleibt, und bei einer Distribution, die ihre Absicherung genau darauf aufbaut, fehlt damit eine ganze Schutzschicht. Ganz abschalten ist noch unangenehmer: Ohne SELinux bekommen neue und geänderte Dateien keine Kennzeichnung mehr, und beim Wiedereinschalten muss das gesamte Dateisystem neu gekennzeichnet werden, was auf großen Systemen einen langen Neustart bedeutet. Der erlaubende Modus ist der bessere Zwischenschritt, weil er weiter protokolliert.

Die typischen Auslöser sind immer dieselben drei. Daten liegen außerhalb des vorgesehenen Pfads, weil das Webverzeichnis auf eine größere Partition gewandert ist. Ein Dienst lauscht auf einem ungewöhnlichen Port. Oder eine Datei wurde verschoben statt kopiert und hat deshalb die Kennzeichnung ihres alten Orts behalten. Für alle drei gibt es den vorgesehenen Weg über die Verwaltung der Kontexte und Ports, statt eine eigene Regel zu schreiben.

Bevor du irgendetwas erlaubst, lies die Ablehnungen. Sie stehen im Prüfprotokoll und nennen den Prozess, das Ziel und die verweigerte Aktion, und die Übersetzungshilfe schlägt oft schon einen Schalter vor, der genau den gewünschten Fall abdeckt. Ein Durchlauf im erlaubenden Modus sammelt außerdem alle Ablehnungen auf einmal ein, sonst arbeitest du dich einzeln von Meldung zu Meldung.

SELinux lernen

Wie du Kontexte setzt, Booleans findest und Verweigerungen liest, ohne den Schutz abzuschalten, vermitteln die Kurse zu Red Hat Enterprise Linux an eigenen Übungssystemen.

Wissen prüfen

Sitzt SELinux schon?

Lesen fühlt sich schnell nach Können an. Ein kurzer Test zeigt dir, was davon schon sitzt und wo sich ein Kurs lohnt. Kostenlos, ohne Anmeldung, mit einer Erklärung zu jeder Antwort.

Der passende Lernpfad

Wenn du nicht nur ein Thema abhaken, sondern eine Rolle ausfüllen willst, zeigt dir der Lernpfad die Kurse in der Reihenfolge, in der sie aufeinander aufbauen.

Karrierepfad

Dein Weg zum Linux Junior Administrator (LPIC-1)

Du willst Linux im Arbeitsalltag sicher bedienen, Systeme zuverlässig verwalten und dich gezielt auf die LPIC-1 Prüfung vorbereiten? In diesem Lernpfad baust du Schritt für Schritt das Wissen auf, das du als Linux Junior Administrator brauchst: von der Kommandozeile über Benutzer- und Rechteverwaltung bis zu Netzwerkgrundlagen und Systemdiensten.

Häufige Fragen

Soll ich SELinux abschalten, wenn ein Dienst nicht startet?
Nein, und es ist auch selten nötig. Setz das System kurz auf permissive, sammle die AVC-Meldungen, korrigiere Kontexte oder setze das passende Boolean und geh zurück auf enforcing. Abschalten löst den Einzelfall und entfernt den Schutz für alles andere.
Was ist der Unterschied zwischen permissive und disabled?
In permissive prüft der Kernel weiter, protokolliert Verstöße und vergibt Labels korrekt, er blockiert nur nicht. In disabled findet nichts davon statt, deshalb ist die Rückkehr nach disabled aufwendig und braucht ein Neulabeln des Dateisystems.
Woran erkenne ich, dass wirklich SELinux blockiert?
Wenn die Dateirechte stimmen und der Zugriff trotzdem scheitert, schau ins Audit-Log nach AVC-Meldungen mit passendem Zeitstempel. Ein Gegentest in permissive bestätigt es endgültig, sollte aber nicht der Dauerzustand bleiben.
Persönlich für dich da

Deine Ansprechpartner

Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant Inhouse-Trainings, die an euren eigenen Daten und Abläufen ansetzen.

SELinux im Kurs statt im Lexikon

Nachschlagen bringt dich bis zum Verstehen. Anwenden lernst du an echten Aufgaben.