Zum Inhalt springen

Linux/SELinux/04/13 Multi-Level Security: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Multi-Level Security (MLS) ===
{{navigation|Linux/SELinux/04/12 Richtlinienmodule|Linux/SELinux/04/14 Dateinamenübergang}}
'''Linux/SELinux/04/13 Multi-Level Security''' - MLS
 
== Beschreibung ==
; Multi-Level Security (MLS)
Die Multi-Level-Security-Technologie bezieht sich auf ein Sicherheitsschema, das das Bell-La-Padula-Mandatory-Access-Modell durchsetzt
Die Multi-Level-Security-Technologie bezieht sich auf ein Sicherheitsschema, das das Bell-La-Padula-Mandatory-Access-Modell durchsetzt
* Unter MLS werden Benutzer und Prozesse als „Subjekte“ bezeichnet, während Dateien, Geräte und andere passive Komponenten des Systems als „Objekte“ bezeichnet werden
* Unter MLS werden Benutzer und Prozesse als „Subjekte“ bezeichnet, während Dateien, Geräte und andere passive Komponenten des Systems als „Objekte“ bezeichnet werden
Zeile 5: Zeile 9:
* Jede Sicherheitsstufe setzt sich aus einer „Vertraulichkeitsstufe“ und einer „Kategorie“ zusammen; so wird beispielsweise ein interner Veröffentlichungsplan unter der Kategorie „interne Dokumente“ mit der Vertraulichkeitsstufe „vertraulich“ abgelegt
* Jede Sicherheitsstufe setzt sich aus einer „Vertraulichkeitsstufe“ und einer „Kategorie“ zusammen; so wird beispielsweise ein interner Veröffentlichungsplan unter der Kategorie „interne Dokumente“ mit der Vertraulichkeitsstufe „vertraulich“ abgelegt


Abbildung „Sicherheitsfreigabestufen“ zeigt die ursprünglich von der US-Verteidigungsgemeinschaft entworfenen Sicherheitsfreigabestufen
Abbildung „Sicherheitsfreigabestufen“
* Bezogen auf unser obiges Beispiel des internen Zeitplans dürfen nur Benutzer, die die Sicherheitsfreigabe „vertraulich“ erhalten haben, Dokumente der Kategorie „vertraulich“ einsehen
* zeigt die ursprünglich von der US-Verteidigungsgemeinschaft entworfenen Sicherheitsfreigabestufen
 
Bezogen auf unser obiges Beispiel des internen Zeitplans dürfen nur Benutzer, die die Sicherheitsfreigabe „vertraulich“ erhalten haben, Dokumente der Kategorie „vertraulich“ einsehen
* Benutzer, die lediglich über die Sicherheitsfreigabe „vertraulich“ verfügen, dürfen jedoch keine Dokumente einsehen, die eine höhere Sicherheitsstufe erfordern; sie haben nur Lesezugriff auf Dokumente mit niedrigeren Sicherheitsstufen und Schreibzugriff auf Dokumente mit höheren Sicherheitsstufen
* Benutzer, die lediglich über die Sicherheitsfreigabe „vertraulich“ verfügen, dürfen jedoch keine Dokumente einsehen, die eine höhere Sicherheitsstufe erfordern; sie haben nur Lesezugriff auf Dokumente mit niedrigeren Sicherheitsstufen und Schreibzugriff auf Dokumente mit höheren Sicherheitsstufen


; Abbildung Sicherheitsfreigabestufen
; Abbildung Sicherheitsfreigabestufen


Abbildung „Zulässige Datenflüsse unter Verwendung von MLS“ zeigt alle zulässigen Datenflüsse zwischen einem Subjekt, das unter der Sicherheitsstufe „Secret“ läuft, und verschiedenen Objekten mit unterschiedlichen Sicherheitsstufen
Abbildung „Zulässige Datenflüsse unter Verwendung von MLS“  
* Vereinfacht ausgedrückt erzwingt das Bell-LaPadula-Modell zwei Eigenschaften
* zeigt alle zulässigen Datenflüsse zwischen einem Subjekt, das unter der Sicherheitsstufe „Secret“ läuft
* verschiedenen Objekten mit unterschiedlichen Sicherheitsstufen
 
Vereinfacht ausgedrückt erzwingt das Bell-LaPadula-Modell zwei Eigenschaften
„no read up“ und „no write down“
„no read up“ und „no write down“


; Abbildung Zulässige Datenflüsse unter Verwendung von MLS
; Abbildung zulässige Datenflüsse unter Verwendung von MLS


=== MLS und Systemberechtigungen ===
=== MLS und Systemberechtigungen ===
Zeile 28: Zeile 37:
=== Aktivieren von MLS in SELinux ===
=== Aktivieren von MLS in SELinux ===
; Hinweis
; Hinweis
 
