|_|0|_|
|_|_|0|
|0|0|0|

Be-Paranoid.net

Ein sicheres Linux System aufsetzen Teil 1.1 - Security Enhanced Linux: SELinux Modell

Orginal Version | Artikel editieren | Versionen anzeigen | Bottom
Letzte Änderung: 19.08.2006, 00:25

Inhaltsverzeichnis



Vorwort Top



Diese Tutorialserie beschäftigt sich damit, ein sicheres Linux-System aufzusetzen. Im ersten Teil wurde beschrieben, wie man den Linux-Kernel mit SELinux patcht, und SELinux installiert.

Dieser Teil soll theoretisches Wissen über SELinux vermitteln, der dritte Teil wird die Konfiguration der policy erklären.

Tutorials in dieser Artikelserie Top










Einführung Top



SELinux implementiert ein LMS(Linux Security Module), das auf "mandatory access controls", kurz MAC basiert, die Rolle des Benutzers stärker einschränkt, und ihm nur die Rechte gibt, die er RFCHJpdmlsZWdl.html" rel="nofollow">braucht. SELinux bietet drei Möglichkeiten, Regeln für die Zugriffskontrolle zu erstellen: Type Enforcement (TE), rollenbasierte Zugriffskontrolle (Role Base Access Control). Das ursprüngliche TE Modell vom Flask-Konzept würde Benutzer mit Domains gleichsetzen (siehe weiter unten), RBAC wurde geschaffen, um eine Abstraktion zwischen der SELinux Benutzer-Identität, und dem TE-Model zu bilden, der Benutzer kann in verschiedene Rollen schlüpfen. Die dritte Möglichkeit, ist mehrstufige Sicherheit (Multi-Level Security - MLS). MLS ist eine Erweiterung, die im moment nur experimentel Verfügbar ist, sie benutzt mehrere Sicherheitsstufen, ein Konzept aus dem militärischen Bereich, Objekte erhalten unter anderem Geheimhaltungstufen.

Begriffe Top













Praktisches Beispiel Top



SELinux hat, wie im letzten Kapitel besprochen einige Änderungen an unserem System vorgenommen, unter anderem wurden die Programme id und ls mit dem Parameter -Z erweitert.

Ich melde mich als root Benutzer an, und gebe den Befehl id -Z ein:

Code:

    
selinux:/# id -Z    
root:user_r:user_t     



Der Benutzer hat die Rolle user_r und ist Domain user_t.

Die Useridentität legt fest, das wir in die Rolle sysadm_r schlüpfen dürfen, das machen ich jetzt:

Code:

    
selinux:/# newrole -r sysadm_r -t sysadm_t    
Authenticating root.    
Password:    
selinux:/# id -Z    
root:sysadm_r:sysadm_t    



Wir haben die Rolle gewechselt, und sind jetzt in sysadm_r.

Permamente und flüchtige Objekte Top



Es gibt zwei Typen von Objects: flüchtige (transient) permamente(persitent) Objekte. Flüchtige Objekte sind temporäre Objekte, die nur für eine, meist kurze Zeit leben, während permamente Objekte eine unbestimmte Lebensdauer haben. In der Praxis sind permamente Objekte Dateien und Ordner, und flüchtige Objekte Prozesse.

Zugriffsentscheidungen Top



Es gibt zwei verschiedene Entschiedungen die vom SELinux-Security-Server getroffen werden: Access decisions, und Transient decisions.





Policy Top



In unserem Beispiel oben habe ich geschrieben, das die Benutzeridentität von root es uns erlaubt, die Rolle zu ändern. Ob das erlaubt ist, und wem wird in der sogenannten Policy festgelegt. Die Policy ist unser Regelwerk, sie legt fest, was gemacht werden darf, wer in welche Rolle schlüfen darf, welche security contexts Dateien bekommen und was, welche Domain benutzen darf. Die Aufgabe des Systemadministrators ist es, die Policy an das System anzupassen, und die Rechte intelligent zu vergeben. Die Policy wird ausführlich im nächsten Kapitel besprochen.



Permissive und Enforcing Mode Top



Bei SELinux gibt es zwei verschiedene Modi, den permissive und enforcing mode:




Der enforcing mode kann im bootloader entweder an, oder ausgeschaltet werden. Bei GRUB geschieht dies in der Datei /boot/grub/menu.conf, das haben wir schon im letzten Artikel (weiter unten im Kapitel kernel-builden) schon gemacht. Wenn es ihnen zu unsicher ist, das jemand im permissive mode booten können Sie auch eine Boot-CD mit einem Kernel machen, der den permissive mode unterstützt. Der "normale" Kernel kann ohne permissive mode erstellt werden, in dem die Option NSA SELinux Development support nicht aktiviert wird. Ausserdem können Sie eine neue policy auf einer Kopie vom System testen, dann müssen Sie ihr System nicht neustarten. Mit dem Befehl setenforce 0 oder setenforce 1 können Sie zwischen permissive und enforcing mode wechseln, dazu müssen Sie allerdings die sysadm_r rolle besitzen. Alternativ können Sie auch die Flags im selinux-pseudofilesystem ändern. (echo 0 > /selinux/enforce)

SELinux beim booten abschalten Top



Wenn der Kernel mit der Option NSA SELinux boot parameter kompiliert wurde, kann SELinux beim booten abgeschaltet werden, dazu muss der Wert selinux=0 an GRUB übergeben werden (wie enforcing=1). Wenn SELinux abgeschaltet ist, werden die file labels von neuen, oder veränderten Dateien nicht angepasst, um Probleme zu verhindern müssen Sie das Dateisystem neu labeln, so wie wir es im ersten Teil der Tutorialserie gemacht haben. Das gleiche gilt, wenn die Partition von einer LiveCD oder ähnlichem verändert wird.

Performance Top



Wenn der SELinux Security Server läuft, kostet das einiges an CPU Zeit, auf manchen System kann es die CPU um 7% auslasten. Ich denke dass, das verkraftbar ist, im Vergleich zu dem was SELinux bietet, immerhin ist es nichts im Vergleich zu den 30%-40% die ein Personal Firewall, oder ein Virenscanner braucht, vorallem wenn man die Tatsache berücksichtigt das SELinux wircklich was bringen kann laugh.

Quellen Top







Schlusswort Top



In diesem Kapitel haben wir gelernt, wie SELinux grundlegend funktioniert: was security contexts sind, wie Entscheidungen getroffen werden, und wie wir als Benutzer unsere Rechte ändern.

Das nächste Kapitel wird die Konfiguration von der SELinux Policy behandeln.

Orginal Version | Artikel editieren | Versionen anzeigen | Top
Letzte Änderung: 19.08.2006, 00:25