Benutzer:Tscherf/SELinux

aus Wikipedia, der freien Enzyklopädie

SELinux (Security-Enhanced Linux, dt. sicherheitsverbessertes Linux) ist eine Erweiterung des Linux-Kernels, die den Versuch darstellt, das FLASK-Konzept der NSA umzusetzen. Als Betriebssystem kommt hier der quelloffene Linux-Kernel zum Einsatz. Es implementiert die Zugriffskontrollen auf Ressourcen im Sinne von Mandatory Access Control. Andere MAC-basierte Systeme sind beispielsweise trusted Solaris oder trustedBSD .

SELinux wird maßgeblich von der NSA und von dem Linux-Distributor Red Hat entwickelt. Unternehmen wie Network Associates, Secure Computing Corporation, und Tresys sind ebenfalls an der Arbeit an SELinux beteiligt, besonders Tresys übernimmt vermehrt Aufgaben am Projekt.

Integration in Linux-Kernel

SELinux setzt sich aus einer Erweiterung des Linux-Kernels und aus zahlreichen Erweiterungen für Systemprogramme zusammen. Für Kernel 2.4.x gibt es einen Patch, in Kernel 2.6.x (ab 2.6.0-test3) ist SELinux direkt integriert. Die Linux-Distribution Fedora (ein durch Red Hat gesponsertes Projekt) ist die erste Distribution, die von Haus aus SELinux-Unterstützung mitliefert. Fedora Core 3 und Red Hat Enterprise Linux 4 wurden als erste Distributionen mit voller SELinux-Unterstützung ausgeliefert. Mittlerweile ist es ebenfalls fester Bestandteil von Hardened Gentoo, Debian Etch und openSuse. Unter Ubuntu ist es in der Version 8.04 über die Paketverwaltung nachinstallierbar, seit Ubuntu Version 9.04 ist es standardmäßig enthalten und aktiviert. Die Implementierung für Slackware ist noch in Arbeit.

Funktionsweise

Auf SELinux basierten Systemen findet eine Zugriffsentscheidung nicht anhand von Datei- oder Prozessnamen statt. Stattdessen arbeitet man in einem zentralen Regelwerk mit sogenannten Objekten und Subjekten. Dabei stellen die Ressourcen auf die man zugreift die Objekte dar, also beispielsweise Dateien oder Netzwerkports. Der Zugriff erfolgt durch die entsprechenden Subjekte, Prozesse oder Benutzer. Ist ein Zugriff anhand einer Regel explizit aufgeführt, so ist dieser gestattet. Ansonsten ist der Zugriff verboten und wird entsprechend in den Logs festgehalten.

Regelwerke

Für das Festlegen der Regeln gibt es eine sogenannte, von der Firma Tresys herausgegebene, Policy. Die meisten Distributionen bieten spezielle Policy-Pakete an. Dabei kommen die folgenden SELinux-Implementierungen zum Einsatz:

  • Type-Enforcement (TE)
  • Role-Based-Access-Control (RBAC)
  • Multi-Level-Security (MLS)
  • Multi-Category-Security (MCS)

Werkzeuge

Neben den offiziellen SELinux-Werkzeugen existieren zahlreiche nützliche Werkzeuge, die das Arbeiten mit SELinux erleichtern.

Setroubleshoot benachrichtigt über ein Task-Symbol über durchgesetzte Beschränkungen von Programmen und stellt auf Anfrage zusätzliche Informationen wie auch mögliche Lösungsvorschläge bereit, um das Problem zu beheben. SLIDE ist eine IDE für die Entwicklung der Richtlinie, die in Form einer Eclipse-Erweiterung veröffentlicht wird. Das Programm apol ist für die Analyse von Richtlinien zuständig. Mit Hilfe von sepolgen bzw. der grafische Variante system-config-selinux, existiert auf Fedora- und Red Hat-Systemen ein Tool mit dem man recht einfach eigene Richtlinien entwickeln kann. Beide Tools erzeugen die notwendigen Quellcode-Dateien aus denen sich im Anschluss ein binäres Policy-Packet bauen lässt.

Kritik

SELinux wird oft kritisiert, dass es viel zu komplex sei, um von normalen Benutzern administriert werden zu können. Hierbei muss man sicherlich zwischen der Administration eines SELinux-basierten Systems und der Entwicklung eigener Richtlinien unterscheiden. Die Administration stellt mit den heute verfügbaren Tools kein grosses Problem mehr dar, so dass auch weniger versierte Benutzer ein solches System verwalten können. Gerade das oben genannte Tool Setroubleshoot hilft auf vielfältige Weise durch den möglichen Dschungel von Fehlermeldungen. Wer eigene Richtlinien entwickeln möchte, der muss sich weiterhin tiefer in die Materie einarbeiten. Aber auch hier bieten die genannten Tools eine enorme Hilfestellung.


Siehe auch

Weblinks

--Tscherf 18:01, 8. Dez. 2009 (CET)