: Es wird nicht empfohlen, die MLS-Richtlinie auf einem System zu verwenden, auf dem das X Window System läuft
Es wird nicht empfohlen, die MLS-Richtlinie auf einem System zu verwenden, auf dem das X Window System läuft


Befolgen Sie diese Schritte, um die SELinux-MLS-Richtlinie auf Ihrem System zu aktivieren
Befolgen Sie diese Schritte, um die SELinux-MLS-Richtlinie auf Ihrem System zu aktivieren
Zeile 198: Zeile 206:




<!--
== Siehe auch ==
== Siehe auch ==
# [https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html-single/selinux_users_and_administrators_guide/index#mls Abschnitt 4.13, „Multi-Level Security (MLS)“]
# [https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html-single/selinux_users_and_administrators_guide/index#mls Abschnitt 4.13, „Multi-Level Security (MLS)“]
-->


----
----


{{navigation|Linux/SELinux/04/12 Richtlinienmodule|Linux/SELinux/04/14 Dateinamenübergang}}
{{navigation|Linux/SELinux/04/12 Richtlinienmodule|Linux/SELinux/04/14 Dateinamenübergang}}


[[Kategorie:Linux/SELinux/04]]
[[Kategorie:Linux/SELinux/04]]

Aktuelle Version vom 31. März 2026, 11:05 Uhr

Linux/SELinux/04/13 Multi-Level Security - MLS

Beschreibung

Multi-Level Security (MLS)

Die Multi-Level-Security-Technologie bezieht sich auf ein Sicherheitsschema, das das Bell-La-Padula-Mandatory-Access-Modell durchsetzt

  • Unter MLS werden Benutzer und Prozesse als „Subjekte“ bezeichnet, während Dateien, Geräte und andere passive Komponenten des Systems als „Objekte“ bezeichnet werden
  • Sowohl Subjekte als auch Objekte sind mit einer Sicherheitsstufe gekennzeichnet, die die Sicherheitsfreigabe eines Subjekts oder die Klassifizierung eines Objekts angibt
  • Jede Sicherheitsstufe setzt sich aus einer „Vertraulichkeitsstufe“ und einer „Kategorie“ zusammen; so wird beispielsweise ein interner Veröffentlichungsplan unter der Kategorie „interne Dokumente“ mit der Vertraulichkeitsstufe „vertraulich“ abgelegt

Abbildung „Sicherheitsfreigabestufen“

  • zeigt die ursprünglich von der US-Verteidigungsgemeinschaft entworfenen Sicherheitsfreigabestufen

Bezogen auf unser obiges Beispiel des internen Zeitplans dürfen nur Benutzer, die die Sicherheitsfreigabe „vertraulich“ erhalten haben, Dokumente der Kategorie „vertraulich“ einsehen

  • Benutzer, die lediglich über die Sicherheitsfreigabe „vertraulich“ verfügen, dürfen jedoch keine Dokumente einsehen, die eine höhere Sicherheitsstufe erfordern; sie haben nur Lesezugriff auf Dokumente mit niedrigeren Sicherheitsstufen und Schreibzugriff auf Dokumente mit höheren Sicherheitsstufen
Abbildung Sicherheitsfreigabestufen

Abbildung „Zulässige Datenflüsse unter Verwendung von MLS“

  • zeigt alle zulässigen Datenflüsse zwischen einem Subjekt, das unter der Sicherheitsstufe „Secret“ läuft
  • verschiedenen Objekten mit unterschiedlichen Sicherheitsstufen

Vereinfacht ausgedrückt erzwingt das Bell-LaPadula-Modell zwei Eigenschaften „no read up“ und „no write down“

Abbildung zulässige Datenflüsse unter Verwendung von MLS

MLS und Systemberechtigungen

MLS-Zugriffsregeln werden immer mit herkömmlichen Zugriffsberechtigungen (Dateiberechtigungen) kombiniert

  • Wenn beispielsweise ein Benutzer mit der Sicherheitsstufe „Secret“ die diskretionäre Zugriffskontrolle (DAC) nutzt, um anderen Benutzern den Zugriff auf eine Datei zu verweigern, wird dadurch auch der Zugriff von Benutzern mit der Sicherheitsstufe „Top Secret“ blockiert
  • Es ist wichtig zu beachten, dass die MLS-Richtlinien von SELinux „nach“ den DAC-Regeln überprüft werden
  • Eine höhere Sicherheitsfreigabe gewährt nicht automatisch die Berechtigung, willkürlich im Dateisystem zu stöbern

Benutzer mit Freigaben der höchsten Stufe erhalten in mehrstufigen Systemen nicht automatisch Administratorrechte

  • Sie haben zwar möglicherweise Zugriff auf alle Informationen auf dem Computer, dies ist jedoch nicht mit Administratorrechten gleichzusetzen

Aktivieren von MLS in SELinux

Hinweis
Es wird nicht empfohlen, die MLS-Richtlinie auf einem System zu verwenden, auf dem das X Window System läuft

Befolgen Sie diese Schritte, um die SELinux-MLS-Richtlinie auf Ihrem System zu aktivieren

Aktivieren der SELinux-MLS-Richtlinie
  1. Installieren Sie das Paket selinux-policy-mls
sudo yum install selinux-policy-mls
  1. Bevor die MLS-Richtlinie aktiviert wird, muss jede Datei im Dateisystem mit einem MLS-Label neu gekennzeichnet werden
  • Wenn das Dateisystem neu gekennzeichnet wird, kann eingeschränkten Domänen der Zugriff verweigert werden, was dazu führen kann, dass Ihr System nicht korrekt bootet
  • Um dies zu verhindern, konfigurieren Sie SELINUX=permissive in der Datei /etc/selinux/config
  • Aktivieren Sie außerdem die MLS-Richtlinie, indem Sie SELINUXTYPE=mls konfigurieren
  • Ihre Konfigurationsdatei sollte wie folgt aussehen
# Diese Datei steuert den Status von SELinux auf dem System
# SELINUX= kann einen dieser drei Werte annehmen
# enforcing – Die SELinux-Sicherheitsrichtlinie wird durchgesetzt
# permissive – SELinux gibt Warnungen aus, anstatt die Richtlinie durchzusetzen
# disabled – Es wird keine SELinux-Richtlinie geladen
SELINUX=permissive
# SELINUXTYPE= kann einen dieser beiden Werte annehmen
# targeted – Zielgerichtete Prozesse werden geschützt,
# mls – Multi-Level-Security-Schutz
SELINUXTYPE=mls
  1. Stellen Sie sicher, dass SELinux im permissiven Modus läuft
sudo setenforce 0
getenforce
Permissive
  1. Verwenden Sie das Skript fixfiles, um die Datei /.autorelabel mit der Option -F zu erstellen, damit Dateien beim nächsten Neustart neu gekennzeichnet werden
sudo fixfiles -F onboot
  1. Starten Sie Ihr System neu
  • Beim nächsten Start werden alle Dateisysteme gemäß der MLS-Richtlinie neu gekennzeichnet
  • Der Kennzeichnungsprozess kennzeichnet alle Dateien mit einem geeigneten SELinux-Kontext
*** Warnung -- Eine Neukennzeichnung gemäß der SELinux-MLS-Richtlinie ist erforderlich
*** Die Neukennzeichnung kann sehr lange dauern, abhängig von der
*** Größe des Dateisystems und der Geschwindigkeit der Festplatten
***********

Jedes * (Sternchen) in der untersten Zeile steht für 1000 Dateien, die gekennzeichnet wurden

  • Im obigen Beispiel stehen elf *-Zeichen für 11.000 Dateien, die gekennzeichnet wurden
  • Die Zeit, die zum Kennzeichnen aller Dateien benötigt wird, hängt von der Anzahl der Dateien auf dem System und der Geschwindigkeit der Festplatten ab
  • Auf modernen Systemen kann dieser Vorgang nur 10 Minuten dauern
  • Sobald der Kennzeichnungsprozess abgeschlossen ist, startet das System automatisch neu
  1. Im permissiven Modus wird die SELinux-Richtlinie nicht durchgesetzt, aber Ablehnungen werden weiterhin protokolliert für Aktionen, die im Durchsetzungsmodus abgelehnt worden wären
  • Bevor Sie in den Durchsetzungsmodus wechseln, geben Sie als root den folgenden Befehl ein, um zu bestätigen, dass SELinux beim letzten Systemstart keine Aktionen abgelehnt hat
  • Wenn SELinux beim letzten Systemstart keine Aktionen abgelehnt hat, gibt dieser Befehl keine Ausgabe zurück
  • Siehe Kapitel Fehlerbehebung für Informationen zur Fehlerbehebung, falls SELinux während des Bootvorgangs den Zugriff verweigert hat
sudo grep "SELinux is preventing" /var/log/messages
  1. Wenn die Datei /var/log/messages keine Verweigerungsmeldungen enthält oder Sie alle bestehenden Verweigerungen behoben haben, konfigurieren Sie SELINUX=enforcing in der Datei /etc/selinux/config
