Gut bewacht

Klassischerweise kommt auf Unix- und Linux-Rechnern das Prinzip der Discretionary Access Control zum Einsatz, die eine Zugriffsentscheidung lediglich anhand der Benutzeridentität und den damit verknüpften Berechtigungen fällt. Systeme mit Mandatory Access Control haben diese Schwäche nicht; die populärste Implementierung ist SELinux.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Lesezeit: 3 Min.
Von
  • Thorsten Scherf

Security-Enhanced Linux (SELinux) ist mittlerweile ein fester Bestandteil des Linux-Kernels, einige Distributionen verwenden es dazu, eine Zugangskontrolle auf Basis der Mandatory Access Control zu implementieren. Allerdings ist seine Komplexität auch gefürchtet.

Dieser erste Teil des Tutorials stellt die Architektur und Administration eines SELinux-basierten Systems vor. Im zweiten Teil geht es um das Anpassen respektive Schreiben eines neuen Regelwerks (Policy), bevor sich der letzte Teil mit der nächsten SELinux-Generation in Gestalt einer Referenz-Policy mit binären Modulen beschäftigt. Der Kasten „Einige Voraussetzungen“ erklärt, was zum Nachvollziehen erforderlich ist.

Mehr Infos

Auf klassischen DAC-basierten Systemen steht ein Objekt vollkommen unter der Kontrolle seines Eigentümers. Dieser kann beispielsweise eine Datei löschen, modifizieren oder die Rechte ändern. Prozesse laufen unter dem User-Kontext des Benutzers, der den Prozess gestartet hat. Somit macht das System auch bei Prozessen den Zugriff auf Objekte lediglich anhand der Benutzeridentität beziehungsweise der UID fest. Es existiert neben der Kombination UID/Berechtigungen keine weitere Instanz, die den Zugriff von Subjekten (Benutzer, Prozesse) auf Objekte (Dateien, Sockets, Interfaces) überwacht, was Angreifern im Fall eines Root-Exploit das gesamte System zu Füßen legen kann.

MAC-basierte Systeme setzen neben den klassischen Unix-Berechtigungen auf eine weitere Zugriffskontrolle, die so genannte Mandatory Access Control (MAC). Anhand einer zentralen Instanz (der Security-Policy) und einem Security-Label - man spricht hier oft von einem Security-Kontext, den das System sowohl an Objekte als auch an Subjekte vergibt - findet eine fein granulierte Zugangskontrolle statt. Der Security-Server im Kernel erstellt aus den beiden Komponenten Policy und Label eine Zugangsmatrix, anhand derer er einen Zugriff gestattet oder verbietet. Vereinfacht gesagt, entscheidet SELinux, wie eine Quelle auf ein bestimmtes Target zugreifen darf. Die SELinux-Terminologie bezeichnet dies als Type-Enforcement (TE). SELinux unterstützt daneben die Role-based-Access-Control (RBAC) sowie die Multi-Level/Category-Security (MLS beziehungsweise MCS). Der erste Teil des Tutorials wird sich allerdings ausschließlich mit Type-Enforcement beschäftigen.

Oft bezeichnet man Type-Enforcement auch als Prozess-Sandboxing. Wie schon angesprochen, beschränkt diese Implementierung den Zugang von Prozessen auf bestimmte Objekte. Die mit RHEL4 ausgelieferte Targeted-Policy benutzt TE zur Absicherung gängiger Netzdienste wie Web-, DNS- oder Datenbank-Server. Daneben existiert die so genannte Strict-Policy, die jedoch nicht Bestandteil der RHEL4-Distribution ist. Im Gegensatz zur Targeted-Policy überwacht sie jedes einzelne Programm und jeden Benutzer. In der SELinux-Terminologie ausgedrückt heißt das: Bei der Targeted-Policy laufen nur ausgesuchte Prozesse in einer eigenen Domäne, alle anderen Programme und Benutzer arbeiten in der ungeschützten Domäne unconfined_t, für die lediglich die DAC-basierten Kontrollmechanismen gelten. Bei der Strict-Policy existiert für jedes einzelne Programm und für jeden Benutzer eine eigene Domäne, das heißt, sie sichert das komplette System und nicht nur einzelne Teile.

Wie man TE einrichtet und verwaltet sowie was es mit Security-Label, File- und Security-Context auf sich hat, lesen Sie in der Printausgabe der iX.

Mehr Infos

iX-TRACT

  • Klassische unixoide Systeme nutzen zur Überprüfung von Zugriffsberechtigungen ausschließlich die Identität des Benutzers.
  • Läuft ein Programm im Benutzerkontext von Root, ist bei einem Sicherheitsloch die Sicherheit des gesamten Systems in Gefahr.
  • Mandatory Access Control - MAC - verheißt einen Ausgleich der Unzulänglichkeiten - unter Inkaufnahme deutlich größerer Komplexität.
  • Für Linux liefert das zum Standard-Kernel gehörende SELinux eine leistungsfähige, wenn auch komplexe MAC-Implemetierung.

Teil II: Policies anpassen beziehungsweise schreiben

Teil III: Frontends, Reference Policy, Binärmodule (avr)