SELinux (Security Enhanced Linux) ist ein Zusatz für den Kernel, um damit stärkere Zugriffskontrollen auf bestimmte Ressourcen zu definieren. Für Kernel24 gibt es einen Patch, in Kernel26 ist SELinux direkt integriert.
Homepage: http://www.nsa.gov/selinux/ this link is down
Lizenz: GPL
Wozu ist SELinux gut
In einem herkömmlichen System gibt es sehr viele verschiedene Programme, die alle mit root-Rechten laufen müssen, um ihre Arbeit erledigen zu können, aber keine vollständigen Root-Rechte haben sollten (Wozu soll etwa der Apache Zugriff auf die Dateien des Mailspools haben?). SELinux basiert auf dem TE-Prinzip (Type Enforcement): alle Ressourcen werden bestimmten Domains zugeordnet, und darauf werden Zugriffsregeln definiert. Am einfachsten lässt sich das anhand von Dateien erklären.
Labels und Typen
Alle Dateien werden gelabelt, also einem bestimmter Domain zugeordnet (die Bezeichnungen "Domain" und "Typ" werden oftmals synonym gebraucht, in der offiziellen Dokumentation werden diese Begriffe erst gross erklärt, um dann danach anzumerken, dass beide Bezeichnungen eigentlich identisch seien und man deshalb im Allgemeinen "Typ" verwenden würde). Diese Zuordnungen werden in den erweiterten Attributen des Dateisystems gespeichert, deshalb läuft SELinux nur auf Systemen, deren DateiSysteme ErweiterteDateiAttribute unterstützen; derzeit machen das Ext2/3 und XFS. JFS und ReiserFS unterstützen diese geforderte Art der erweiterten Attribute (security attributes) allerdings noch nicht (Für ReiserFS gibt es experimentelle Patches).
Mit ReiserFS gibt es wohl Probleme, die sich nicht so einfach beheben lassen: http://www.redhat.com/archives/fedora-devel-list/2004-August/msg01014.html
Damit können beispielsweise alle Dateien, die zum Apache gehören, dem Typ "apache_t" zugeordnet werden. Das Apache-Binary wird ebenfalls in diese Domain gesteckt. Wenn der Rest des Systems richtig aufgesetzt ist, dann kann der Apache nur noch auf die Daten zugreifen, die in seiner Domain liegen; jeglicher Zugriff auf Dateien, die innerhalb anderer Domains liegen (also zum Beispiel "postfix_t"), wird vom Kernel unterbunden.
Natürlich können die Domains beliebig detailliert und verfeinert werden, allerdings steigt damit natürlich der Aufwand, die Policy (also grob die Zuordnung "Dateien - Domain" und die Regeln für die Zugriffe über Domaingrenzen hinweg) zu pflegen, leicht ins Unermessliche.
Distributionen
Fedora Linux hat seit dem Release FC2 SElinux-Unterstützung eingebaut (aber per Default abgeschaltet, da zuviele User damit Probleme hatten). Seit Fedora Core 3 ist SELinux in der Standardinstallation aktiviert. Die Unterstützung für SELinux wurde auch in Red Hat Enterprise Linux 4 übernommen. Auch für Debian werden immer wieder Patches ins Policy-Repository eingespielt, ein Einsatz damit dürfte aber erheblich schwieriger sein als mit Fedora. Gentoo bietet im Rahmen des Hardend Gentoo auch Unterstützung für selinux an. OffeneFrage: Der Status von Mandriva und SuSE bezüglich SElinux ist unbekannt (auch wenn SuSE 9.1 verschiedenen Anzeichen zufolge schon Support in den Paketen eingebaut hat). SuSE 11.1 unterstützt laut c't vom 5. Jänner 2009 SELinux.
http://selinux.org/ - BastianBlank hat eine Mailingliste aufgesetzt, um die Arbeiten auf Debian-Seite wieder voran zu bringen.
Fedora enthält SELinux-Unterstützung.
- Red Hat Enterprise Linux enthält SELinux-Unterstützung.
"Hardened Gentoo", davon gibt es auch eine Live-CD zum Runterladen
Links
http://securityenhancedlinux.de/ Carsten Grohmanns Seite (mit Wiki) (de/en)
http://selinux.lemuria.org/ Tom Vogts Seite (en)
http://www.coker.com.au/selinux/ Russell Cokers Seite (Mirror: http://selinux.lemuria.org/coker/) (en)
Colin Walters Vortrag zu GNOME und SELinux (Theora-Video, z.B. mit HelixPlayer betrachten)
SELinux Tutorial für Debian von Online-tutorials.net