Open Source im professionellen Einsatz

Eine Frage des Typs

Unix-User und -Gruppe lauten auf »spenneb«, während SE Linux den Benutzer als »user_u« führt, seine Rolle heißt »object_r« und der Typ »paper_t«. Die Suffixe der Bezeichnungen deuten jeweils an, um welchen Context-Bestandteil es sich handelt. Auch Prozesse erhalten einen Security Context, den »ps -Z« auflistet (Abbildung 1).

Das wichtigste Kriterium für die Zugriffsentscheidung ist der Typ. Bei einem Prozess heißt der Typ Domäne - dieser sprachliche Kniff soll Subjekt und Objekt besser unterscheiden. Damit nun ein Prozess mit der Domäne »emacs_t« auf eine Datei vom Typ »paper_t« zugreifen darf, braucht er eine entsprechende Richtlinie.

SE Linux verbietet zunächst grundsätzlich jeden Zugriff. Selbst ein Zugriff der Domäne »beispiel_t« auf Dateien vom Type »beispiel_t« ist untersagt. Jede Aktion muss explizit erlaubt sein. Für die Domäne »emacs_t« könnte die Richtlinie folgendermaßen aussehen:

allow emacs_t paper_t:file {create ioctl read getattr lock write append setattr};


Dies erlaubt Prozessen in der Domäne »emacs_t« die in geschweiften Klammern gelisteten Operationen auf Objekte vom Typ »paper_t«. Dass es sich bei den Objekten nur um reguläre Dateien handeln darf, legt die Objektklasse »:file« fest.

Domänenwechsel

Startet ein normaler Benutzer den Texteditor Emacs, verwendet der neue Prozess nicht automatisch die Domäne »emacs_t«. Der Wechsel in diese Domäne muss erlaubt sein und automatisch vonstatten gehen. Dazu definiert eine Regel zunächst für die Binärdatei des Emacs-Texteditors einen so genannten Entrypoint für die neue Domäne.

Die Programmdatei braucht vorab den Typ »emacs_exec_t« (als Label im Dateisystem festgelegt) und SE Linux die folgende Regel:

allow emacs_t emacs_exec_t:file entrypoint;


Damit gestattet SE Linux den ausführbaren Dateien des Typs »emacs_exec_t«, dass sie beim Starten in die Domäne »emacs_t« eintreten. Das genügt aber nicht: SE Linux muss diese Aktion auch dem Aufrufer erlauben. Weil der selbst in einer eigenen Domäne läuft, findet beim Prozessstart ein Domänenwechsel statt. Dazu sind eine Allow- und eine Type-Transition-Regel nötig:

allow { userdomain } emacs_t:process transition;
type_transition { userdomain } emacs_exec_t:process emacs_t;


Die Allow-Regel gestattet allen Prozessen, die einer Domäne aus der Liste »userdomain« angehören, dass sie neue Prozesse in der Domäne »emacs_t« starten. Die darauf folgende Type-Transition-Regel legt fest, dass der aufgerufene Prozess die Domäne »emacs_t« erhält und nicht die des Aufrufers erbt, wenn die Programmdatei vom Typ »emacs_exec_t« ist. Das gilt wiederum aber nur, wenn der Aufrufer einer »userdomain«-Domäne angehört.

Damit SE Linux diese Richtlinien auf einem System umsetzen kann, müssen alle Dateien den korrekten Security Context erhalten. Dieser Vorgang heißt Labeling. Welches File welches Label erhält, steht in den »*.fc«-Dateien (File Context):

/usr/bin/emacs(.*) -- system_u:object_r:emacs_exec_t


Sobald irgendein Prozess auf dem System eine Datei erzeugt, die zu diesem Muster passt, erhält sie von SE Linux den angegebenen Context mit dem Typ »emacs_exec_t«.

Dieses Beispiel verdeutlicht gleichzeitig die außergewöhnliche Granularität, mit der SE Linux arbeitet - und die daraus resultierende Komplexität. Für einen Gelegenheitsadministrator ist das kaum zu überblicken. Eine SE Linux Policy kann durchaus 6 MByte groß sein - dabei enthält sie nur Regeln in Ascii. Seit einiger Zeit versuchen Entwickler diese Komplexität zu reduzieren.

Eine der führenden SE-Linux-Distributionen ist Fedora Core. Sie stellte bis Version 4 zwei Policies zur Verfügung: Strict und Targeted. Während die Strict Policy tatsächlich ein MAC-System für jeden Vorgang auf dem Linux-System implementiert, betrachtet die Targeted Policy nur wenige Dienste, die potenziell kritische Daten verarbeiten. Dies sind in erster Linie Netzwerkdienste. Die restlichen Prozesse unter Fedora Core laufen in einer speziellen Domäne »unconfined_t«, die im Wesentlichen einem System ohne SE Linux entspricht.

Prozessen der Unconfined-Domäne ist beinahe jeder Zugriff erlaubt. Es gelten nur die normalen DAC-Rechte des Linux-Systems. Damit ähnelt SE Linux in diesem Modus dem App-Armor-Ansatz. Dennoch benötigt SE Linux auf Fedora Core 4 auch im Targeted-Modus auf Grund seiner Granularität immer noch eine Policy von 2,5 MByte Ascii.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4,5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook