Definition

SELinux (Security-Enhanced Linux)

Was ist SELinux (Security-Enhanced Linux)?

SELinux (Security-Enhanced Linux) ist ein Teil des Linux-Kernels, der als Schutzmechanismus für das Betriebssystem dient. Im Linux-Kernel ist SELinux ein Mechanismus für die obligatorische Zugriffskontrolle (MAC, Mandatory Access Control), der Programme durch Regeln und Richtlinien einschränkt, die vom Systemadministrator festgelegt werden.

SELinux wurde ursprünglich von der Nation Security Agency (NSA) entwickelt und im Jahr 2000 veröffentlicht.

MAC ist eine höhere Ebene der Zugriffskontrolle als die standardmäßige diskretionäre Zugriffskontrolle (DAC), die ursprünglich Teil von Linux war. Sie verhindert Sicherheitsverletzungen im System, indem sie Prozesse so einschränkt, dass sie nur auf Dateien, Daten und andere Ressourcen zugreifen können, die der Administrator vorab genehmigt hat.

Das SELinux-Projekt wurde nach der ursprünglichen Entwicklung durch die NSA dann von Red Hat weitergeführt. SELinux erhält regelmäßige Aktualisierungen und Ergänzungen, wenn neue Linux-Distributionen veröffentlicht werden. Die zum Redaktionsschluss im März 2025 aktuelle Version von SELinux ist 3.8.1. Der SELinux-Kernel trennt Richtlinien und Entscheidungen innerhalb des Kernels, um Schutzebenen zu verteilen und einen vollständigen Sicherheitsverstoß zu verhindern.

Abbildung 1: SELinux ist ein obligatorischer Zugriffskontrollmechanismus, eine höhere Stufe der Zugriffskontrolle als die diskretionäre Zugriffskontrolle von Linux.
Abbildung 1: SELinux ist ein obligatorischer Zugriffskontrollmechanismus, eine höhere Stufe der Zugriffskontrolle als die diskretionäre Zugriffskontrolle von Linux.

SELinux arbeitet nach dem Least-Privilege-Modell. Es gewährt nur dann Zugriff, wenn der Administrator eine spezifische Richtlinie dafür schreibt. Das ist als Teil des LSM-Frameworks (Linux Security Module) implementiert, das in den Linux-Kernel eingebunden ist. Da SELinux zusätzlich zur traditionellen Linux-Sicherheitskontextdurchsetzung existiert, kann es sogar einen kompromittierten Root-Benutzer am Zugriff auf geschützte Daten hindern.

Fedora war eine der ersten Distributionen, die SELinux standardmäßig ab Fedora Core 2 integriert hat. Debian unterstützt SELinux seit Version 9 Stretch. Ubuntu bietet seit Version 8.04 Hardy Heron Unterstützung für SELinux. openSuSE Tumbleweed hat am 11. Februar 2025 SELinux als Standard-MAC-System für neue Installationen übernommen.

SELinux wird am besten in Hochsicherheitsumgebungen eingesetzt, in denen Anwendungen und zugehörige Daten getrennt gehalten werden müssen. Einige Beispiele für den Einsatz von SELinux sind öffentlich zugängliche Server, Cloud-Server, Container-Workloads und der Einsatz bei Behörden. Da die Einrichtung und Validierung der Zugriffsrichtlinien zusätzliche Arbeit erfordert, ist es für die Verwendung zu Hause oder am Arbeitsplatz nicht unbedingt zu empfehlen.

Abbildung 2: SELinux arbeitet nach dem Prinzip der geringsten Privilegien.
Abbildung 2: SELinux arbeitet nach dem Prinzip der geringsten Privilegien.

Wie funktioniert SELinux?

Bei einer SELinux-Prüfung gibt es drei Hauptkomponenten: das Subjekt, das Objekt und den Sicherheitsserver.

  • Das Subjekt ist der Prozess oder der ausführbare Code, der die Anfrage zum Zugriff auf eine Ressource stellt.
  • Das Objekt ist die Systemressource, auf die das Subjekt zugreift. Das kann eine Datei, eine Hardwareressource oder ein Netzwerkanschluss sein.
  • Der Sicherheitsserver ist die SELinux-Komponente, die die Zugriffsrichtlinie und den Kontext verwendet, um den Zugriff zu genehmigen oder zu verweigern. Der Sicherheitsserver kann auf dem System ausgeführt werden oder ein anderer Server sein, auf den aus der Ferne zugegriffen wird.
  • Ein Zugriffsvektor-Cache (AVC) wird verwendet, um die Entscheidungen des Sicherheitsservers zu speichern und schneller abrufen zu können.

Was ist eine SELinux-Kennzeichnung?

Ein SELinux-Label ist die Information, die jedem Subjekt und Objekt zugeordnet ist. Die Kennzeichnungen werden anhand der Sicherheitsrichtlinien ausgewertet, um festzustellen, ob der Zugriff gewährt oder verweigert werden sollte. Das Label besteht aus vier Komponenten: Benutzer, Rolle, Typ und Bereich (Empfindlichkeit oder Kategorie).

  • Der Benutzer ist der SELinux-Benutzername und endet oft auf _u. Der SELinux-Benutzer entscheidet sich vom Linux-Benutzer, aber es kann zu Überschneidungen kommen. Einige Konfigurationen verwenden möglicherweise nur einen einzigen SELinux-Benutzer.
  • Die Rolle ist die erwartete Aufgabe des SELinux-Benutzers und endet oft auf _r. Einige Beispielrollen können Administrator, Benutzer oder Datenbankadministrator sein. Das wird im rollenbasierten Zugriffskontrollmodus verwendet.
  • Der Typ ist der wichtigste Teil der SELinux-Berechtigungen und endet oft auf _t. Der Typ kann auch als Domäne bezeichnet werden. Mose-SELinux-Implementierungen verwenden den Typ nur, um die Zugriffsrichtlinie zu bestimmen. Der unbestimmte Typ ist oft die Rolle, die die SELinux-Richtlinien zuweisen kann.
  • Der Empfindlichkeitsbereich ist ein optionaler Wert, ausgedrückt als s und eine Zahl, die im MLS-Modus (Multi Level Security) verwendet wird. Er drückt die Empfindlichkeit einer Ressource aus – basierend auf dem Zugriff des Subjekts, niedrigeren Empfindlichkeitsstufen, höheren numerischen Werten und Objekten.
  • Die Kategorie ist ein optionaler Wert, der im Multi-Category-Security-Modus (MCS) verwendet wird. Der MCS-Modus ähnelt dem MLS-Modus, wird aber dort verwendet, wo es keine Hierarchie gibt, wie zum Beispiel bei Container- oder Virtualisierungs-Workloads.

Ein Beispiel für ein SELinux-Objektlabel für das Verzeichnis \home ist system_u:object_r:home_root_t:s0.

Wichtige Linux-Distributionen
Abbildung 3: Als Teil des Linux-Kernels ist SELinux ein Schutzagent im Betriebssystem, der bei Aktualisierungen und Ergänzungen von Linux-Distributionen aktualisiert wird.

Was sind die SELinux-Modi?

Es gibt drei Modi von SELinux: Enforcing, Permissive und Disabled.

  • Der Enforcing-Modus (erzwingen) ist der Standardmodus bei der Installation von SELinux. Er setzt die Richtlinien auf dem System durch, verweigert den Zugriff und protokolliert Aktionen.
  • Der Permissive-Modus (erlaubt) wird hauptsächlich für das Troubleshooting und die Konfiguration von SELinux verwendet. In diesem Modus aktiviert und evaluiert SELinux die Sicherheitsrichtlinien, setzt sie aber nicht durch. Das bedeutet, dass Aktionen zu einer Warnung und einem Protokoll für den Systemadministrator führen. Der Modus Permissive kann verwendet werden, um zu prüfen, ob eine vorgeschlagene Sicherheitsrichtlinie keine Probleme auf dem System verursacht, bevor sie durchgesetzt wird.
  • Der Disabled-Modus (deaktiviert) bedeutet, dass SELinux ausgeschaltet ist und die Sicherheitsrichtlinien den Server nicht schützen.

Zusätzlich zu den bereits erwähnten Modi bietet SELinux in einigen Distributionen den MLS-Modus (Multi-Level Security), der eine feinere Kontrolle über die Zugriffsebene ermöglicht.

AppArmor und SELinux im Vergleich

Der Hauptkonkurrent von SELinux, AppArmor, ist auf SUSE Linux Enterprise Server (SLES), openSUSE und anderen Plattformen verfügbar. AppArmor baut auf DAC auf und macht es sicherer und obligatorisch. SELinux hingegen ist ein völlig eigenständiges System, das die bereits vorhandenen Dateizugriffskontrollen nicht nutzt.

Während SELinux das System zur Durchsetzung von Typen verwendet, um Sicherheit auf den Servern zu gewährleisten, weist AppArmor keine Typen zu und verwendet stattdessen Konfigurationsdateien, um den Zugriff zu gewähren, einzuschränken und zu verweigern.

SELinux auf Android

Android basiert auf Linux und verwendet SELinux als Sicherheitsmechanismus. Er wurde erstmals in Android ab Version 4.3 eingeführt und ab Version 5.0 vollständig durchgesetzt. SELinux ist für das gesamte Sicherheitsmodell von Android wichtig, da es dazu dient, die verschiedenen Systemprozesse und Anwendungen zu trennen und zu verhindern, dass sie Daten lesen können, auf die sie keinen Zugriff haben sollten.

Der SELinux-Erzwingungsmodus wird in Android verwendet, um zu verhindern, dass Anwendungen direkt auf private Daten in anderen Anwendungen oder andere Systemressourcen zugreifen können. Wenn SELinux beispielsweise deaktiviert oder auf Permissive eingestellt ist, könnte eine böswillige App problemlos auf eine geschützte Banking-App oder Standortdaten zugreifen.

SELinux in RHEL 7.3

In Red Hat Enterprise Linux (RHEL) 7.3 hat Red Hat SELinux durch eine erweiterte Richtlinienkontrolle für Administratoren erheblich verbessert. Administratoren können jetzt ein benutzerdefiniertes Modul mit einer höheren Priorität als das ursprüngliche Systemmodul erstellen. Diese neue Funktion ermöglicht es der IT-Abteilung, das Systemmodul außer Kraft zu setzen und anpassbare Funktionen auf dem Server zu platzieren, die Vorrang haben.

Diese Definition wurde zuletzt im März 2025 aktualisiert

Erfahren Sie mehr über Identity and Access Management (IAM)