Kapitel 21. SELinux

Security-Enhanced Linux oder SELinux ist eine Sicherheitsarchitektur integriert im Kernel 2.6.x unter Verwendung der Linux Security Modules (LSM). Es handelt sich dabei um ein Produkt der National Security Agency (NSA) der amerikanischen Regierung und der SELinux Gemeinschaft. Die Integration von SELinux in Red Hat Enterprise Linux ist ein gemeinschaftliches Projekt der NSA und Red Hat.

21.1. Einführung in SELinux

SELinux bietet ein flexibles Mandatory Access Control (MAC) System (regelbasierte Zugriffskontrolle), welches im Linux Kernel eingebaut ist. Unter Standard-Linux Discretionary Access Control (DAC - objektbezogene Zugriffskontrolle), besitzt eine Applikation oder auch ein Prozess, als Benutzer ausgeführt (UID oder SUID), die Benutzer-Berechtigungen zu Objekten wie Dateien, Sockets oder anderen Prozessen. Ein SELinux MAC Kernel schützt das System vor böswilligen oder fehlerhaften Applikationen, die das System beschädigen oder zerstören könnten. SELinux legt die Zugriffsrechte und Transitionsrechte jeden Benutzers, jeder Applikation, jeden Prozesses und jeder Datei auf dem System fest. SELinux regelt somit Subjekte (Prozesse) und Objekte (zB. Dateien, Verzeichnisse, Sockets, IPCs, etc.), die eine Security Policy verwenden, wodurch festlegt wird, wie strikt oder nachsichtig eine gegebene Installation von Red Hat Enterprise Linux sein sollte.

Größtenteils ist SELinux beinahe völlig unsichtbar für den Systembenutzer. Nur Systemadministratiorn müssen sich darüber den Kopf zerbrechen wie strikt eine Policy für deren Server-Umgebung implementiert werden muss. Die Policy kann so strikt oder auch nachsichtig sein, wie in jedem Fall notwendig und ist generell eine sehr feinkörnig einstellbare Zugriffssteuerung. Dieser Umstand gibt dem SELinux-Kernel gänzliche und feinkörnige Kontrolle über das gesamte System.

Wenn ein Subjekt, wie zB. eine Applikation versucht auf ein Objekt wie zB. eine Datei zuzugreifen, so überprüft der Policy Enforcement Server im Kernel einen Access Vector Cache (AVC), wo Subjekt- und Objekt-Berechtigungen gecacht sind. Wenn keine Entscheidung basierend auf den Daten im AVC getroffen werden kann, so geht die Anfrage an den Sicherheitsserver weiter, welcher den Security Context der Applikation and der Datei in einer Matrix nachschlägt. Die Zugangserlaubnis wird sodann gewährt oder verweigert mit einer detaillierten avc: denied-Mitteillung in /var/log/messages. Subjekte und Objekte erhalten deren Security Context von der installierten Security Policy, welche ebenso die Information enthält, welche zur Einstellung der Matrix des Sicherheitsservers benötigt wird.

Zusätzlich zum Enforcing Mode (Regelsatz erlaubt und verweigert Zugriffe), kann SELinux auch in einem Permissive Mode ablaufen, wobei alle Zugriffe unabhängig vom Regelsatz von SELinux gewährt werden und alle Verstöße protokolliert werden.

Für weitere Informationen zur Arbeitsweise von SELinux siehe Abschnitt 21.3.