# Diese Datei steuert den Status von SELinux auf dem System
# SELINUX= kann einen dieser drei Werte annehmen
# enforcing - Die SELinux-Sicherheitsrichtlinie wird durchgesetzt
# permissive - SELinux gibt Warnungen aus, anstatt die Richtlinie durchzusetzen
# disabled - Es wird keine SELinux-Richtlinie geladen
SELINUX=enforcing
# SELINUXTYPE= kann einen dieser beiden Werte annehmen
# targeted - Zielgerichtete Prozesse werden geschützt,
# mls - Multi-Level-Security-Schutz
SELINUXTYPE=mls
  1. Starten Sie Ihr System neu und stellen Sie sicher, dass SELinux im Durchsetzungsmodus läuft
getenforce
Enforcing

und die MLS-Richtlinie ist aktiviert

sudo sestatus | grep mls
Policy from config file:        mls

Einen Benutzer mit einem bestimmten MLS-Bereich erstellen

Befolgen Sie diese Schritte, um einen neuen Linux-Benutzer mit einem bestimmten MLS-Bereich zu erstellen

Einen Benutzer mit einem bestimmten MLS-Bereich erstellen

1. Fügen Sie einen neuen Linux-Benutzer mit dem Befehl useradd hinzu und ordnen Sie den neuen Linux-Benutzer einem bestehenden SELinux-Benutzer zu (in diesem Fall staff_u)

sudo useradd -Z staff_u john

2. Weisen Sie dem neu erstellten Linux-Benutzer ein Passwort zu

sudo passwd john

3. Geben Sie den folgenden Befehl als root ein, um die Zuordnung zwischen SELinux- und Linux-Benutzern anzuzeigen

  • Die Ausgabe sollte wie folgt aussehen
sudo semanage login -l
Login Name           SELinux User         MLS/MCS Range        Service

__default__          user_u               s0-s0                *
john                 staff_u              s0-s15:c0.c1023      *
root                 root                 s0-s15:c0.c1023      *
staff                staff_u              s0-s15:c0.c1023      *
sysadm               staff_u              s0-s15:c0.c1023      *
system_u             system_u             s0-s15:c0.c1023      *

4. Definieren Sie einen spezifischen Bereich für den Benutzer john

sudo semanage login --modify --range s2:c100 john

5. Zeigen Sie die Zuordnung zwischen SELinux- und Linux-Benutzern erneut an

  • Beachten Sie, dass für den Benutzer john nun ein spezifischer MLS-Bereich definiert ist
sudo semanage login -l
Login Name           SELinux User         MLS/MCS Range        Service

__default__          user_u               s0-s0                *
john                 staff_u              s2:c100              *
root                 root                 s0-s15:c0.c1023      *
staff                staff_u              s0-s15:c0.c1023      *
sysadm               staff_u              s0-s15:c0.c1023      *
system_u             system_u             s0-s15:c0.c1023      *

6. Um die Bezeichnung von Johns Home-Verzeichnis bei Bedarf zu korrigieren, geben Sie den folgenden Befehl ein

sudo chcon -R -l s2:c100 /home/john

Einrichten von polyinstanziierten Verzeichnissen

Die Verzeichnisse /tmp und /var/tmp/ werden normalerweise von allen Programmen, Diensten und Benutzern als temporärer Speicherplatz genutzt

  • Eine solche Konfiguration macht diese Verzeichnisse jedoch anfällig für Race-Condition-Angriffe oder Informationslecks aufgrund von Dateinamen
  • SELinux bietet eine Lösung in Form von polyinstanziierten Verzeichnissen
  • Dies bedeutet im Effekt, dass sowohl /tmp als auch /var/tmp/ instanziiert werden, wodurch sie für jeden Benutzer privat erscheinen
  • Wenn die Instanziierung von Verzeichnissen aktiviert ist, werden die Verzeichnisse /tmp und /var/tmp/ jedes Benutzers automatisch unter /tmp-inst und /var/tmp/tmp-inst eingebunden

Befolgen Sie diese Schritte, um die Polyinstanziierung von Verzeichnissen zu aktivieren

Aktivieren der Polyinstanziierung von Verzeichnissen

1. Entfernen Sie die Auskommentierung der letzten drei Zeilen in der Datei /etc/security/namespace.conf, um die Instanziierung von /tmp, /var/tmp/ und den Home-Verzeichnissen der Benutzer zu aktivieren

tail -n 3 /etc/security/namespace.conf
/tmp /tmp-inst/ level root,adm
/var/tmp /var/tmp/tmp-inst/ level root,adm
$HOME $HOME/$USER.inst/ level

2. Stellen Sie sicher, dass in der Datei /etc/pam.d/login das Modul pam_namespace.so für die Sitzung konfiguriert ist

grep namespace /etc/pam.d/login
session required pam_namespace.so

3. Starten Sie Ihr System neu