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
SELinux und was oft damit gleichgesetzt wird
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.
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
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.
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.
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.
Der Einstieg
System und Netzwerk
Häufige Fragen
Soll ich SELinux abschalten, wenn ein Dienst nicht startet?
Was ist der Unterschied zwischen permissive und disabled?
Woran erkenne ich, dass wirklich SELinux blockiert?
Deine Ansprechpartner
Du willst das Thema nicht nur nachschlagen, sondern anwenden können? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Ordnet mit dir ein, welcher Kurs zu deinem Vorwissen passt.
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.