Anmelden / Registrieren Konto

Linux

Was ist SELinux und wie funktioniert es

Security-Enhanced Linux (SELinux) ist eine Sicherheitsarchitektur für Linux®-Systeme, die Administratoren noch mehr Kontrolle darüber bietet, wer auf das System zugreifen darf. Es wurde ursprünglich von der US-amerikanischen NSA (National Security Agency) in mehreren Patches entwickelt, die mit LSM (Linux Security Modules) auf den Linux Kernel angewendet wurden.

SELinux wurde im Jahre 2000 für die Open Source Community freigegeben und 2003 in den Linux Upstream Kernel integriert.


Wie funktioniert SELinux?

SELinux definiert Zugangskontrollen für Anwendungen, Prozesse und Dateien eines Systems. Dabei nutzt es Sicherheitsrichtlinien, die aus mehreren Regeln bestehen und den Zugriff je nach Richtlinie gewähren oder verweigern.

Wenn eine Anwendung/ein Prozess, auch Subjekt genannt, den Zugriff für ein Objekt (wie eine Datei) anfordert, prüft SELinux per AVC (Access Vector Cache), wo die Berechtigungen für die Subjekte und Objekte im Cache gespeichert werden.

Wenn SELinux auf der Basis der im Cache gespeicherten Berechtigungen keine Entscheidung über den Zugriff treffen kann, leitet es die Anfrage an den Sicherheitsserver weiter. Der wiederum prüft den Sicherheitskontext der Anwendung/des Prozesses und der Datei. Dieser Sicherheitskontext wird aus der SELinux-Richtliniendatenbank vorgegeben. Und auf dieser Grundlage wird die Berechtigung entweder erteilt oder abgelehnt.

Bei einer Ablehnung wird unter /var/log.messages eine „avc: denied“-Meldung gespeichert.

Wie wird SELinux konfiguriert?

SELinux lässt sich auf verschiedene Arten für den Schutz Ihres Systems konfigurieren. Die beiden gängigsten Methoden sind die gezielte Richtlinie oder die Multi-Level-Sicherheit (MLS).

Die gezielte Richtlinie ist die Standardoption und deckt eine Reihe von Prozessen, Aufgaben und Services ab. Die Multi-Level-Sicherheit kann sehr komplex sein und wird üblicherweise von Regierungsbehörden eingesetzt.

Mithilfe der Datei /etc/sysconfig/selinux können Sie bestimmen, welche Option Ihr System ausführen sollte. Dort ist in einem Abschnitt angegeben, ob sich SELinux im sogenannten Permissive-/Enforcing-Modus befindet oder deaktiviert ist und welche Richtlinie geladen werden muss.

SELinux Labeling und Type Enforcement

Dies sind die beiden wichtigsten Konzepte für SELinux.

SELinux fungiert als Labeling-System, das heißt, alle Dateien, Prozesse und Ports eines Systems sind mit einem SELinux-Label versehen. Solche Labels sorgen für eine logische Gruppierung. Der Kernel verwaltet diese Labels während des Boot-Vorgangs.

Die Labels selbst haben das Format user:role:type:level (wobei „level“ optional ist). „user“, „role“ und „level“ werden in komplexeren Implementierungen von SELinux (wie mit MLS) verwendet. Der Label-Typ ist der wichtigste Bestandteil der gezielten Richtlinie.

SELinux nutzt Type Enforcement, um die für das System definierte Richtlinie durchzusetzen. Type Enforcement ist Teil einer SELinux-Richtlinie, die bestimmt, ob ein Prozess, der mit einem bestimmten Typ ausgeführt wird, auf eine Datei mit einem bestimmten Typen-Label zugreifen kann.

SELinux-Aktivierung

Wenn SELinux in Ihrer Umgebung deaktiviert ist, können Sie es aktivieren, indem Sie /etc/selinux/config bearbeiten und „SELINUX=permissive“ konfigurieren. Wenn SELinux zuvor noch nicht aktiviert war, sollten Sie es nicht gleich in den Enforcing-Modus versetzen, da das System höchstwahrscheinlich noch über Objekte mit falschem Label verfügt, die den Systemstart verhindern können.

