SELinux
Die Sicherheit von Betriebssystemen basiert unter anderem auf einem Rechtemodell, das entscheidet welcher Benutzer und welcher Prozess auf welche Dateien zugreifen, Netzwerkverbindungen öffnen oder Hardware verwenden darf. Genau hier setzt Security Enhanced Linux (SELinux) an und erweitert das traditionelle Discretionary Access Control um ein aufwendiges Mandatory Access Control.
Traditionell verwenden Linux- und andere Unix-Systeme DAC (Discretionary Access Control). Hier werden den Dateien und Prozessen Eigentümer zugeordnet, die wiederum die Berechtigungen für ihre eigenen Dateien konfigurieren. Der root-Nutzer besitzt hierbei die vollständige Kontrolle über alle Zugriffe.
Mandatory Access Control
SELinux setzt zusätzlich auf MAC (Mandatory Access Control). Hier gibt der Administrator mit Richtlinien sehr detailliert vor, welche Zugriffe erlaubt sind und welche nicht. Selbst wenn ein Benutzer versehentlich seine DAC-Rechte zu freigiebig setzt, kann MAC gefährliche Zugriffe unterbinden, um das System zu schützen. Wenn ein Prozess (auch Subjekt genannt) den Zugriff für ein Objekt (etwa eine Datei) anfordert, prüft SELinux, ob dieser Zugriff den Richtlinien entsprechend erlaubt ist.
Da die Richtliniendatenbank sehr umfangreich sein kann, gibt es mit dem AVC (Access Vector Cache) einen Zwischenspeicher, der die Berechtigungen für Subjekte und Objekte sehr schnell ermittelt. 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 im Userspace arbeitet und die Richtlinien passend zum jeweiligen Sicherheitskontext auswertet.
Security-Enhanced Linux 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 Upstream-Kernel integriert.
Funktionen und Vorteile
- Feingranulare Kontrolle, welche Zugriffe erlaubt sind und welche nicht
- Zentrale Regeln statt Zugriffsmuster bei jeder einzelnen Datei
- Alternativ auch Multi-Level-Sicherheit (MLS) konfigurierbar
- Auch die Rechte des Root-Users lassen sich beschränken
- Labels für Dateien, Prozesse und Ports eines Systems dienen als logische Gruppierung
Herausforderungen
Die enorme Flexibilität und die sehr detailliert mögliche Rechtevergabe sind zwar die Stärke von SELinux, sie stellen Admins aber auch vor große Herausforderungen: So sind versehentlich fehlende Rechte eine häufige Ursache für Fehlfunktionen in Anwendungen, die per SELinux geschützt werden. Nach dem Prinzip des „Least Priviledge“ gilt es trotzdem, den einzelnen Subjekten im System nur die für ihre beabsichtigte Funktion nötigen Rechte zu verleihen. Unsere Consultants sind erfahren dabei, die Richtlinien passend und sicher zu definieren, Fehler zu vermeiden und Störungen systematisch zu analysieren.
Mehr erfahren
- Was ist SELinux und wie funktioniert es (Link zu Red Hat)
- Wikipedia zu SELinux
- SELinux-Howto (englisch, Link zu CentOS)