Was ist SELinux?

SELinux steht für Security-Enhanced – also „sicherheitsverbessertes“ – Linux. Linux ist im Grunde ein Betriebssystem wie Windows, Android oder iOS – mit dem Unterschied, dass hinter der Entwicklung von Linux kein einzelnes Unternehmen steht, sondern dass Linux von vornherein als Open-Source-Projekt geplant war. Der „Kern“ von Linux ist der sogenannte Linux-Kernel, dessen Sourcecode allen Entwicklern offensteht – sowohl für Non-Profit- als auch für kommerzielle Projekte. Aufbauend auf dem Linux-Kernel gibt es dann verschiedene auf Linux basierende Betriebssysteme, allgemein als Distributionen bezeichnet. Einige der bekanntesten Linux-Distributionen sind Ubuntu, Debian oder Fedora.

Was bedeutet „Security-Enhanced“ konkret?

Der Code des Linux-Kernels wird von Unternehmen, Freiwilligen und Non-Profit-Organisationen ständig weiterentwickelt. Security-Enhanced Linux ist eine solche Erweiterung des Linux-Kernels, die in Form eines eigenen Sicherheitsmoduls verfügbar ist. Bereits seit 2003 ist SELinux offizieller Bestandteil des Linux-Kernels. Einige Linux-Distributionen bieten SELinux standardmäßig an, das Modul lässt sich aber auch einfach abschalten. SELinux unterstützt Administratoren dabei, eine strikte Kontrolle über alle Prozesse auf ihrem System zu erlangen. Nicht als notwendig erachtete Prozesse werden blockiert. Die Gefahr, die von Sicherheitslücken in Anwenderprogrammen ausgeht, wird mit SELinux stark reduziert.

Es ist selbst dann sinnvoll, Zugriffsrechte zu beschränken, wenn man den Programmen eigentlich vertraut. Sollte die Anwendung mal durch Dritte gekapert werden, kann sehr viel weniger Schaden entstehen. Können durch Malware infizierte Programme auf alle Prozesse und Dateien eines Systems zugreifen, werden sie das auch ausnutzen. SELinux beschränkt den Zugriff und damit auch den Schadensradius.

Strikte Zugangskontrollen zum Betriebssystem

SELinux bietet eine spezielle Sicherheitsarchitektur auf Grundlage der Prinzipien der Mandatory Access Control (MAC). Im Gegensatz zum herkömmlichen Linux-Kernel werden bei SELinux die Zugriffe auf Prozesse und Dateien des Betriebssystems prinzipiell auf das Nötigste beschränkt. Durch eine strikte Zugriffskontrollstrategie und entsprechende Sicherheitsrichtlinien soll gewährleistet werden, dass Vertraulichkeit und Integrität der Informationen gewahrt bleiben. Anwenderprogramme und das Betriebssystem werden bei SELinux klar voneinander abgegrenzt.

Wie werden bei SELinux Zugriffsrechte beschränkt?

Herkömmliches Linux verwendet als Zugangskontrolle die Discretionary Access Control (DAC). Nutzer bzw. Anwendungen, die mit entsprechenden Rechten ausgestattet sind, haben dann in der Regel uneingeschränkten Zugriff auf die jeweiligen Dateien und Prozesse des Betriebssystems. Bei der von SELinux verwendeten Mandatory Access Control legt ein Administrator über genau definierte Sicherheitsrichtlinien zusätzlich Attribute fest, unter welchen Bedingungen und in welchen Zusammenhängen ein Rechteinhaber auf bestimmte Prozesse oder Dateien des Betriebssystems zugreifen kann. Sind diese Bedingungen oder Zusammenhänge (sprich: Attribute) nicht gegeben, wird der Zugriff verweigert.

Zur Regulierung vergibt man bei SELinux verschiedene Label:

  • User
  • Role
  • Type
  • Level

Diese Label können für jeden Prozess und jede Datei gesetzt und dann in die definierten Richtlinien aufgenommen werden. So darf eine Anwendung beispielsweise nur auf Ordner zugreifen, die ein bestimmtes Label haben. Die Überprüfung der Richtlinien nennt man SELinux Enforcement.

Vor- und Nachteile von SELinux

Der Missbrauch von Nutzerrechten, wie er bei Anwenderprogrammen mit Sicherheitslücken vorkommen kann, wird mit SELinux erschwert bzw. verhindert – das Betriebssystem ist entsprechend gut geschützt. Linux-Distributoren bieten das Modul SELinux mit unterschiedlichen Policy-Paketen und entsprechenden Sicherheitsrichtlinien an. Das vereinfacht die Konfiguration der Sicherheitsschicht. Berechtigte Administratoren können die Sicherheitsrichtlinien auch eigenständig definieren.

SELinux verhilft Administratoren zwar zu wesentlich mehr Kontrolle über Prozesse auf ihren Systemen, die Lösung von Problemen erleichtert das Programm aber nur bedingt. Wird ein Zugriff blockiert, wirft SELinux eine Fehlermeldung aus, die sehr vage sein kann – was die direkte Fehlersuche erschwert. SELinux ist zudem ein relativ komplexes Modul. Vielen Administratoren ist die Auseinandersetzung mit Sicherheitsrichtlinien und die Festlegung von Attributen zu kompliziert oder zu viel Aufwand. Dazu kommt, dass SELinux die Leistungsfähigkeit des Betriebssystems geringfügig senkt.

Fazit

SELinux ist ein sehr wirkungsvolles Sicherheitswerkzeug. Es erfordert aber auch einiges an zusätzlicher Arbeit. Nur wenn man den Aufwand der Konfiguration nicht scheut, kann die Software wirken. Ist das System nur halb eingestellt, geht der Nutzen gen Null. Für professionelle Umgebungen mit sensiblen Daten empfiehlt sich der Einsatz aber sehr.

Wie ist SELinux entstanden?

SELinux wurde maßgeblich vom US-amerikanischen Geheimdienst NSA und dem Linux Distributor Red Hat entwickelt. Red Hat Enterprise Linux 4 und die von Red Hat unterstützte Linux-Distribution Fedora waren die ersten Betriebssysteme, die mit voller SELinux-Unterstützung angeboten wurden. Neben Red Hat und Fedora bietet auch Gentoo Hardened Linux relativ umfassenden SELinux-Support. Eine Alternative zu SELinux ist das Sicherheitsmodul AppArmor, das vor allem von Distributionen wie openSUSE oder Debian-basierten Plattformen unterstützt wird.