Sie können eine automatische Neukennzeichnung des Dateisystems (Re-Label) erzwingen, indem Sie im Root-Verzeichnis eine leere Datei namens .autorelabel erstellen und einen Neustart durchführen. Wenn das System zu viele Fehler aufweist, sollten Sie das System im Permissive-Modus neu starten, damit dieser erfolgreich ist. Nachdem alle Label neu vergeben wurden, konfigurieren Sie SELinux für den Enforcing-Modus, indem Sie /etc/selinux/config einstellen und neu starten oder setenforce 1 ausführen.

Wenn Ihr Systemadministrator nicht mit Befehlszeilen vertraut ist, kann er für die Verwaltung von SELinux die grafischen Tools verwenden.

SELinux bietet eine zusätzliche Sicherheitsschicht für Ihr System, die in die Linux-Distributionen integriert ist. Sie sollte aktiviert bleiben, damit Ihr System vor unerlaubten Zugriffen geschützt ist.


DAS (Discretionary Access Control) im Vergleich zu MAC (Mandatory Access Control)

Traditionell wird für Linux- und UNIX-Systeme DAC verwendet. SELinux ist ein Beispiel eines MAC-Systems für Linux.

Mit DAC werden den Dateien und Prozessen Eigentümer zugeordnet. Das können Nutzer, Gruppen oder andere Personen sein. Nutzer können die Berechtigungen für ihre eigenen Dateien konfigurieren.

Der root-Nutzer besitzt in einem DAC-System die vollständige Kontrolle über alle Zugriffe. Wenn Sie root-Zugriff haben, können Sie auf die Dateien anderer Nutzer zugreifen und im System beliebige Aktionen ausführen.

Bei MAC-Systemen wie SELinux aber werden Zugriffe über vom Administrator konfigurierte Richtlinien geregelt. Und auch wenn die DAC-Einstellungen Ihres Stammverzeichnisses geändert werden sollten, verhindert dann eine vorhandene SELinux-Richtlinie, dass andere Nutzer oder Prozesse auf das Verzeichnis zugreifen können, und das System bleibt geschützt.

Mit SELinux-Richtlinien können Sie spezifische Einstellungen konfigurieren und eine große Anzahl von Prozessen abdecken. So können Sie Änderungen mit SELinux vornehmen, die Zugriffe zwischen verschiedenen Nutzern, Dateien, Verzeichnissen usw. beschränken.


Umgang mit SELinux-Fehlern

Wenn SELinux einen Fehler meldet, gibt es dafür einen Grund. Höchstwahrscheinlich ist es einer der vier Folgenden:

  1. Die Labels sind falsch: Ist ein Label falsch, können Sie dies mithilfe der Tools korrigieren.
  2. Eine Richtlinie muss korrigiert werden: Das kann bedeuten, dass Sie SELinux über vorgenommene Änderungen informieren oder eine Richtlinie anpassen müssen. Dies kann mit Booleans oder Richtlinienmodulen erfolgen.
  3. In der Richtlinie ist ein Bug vorhanden: Die Richtlinie enthält möglicherweise einen Bug, der behoben werden muss.
  4. Es liegt ein unerlaubter Systemzugriff vor: Auch wenn SELinux Ihre Systeme in vielerlei Szenarien schützt, lassen sich unerlaubte Zugriffe nie hundertprozentig ausschließen. Wenn Sie einen unerlaubten Zugriff vermuten, müssen Sie sofort handeln.

Was sind Booleans?

Darunter versteht man die Einstellungen für die Aktivierung/Deaktivierung von SELinux-Funktionen. Davon gibt es Hunderte, die zum Großteil vordefiniert sind. Sie können herausfinden, welche das sind, indem Sie den Befehl getsebool -a ausführen.

Linux hat noch viel mehr zu bieten