Linux/SELinux/02 Kontext: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| (49 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
'''SELinux | '''Linux/SELinux/02 Kontext''' - SELinux Context | ||
{{Navigation|Linux/SELinux/01 Grundlagen/Installation|Linux/SELinux/03 Default Policy}} | |||
== Beschreibung == | == Beschreibung == | ||
| Zeile 11: | Zeile 12: | ||
* Sicherheitsstufe | * Sicherheitsstufe | ||
; Ausführung von | ; Ausführung von SELinux | ||
Entscheidungen zur Zugriffskontrolle des Kontexts | Entscheidungen zur Zugriffskontrolle des Kontexts | ||
| Zeile 19: | Zeile 20: | ||
* [[Mehrstufiger Sicherheit]] ([[MLS]]) | * [[Mehrstufiger Sicherheit]] ([[MLS]]) | ||
; | ; Beispiele für SELinux-Kontexte | ||
Beispiele für | SELinux-Kontexte werden auf Prozessen, Linux-Benutzern und Dateien unter Linux-Betriebssystemen verwendet, auf denen SELinux läuft | ||
== Kontext-Syntax == | |||
'''SELinuxUser:role:type:level''' | |||
; Felder | ; Felder | ||
| Zeile 37: | Zeile 33: | ||
|- | |- | ||
| user | | user | ||
| <name>_u | | <name>_u | ||
| SELinux-Benutzer | | SELinux-Benutzer | ||
* Dieser Teil des Kontexts beschreibt die SELinux-Identität eines Subjekts oder Objekts | * Dieser Teil des Kontexts beschreibt die SELinux-Identität eines Subjekts oder Objekts | ||
|- | |- | ||
| role | | role | ||
| <name>_r | | <name>_r | ||
| SELinux-Rolle | | SELinux-Rolle | ||
* Sie wird vor allem bei Prozessen und beim Login verwendet und legt fest, welche Domänen einem Subjekt zugeordnet werden dürfen | * Sie wird vor allem bei Prozessen und beim Login verwendet und legt fest, welche Domänen einem Subjekt zugeordnet werden dürfen | ||
|- | |- | ||
| type | | type | ||
| <name>_t' | | '''<name>_t''' | ||
| SELinux-Typ – 'der wichtigste Bestandteil' im Type-Enforcement-Modell | | SELinux-Typ – 'der wichtigste Bestandteil' im Type-Enforcement-Modell | ||
| Zeile 56: | Zeile 52: | ||
| SELinux-Level – die Sicherheitsstufe | | SELinux-Level – die Sicherheitsstufe | ||
* In MLS- oder MCS-Szenarien kann dieser Teil auch einen Bereich mit Kategorien enthalten | * In MLS- oder MCS-Szenarien kann dieser Teil auch einen Bereich mit Kategorien enthalten | ||
* In vielen Standardszenarien erscheint hier einfach s0 | * In vielen Standardszenarien erscheint hier einfach s0 | ||
|} | |} | ||
== | == Domänenübergänge == | ||
Ein Prozess in einer Domäne wechselt in eine andere Domäne, indem er eine Anwendung ausführt, die den Typ entrypoint für die neue Domäne hat | |||
* | * Die Berechtigung entrypoint wird in der SELinux-Richtlinie verwendet und steuert, welche Anwendungen zum Betreten einer Domäne verwendet werden können | ||
* | * Das folgende Beispiel veranschaulicht einen Domänenwechsel | ||
; Ein Beispiel für einen Domänenübergang | |||
Ein Benutzer möchte sein Passwort ändern | |||
* Dazu führt er das Dienstprogramm passwd aus | |||
Die ausführbare Datei /usr/bin/passwd ist mit dem Typ '''passwd_exec_t''' gekennzeichnet. Das Dienstprogramm passwd greift auf /etc/shadow zu, das mit dem Typ '''shadow_t''' gekennzeichnet ist. | |||
; Eine SELinux-Richtlinienregel besagt | |||
* dass Prozesse, die in der '''passwd_t'''-Domäne laufen, Dateien lesen und schreiben dürfen, die mit dem Typ '''shadow_t''' gekennzeichnet sind | |||
Wenn ein Benutzer das Dienstprogramm passwd ausführt wechselt der Shell-Prozess des Benutzers in die '''passwd_t'''-Domäne. | |||
Da bei SELinux die Standardaktion '''Verweigern''' ist und eine Regel existiert, die Anwendungen, die in der '''passwd_t'''-Domäne laufen, den Zugriff auf Dateien mit dem Typ '''shadow_t''' erlaubt, darf die passwd-Anwendung auf /etc/shadow zugreifen und das Passwort des Benutzers aktualisieren. | |||
== Praxis: Kontexte anzeigen und ändern == | |||
; SELinux-Kontext von Dateien und Verzeichnissen anzeigen | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ls -Z file1 | |||
-rwxrw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 | |||
</syntaxhighlight> | |||
; SELinux- und Linux-Benutzer | ; SELinux- und Linux-Benutzer | ||
Geben Sie den folgenden Befehl als root ein, um eine Liste der Zuordnungen zwischen SELinux- und Linux-Benutzerkonten anzuzeigen (das Paket policycoreutils-python muss installiert sein): | Geben Sie den folgenden Befehl als root ein, um eine Liste der Zuordnungen zwischen SELinux- und Linux-Benutzerkonten anzuzeigen (das Paket policycoreutils-python muss installiert sein): | ||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
sudo semanage login -l | |||
Anmeldename SELinux-Benutzer MLS/MCS-Bereich Dienst | |||
__default__ unconfined_u s0-s0:c0.c1023 * | |||
root unconfined_u s0-s0:c0.c1023 * | |||
system_u system_u s0-s0:c0.c1023 * | |||
</syntaxhighlight> | |||
; Prozesskontext | |||
Verwenden Sie den Befehl ps -eZ, um den SELinux-Kontext für Prozesse anzuzeigen. | |||
Anzeigen des SELinux-Kontexts für das Dienstprogramm passwd: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ps -eZ | grep passwd | |||
unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 13212 pts/1 00:00:00 passwd | |||
</syntaxhighlight> | |||
Um die SELinux-Kontexte aller laufenden Prozesse anzuzeigen, führen Sie das Dienstprogramm ps erneut aus: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ps -eZ | |||
system_u:system_r:dhcpc_t:s0 1869 ? 00:00:00 dhclient | |||
system_u:system_r:sshd_t:s0-s0:c0.c1023 1882 ? 00:00:00 sshd | |||
system_u:system_r:gpm_t:s0 1964 ? 00:00:00 gpm | |||
system_u:system_r:crond_t:s0-s0:c0.c1023 1973 ? 00:00:00 crond | |||
system_u:system_r:kerneloops_t:s0 1983 ? 00:00:05 kerneloops | |||
system_u:system_r:crond_t:s0-s0:c0.c1023 1991 ? 00:00:00 atd | |||
</syntaxhighlight> | |||
Die Rolle system_r wird für Systemprozesse wie Daemons verwendet. Type Enforcement trennt dann jede Domäne. | |||
; Benutzerkontext | |||
Verwenden Sie den folgenden Befehl, um den SELinux-Kontext anzuzeigen, der Ihrem Linux-Benutzer zugeordnet ist: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
id -Z | |||
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 | |||
</syntaxhighlight> | |||
Dieser SELinux-Kontext zeigt, dass der Linux-Benutzer dem SELinux-Benutzer unconfined_u zugeordnet ist, in der Rolle unconfined_r läuft und in der Domäne '''unconfined_t''' ausgeführt wird. s0-s0 ist ein MLS-Bereich, der in diesem Fall mit s0 identisch ist. Standardmäßig laufen Linux-Benutzer in der unconfined-Rolle. | |||
== Context setzen mit chcon == | |||
* Category und Sensitivity Label setzen mit chcat | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ps -eZ | grep httpd | |||
system_u:system_r:httpd_t:s0 16392 ? 00:00:01 apache2 | |||
</syntaxhighlight> | |||
== Benutzer == | |||
; SELinux-Benutzeridentität | |||
Richtlinie bekannte Identität, die für eine bestimmte Gruppe von Rollen und für einen bestimmten MLS/MCS-Bereich autorisiert ist | |||
* Jeder Linux-Benutzer wird mithilfe der SELinux-Richtlinie einem SELinux-Benutzer zugeordnet | |||
* Dadurch können Linux-Benutzer die für SELinux-Benutzer geltenden Einschränkungen übernehmen | |||
* Die zugeordnete SELinux-Benutzeridentität wird im SELinux-Kontext für Prozesse in dieser Sitzung verwendet, um zu definieren, welche Rollen und Ebenen sie betreten dürfen | |||
Die Ausgabe kann von System zu System leicht abweichen: | Die Ausgabe kann von System zu System leicht abweichen: | ||
| Zeile 122: | Zeile 183: | ||
* Die mit Linux gelieferte MLS-Richtlinie lässt viele Programmdomänen außer Acht, die nicht Teil der evaluierten Konfiguration waren, weshalb MLS auf einer Desktop-Workstation unbrauchbar ist (keine Unterstützung für das X Window System); es kann jedoch eine MLS-Richtlinie aus der vorgelagerten SELinux-Referenzrichtlinie erstellt werden, die alle Programmdomänen enthält | * Die mit Linux gelieferte MLS-Richtlinie lässt viele Programmdomänen außer Acht, die nicht Teil der evaluierten Konfiguration waren, weshalb MLS auf einer Desktop-Workstation unbrauchbar ist (keine Unterstützung für das X Window System); es kann jedoch eine MLS-Richtlinie aus der vorgelagerten SELinux-Referenzrichtlinie erstellt werden, die alle Programmdomänen enthält | ||
; Weitere Informationen | |||
zur MLS-Konfiguration finden Sie unter [[Linux/SELinux/04/13 Multi-Level Security]] | |||
== | == File Context Verwaltung == | ||
'''SELinux/File Context''' - Verhalten bei Dateisystemen mit und ohne xattr Unterstützung | |||
; | ; Mount Optionen | ||
* für SELinux (context=, defcontext=, fs,context=, rootcontext=) | |||
* | |||
ls -Z /usr/bin/passwd | |||
-rwsr-xr-x root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd | |||
ls -Z /etc/shadow | |||
-r-------- | |||
root root system_u:object_r:shadow_t:s0 /etc/shadow | |||
* Der Typ shadow_t wird nur auf Dateien angewendet, die für eine Passwortänderung erforderlich sind | * Der Typ shadow_t wird nur auf Dateien angewendet, die für eine Passwortänderung erforderlich sind | ||
* Dazu gehören /etc/gshadow, /etc/shadow und deren Sicherungsdateien | * Dazu gehören /etc/gshadow, /etc/shadow und deren Sicherungsdateien | ||
Eine SELinux-Richtlinienregel besagt, dass für die passwd_t-Domäne die entrypoint-Berechtigung auf den Typ passwd_exec_t gesetzt ist | Eine SELinux-Richtlinienregel besagt, dass für die passwd_t-Domäne die entrypoint-Berechtigung auf den Typ passwd_exec_t gesetzt ist | ||
Dieses Beispiel ist nicht erschöpfend und dient als grundlegendes Beispiel zur Erläuterung des Domänenwechsels | Dieses Beispiel ist nicht erschöpfend und dient als grundlegendes Beispiel zur Erläuterung des Domänenwechsels | ||
| Zeile 163: | Zeile 216: | ||
* Dies verhindert, dass die passwd-Anwendung dazu verleitet wird, beliebige Dateien zu lesen oder zu schreiben | * Dies verhindert, dass die passwd-Anwendung dazu verleitet wird, beliebige Dateien zu lesen oder zu schreiben | ||
# Öffnen Sie ein Terminal, z. B. über Anwendungen → Systemwerkzeuge → Terminal | |||
# Öffnen Sie ein Terminal, z. | |||
# Führen Sie das Dienstprogramm passwd aus | # Führen Sie das Dienstprogramm passwd aus | ||
Geben Sie kein neues Passwort ein: | Geben Sie kein neues Passwort ein: | ||
passwd | |||
Passwort für Benutzer ‚'user_name‘' ändern | |||
Passwort für ‚'user_name‘' ändern | |||
(aktuelles) UNIX-Passwort: | |||
Öffnen Sie einen neuen Tab oder ein weiteres Terminal und geben Sie den folgenden Befehl ein | Öffnen Sie einen neuen Tab oder ein weiteres Terminal und geben Sie den folgenden Befehl ein | ||
Die Ausgabe sieht in etwa wie folgt aus: | Die Ausgabe sieht in etwa wie folgt aus: | ||
Drücken Sie im ersten Tab/Terminal Strg+C, um das Dienstprogramm passwd abzubrechen | Drücken Sie im ersten Tab/Terminal Strg+C, um das Dienstprogramm passwd abzubrechen | ||
In diesem Beispiel wechselt der Shell-Prozess des Benutzers in die Domäne passwd_t, wenn das Dienstprogramm passwd (mit dem Typ passwd_exec_t gekennzeichnet) ausgeführt wird | In diesem Beispiel wechselt der Shell-Prozess des Benutzers in die Domäne passwd_t, wenn das Dienstprogramm passwd (mit dem Typ passwd_exec_t gekennzeichnet) ausgeführt wird | ||
* Beachten Sie, dass der Typ eine Domäne für Prozesse und einen Typ für Dateien definiert | * Beachten Sie, dass der Typ eine Domäne für Prozesse und einen Typ für Dateien definiert | ||
Beachten Sie, dass es sich bei der folgenden Ausgabe um ein gekürztes Beispiel handelt, das auf Ihrem System abweichen kann: | Beachten Sie, dass es sich bei der folgenden Ausgabe um ein gekürztes Beispiel handelt, das auf Ihrem System abweichen kann: | ||
* Die Kategorien, auf die der Benutzer Zugriff hat, werden durch <tt>c0.c1023</tt> definiert, was alle Kategorien (<tt>c0</tt> bis <tt>c1023</tt>) umfasst. | * Die Kategorien, auf die der Benutzer Zugriff hat, werden durch <tt>c0.c1023</tt> definiert, was alle Kategorien (<tt>c0</tt> bis <tt>c1023</tt>) umfasst. | ||
{| class="wikitable options big" | |||
! Bestandteil | |||
! Beispiel | |||
! Beschreibung | |||
{| class="wikitable | |||
|- | |- | ||
| user | |||
| ''<name>_u'' | |||
| SELinux User. Dieser Teil des Kontexts beschreibt die SELinux-Identität eines Subjekts oder Objekts. | |||
|- | |- | ||
| || | | role | ||
| ''<name>_r'' | |||
| SELinux Role. Sie wird vor allem bei Prozessen und beim Login verwendet und legt fest, welche Domänen einem Subjekt zugeordnet werden dürfen. | |||
|- | |- | ||
| | | type | ||
| ''<name>_t'' | |||
| SELinux Type - '''der wichtigste Bestandteil''' im Type-Enforcement-Modell. Der Typ wird in Zugriffsregeln ausgewertet und '''bestimmt maßgeblich, welche Zugriffe für Prozesse und Objekte erlaubt sind'''. | |||
|- | |- | ||
| level | |||
| | | ''s0'' | ||
| | | SELinux Level - die Sicherheitsstufe. In MLS- oder MCS-Szenarien kann dieser Teil auch einen Bereich mit Kategorien enthalten. In vielen Standardszenarien erscheint hier einfach ''s0''. | ||
|- | |||
|} | |} | ||
| Zeile 271: | Zeile 262: | ||
== Anhang == | == Anhang == | ||
=== Siehe auch === | === Siehe auch === | ||
; Unterseiten | |||
{{Special:PrefixIndex/{{BASEPAGENAME}}/}} | |||
---- | |||
; Inhalt der aktuellen Kategorie | |||
<div style="column-count:2"> | <div style="column-count:2"> | ||
<categorytree hideroot=on mode="pages"> | <categorytree hideroot=on mode="pages">Linux/SELinux</categorytree> | ||
</div> | </div> | ||
=== Dokumentation === | === Dokumentation === | ||
| Zeile 295: | Zeile 288: | ||
--> | --> | ||
[[Kategorie:SELinux | ---- | ||
{{Navigation|Linux/SELinux/01 Grundlagen/Installation|Linux/SELinux/03 Default Policy}} | |||
[[Kategorie:Linux/SELinux]] | |||
</noinclude> | </noinclude> | ||
Aktuelle Version vom 31. März 2026, 13:27 Uhr
Linux/SELinux/02 Kontext - SELinux Context
Beschreibung
- Kennzeichnung
Prozesse und Dateien werden mit einem Kontext gekennzeichnet
- Kontext
- SELinux-Benutzer
- Rolle
- Typ
- Sicherheitsstufe
- Ausführung von SELinux
Entscheidungen zur Zugriffskontrolle des Kontexts
SELinux bietet eine Kombination aus
- Beispiele für SELinux-Kontexte
SELinux-Kontexte werden auf Prozessen, Linux-Benutzern und Dateien unter Linux-Betriebssystemen verwendet, auf denen SELinux läuft
Kontext-Syntax
SELinuxUser:role:type:level
- Felder
| Bestandteil | Beispiel | Beschreibung |
|---|---|---|
| user | <name>_u | SELinux-Benutzer
|
| role | <name>_r | SELinux-Rolle
|
| type | <name>_t | SELinux-Typ – 'der wichtigste Bestandteil' im Type-Enforcement-Modell
|
| level | s0 | SELinux-Level – die Sicherheitsstufe
|
Domänenübergänge
Ein Prozess in einer Domäne wechselt in eine andere Domäne, indem er eine Anwendung ausführt, die den Typ entrypoint für die neue Domäne hat
- Die Berechtigung entrypoint wird in der SELinux-Richtlinie verwendet und steuert, welche Anwendungen zum Betreten einer Domäne verwendet werden können
- Das folgende Beispiel veranschaulicht einen Domänenwechsel
- Ein Beispiel für einen Domänenübergang
Ein Benutzer möchte sein Passwort ändern
- Dazu führt er das Dienstprogramm passwd aus
Die ausführbare Datei /usr/bin/passwd ist mit dem Typ passwd_exec_t gekennzeichnet. Das Dienstprogramm passwd greift auf /etc/shadow zu, das mit dem Typ shadow_t gekennzeichnet ist.
- Eine SELinux-Richtlinienregel besagt
- dass Prozesse, die in der passwd_t-Domäne laufen, Dateien lesen und schreiben dürfen, die mit dem Typ shadow_t gekennzeichnet sind
Wenn ein Benutzer das Dienstprogramm passwd ausführt wechselt der Shell-Prozess des Benutzers in die passwd_t-Domäne.
Da bei SELinux die Standardaktion Verweigern ist und eine Regel existiert, die Anwendungen, die in der passwd_t-Domäne laufen, den Zugriff auf Dateien mit dem Typ shadow_t erlaubt, darf die passwd-Anwendung auf /etc/shadow zugreifen und das Passwort des Benutzers aktualisieren.
Praxis: Kontexte anzeigen und ändern
- SELinux-Kontext von Dateien und Verzeichnissen anzeigen
ls -Z file1
-rwxrw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
- SELinux- und Linux-Benutzer
Geben Sie den folgenden Befehl als root ein, um eine Liste der Zuordnungen zwischen SELinux- und Linux-Benutzerkonten anzuzeigen (das Paket policycoreutils-python muss installiert sein):
sudo semanage login -l
Anmeldename SELinux-Benutzer MLS/MCS-Bereich Dienst
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
- Prozesskontext
Verwenden Sie den Befehl ps -eZ, um den SELinux-Kontext für Prozesse anzuzeigen. Anzeigen des SELinux-Kontexts für das Dienstprogramm passwd:
ps -eZ | grep passwd
unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 13212 pts/1 00:00:00 passwd
Um die SELinux-Kontexte aller laufenden Prozesse anzuzeigen, führen Sie das Dienstprogramm ps erneut aus:
ps -eZ
system_u:system_r:dhcpc_t:s0 1869 ? 00:00:00 dhclient
system_u:system_r:sshd_t:s0-s0:c0.c1023 1882 ? 00:00:00 sshd
system_u:system_r:gpm_t:s0 1964 ? 00:00:00 gpm
system_u:system_r:crond_t:s0-s0:c0.c1023 1973 ? 00:00:00 crond
system_u:system_r:kerneloops_t:s0 1983 ? 00:00:05 kerneloops
system_u:system_r:crond_t:s0-s0:c0.c1023 1991 ? 00:00:00 atd
Die Rolle system_r wird für Systemprozesse wie Daemons verwendet. Type Enforcement trennt dann jede Domäne.
- Benutzerkontext
Verwenden Sie den folgenden Befehl, um den SELinux-Kontext anzuzeigen, der Ihrem Linux-Benutzer zugeordnet ist:
id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Dieser SELinux-Kontext zeigt, dass der Linux-Benutzer dem SELinux-Benutzer unconfined_u zugeordnet ist, in der Rolle unconfined_r läuft und in der Domäne unconfined_t ausgeführt wird. s0-s0 ist ein MLS-Bereich, der in diesem Fall mit s0 identisch ist. Standardmäßig laufen Linux-Benutzer in der unconfined-Rolle.
Context setzen mit chcon
- Category und Sensitivity Label setzen mit chcat
ps -eZ | grep httpd
system_u:system_r:httpd_t:s0 16392 ? 00:00:01 apache2
Benutzer
- SELinux-Benutzeridentität
Richtlinie bekannte Identität, die für eine bestimmte Gruppe von Rollen und für einen bestimmten MLS/MCS-Bereich autorisiert ist
- Jeder Linux-Benutzer wird mithilfe der SELinux-Richtlinie einem SELinux-Benutzer zugeordnet
- Dadurch können Linux-Benutzer die für SELinux-Benutzer geltenden Einschränkungen übernehmen
- Die zugeordnete SELinux-Benutzeridentität wird im SELinux-Kontext für Prozesse in dieser Sitzung verwendet, um zu definieren, welche Rollen und Ebenen sie betreten dürfen
Die Ausgabe kann von System zu System leicht abweichen:
- Die Spalte Login Name listet Linux-Benutzer auf
- Die Spalte SELinux User listet auf, welchem SELinux-Benutzer der Linux-Benutzer zugeordnet ist
- Bei Prozessen legt der SELinux-Benutzer fest, auf welche Rollen und Ebenen zugegriffen werden kann
- Die Spalte MLS/MCS-Bereich gibt die Ebene an, die von Multi-Level Security (MLS) und Multi-Category Security (MCS) verwendet wird
- Die Spalte Dienst bestimmt den korrekten SELinux-Kontext, in dem der Linux-Benutzer am System angemeldet sein soll
- Standardmäßig wird das Sternchen (*) verwendet, das für jeden beliebigen Dienst steht
- Rolle
- Teil von SELinux ist das Sicherheitsmodell der rollenbasierten Zugriffskontrolle (RBAC)
- Die Rolle ist ein Attribut von RBAC
- SELinux-Benutzer sind für Rollen autorisiert, und Rollen sind für Domänen autorisiert
- Die Rolle dient als Vermittler zwischen Domänen und SELinux-Benutzern
- Die Rollen, auf die zugegriffen werden kann, bestimmen, auf welche Domänen zugegriffen werden kann; letztendlich steuert dies, auf welche Objekttypen zugegriffen werden kann
- Dies trägt dazu bei, die Anfälligkeit für Angriffe zur Rechteausweitung zu verringern
- Typ
Der Typ ist ein Attribut der Typdurchsetzung
- Der Typ definiert eine Domäne für Prozesse und einen Typ für Dateien
- SELinux-Richtlinienregeln definieren, wie Typen aufeinander zugreifen können, sei es eine Domäne, die auf einen Typ zugreift, oder eine Domäne, die auf eine andere Domäne zugreift
- Zugriff ist nur erlaubt, wenn eine spezifische SELinux-Richtlinienregel existiert, die dies zulässt
- level
Die Stufe ist ein Attribut von MLS und MCS
- Ein MLS-Bereich ist ein Paar von Stufen, das als lowlevel-highlevel geschrieben wird, wenn sich die Stufen unterscheiden, oder als lowlevel, wenn die Stufen identisch sind (s0-s0 entspricht s0)
- Jede Stufe ist ein Paar aus Sensitivitätsstufe und Kategorie, wobei Kategorien optional sind
- Wenn Kategorien vorhanden sind, wird die Stufe als Sensitivitätsstufe:Kategoriengruppe geschrieben
- Wenn keine Kategorien vorhanden sind, wird sie als Sensitivitätsstufe geschrieben
- Wenn die Kategoriengruppe eine zusammenhängende Reihe ist, kann sie abgekürzt werden
- Beispielsweise entspricht c0.c3 dem Ausdruck c0,c1,c2,c3
- Die Datei /etc/selinux/targeted/setrans.conf ordnet Stufen (s0:c0) einer für Menschen lesbaren Form zu (nämlich CompanyConfidential)
- In Linux setzt die gezielte Richtlinie MCS durch, und in MCS gibt es nur eine Sensitivitätsstufe, s0
- MCS in Linux unterstützt 1024 verschiedene Kategorien: c0 bis c1023. s0-s0:c0.c1023 entspricht der Sensitivitätsstufe s0 und ist für alle Kategorien autorisiert
- MLS setzt das Bell-La-Padula-Modell für zwingenden Zugriff durch und wird in LSPP-Umgebungen (Labeled Security Protection Profile) verwendet
- Um MLS-Einschränkungen zu nutzen, installieren Sie das Paket selinux-policy-mls und konfigurieren Sie MLS als Standard-SELinux-Richtlinie
- Die mit Linux gelieferte MLS-Richtlinie lässt viele Programmdomänen außer Acht, die nicht Teil der evaluierten Konfiguration waren, weshalb MLS auf einer Desktop-Workstation unbrauchbar ist (keine Unterstützung für das X Window System); es kann jedoch eine MLS-Richtlinie aus der vorgelagerten SELinux-Referenzrichtlinie erstellt werden, die alle Programmdomänen enthält
- Weitere Informationen
zur MLS-Konfiguration finden Sie unter Linux/SELinux/04/13 Multi-Level Security
File Context Verwaltung
SELinux/File Context - Verhalten bei Dateisystemen mit und ohne xattr Unterstützung
- Mount Optionen
- für SELinux (context=, defcontext=, fs,context=, rootcontext=)
ls -Z /usr/bin/passwd -rwsr-xr-x root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd
ls -Z /etc/shadow -r-------- root root system_u:object_r:shadow_t:s0 /etc/shadow
- Der Typ shadow_t wird nur auf Dateien angewendet, die für eine Passwortänderung erforderlich sind
- Dazu gehören /etc/gshadow, /etc/shadow und deren Sicherungsdateien
Eine SELinux-Richtlinienregel besagt, dass für die passwd_t-Domäne die entrypoint-Berechtigung auf den Typ passwd_exec_t gesetzt ist
Dieses Beispiel ist nicht erschöpfend und dient als grundlegendes Beispiel zur Erläuterung des Domänenwechsels
- Obwohl es eine tatsächliche Regel gibt, die es Subjekten, die in der passwd_t-Domäne laufen, erlaubt, auf Objekte zuzugreifen, die mit dem Dateityp shadow_t gekennzeichnet sind, müssen andere SELinux-Richtlinienregeln erfüllt sein, bevor das Subjekt in eine neue Domäne wechseln kann
- In diesem Beispiel stellt die Typdurchsetzung Folgendes sicher
- Die passwd_t-Domäne kann nur durch die Ausführung einer Anwendung betreten werden, die mit dem Typ passwd_exec_t gekennzeichnet ist; sie darf nur aus autorisierten gemeinsam genutzten Bibliotheken, wie z. B. dem Typ lib_t, ausführen; und sie darf keine anderen Anwendungen ausführen
- Nur autorisierte Domänen, wie z. B. passwd_t, können in Dateien schreiben, die mit dem Typ shadow_t gekennzeichnet sind
- Selbst wenn andere Prozesse mit Superuser-Rechten laufen, können diese Prozesse nicht in Dateien schreiben, die mit dem Typ shadow_t gekennzeichnet sind, da sie nicht in der Domäne passwd_t laufen
- Nur autorisierte Domänen können in die passwd_t-Domäne wechseln
- Beispielsweise hat der in der sendmail_t-Domäne laufende sendmail-Prozess keinen legitimen Grund, passwd auszuführen; daher kann er niemals in die passwd_t-Domäne wechseln
- Prozesse, die in der passwd_t-Domäne laufen, können nur auf autorisierte Typen lesen und schreiben, wie z. B. Dateien, die mit den Typen etc_t oder shadow_t gekennzeichnet sind
- Dies verhindert, dass die passwd-Anwendung dazu verleitet wird, beliebige Dateien zu lesen oder zu schreiben
- Öffnen Sie ein Terminal, z. B. über Anwendungen → Systemwerkzeuge → Terminal
- Führen Sie das Dienstprogramm passwd aus
Geben Sie kein neues Passwort ein: passwd Passwort für Benutzer ‚'user_name‘' ändern Passwort für ‚'user_name‘' ändern (aktuelles) UNIX-Passwort:
Öffnen Sie einen neuen Tab oder ein weiteres Terminal und geben Sie den folgenden Befehl ein Die Ausgabe sieht in etwa wie folgt aus:
Drücken Sie im ersten Tab/Terminal Strg+C, um das Dienstprogramm passwd abzubrechen In diesem Beispiel wechselt der Shell-Prozess des Benutzers in die Domäne passwd_t, wenn das Dienstprogramm passwd (mit dem Typ passwd_exec_t gekennzeichnet) ausgeführt wird
- Beachten Sie, dass der Typ eine Domäne für Prozesse und einen Typ für Dateien definiert
Beachten Sie, dass es sich bei der folgenden Ausgabe um ein gekürztes Beispiel handelt, das auf Ihrem System abweichen kann:
- Die Kategorien, auf die der Benutzer Zugriff hat, werden durch c0.c1023 definiert, was alle Kategorien (c0 bis c1023) umfasst.
| Bestandteil | Beispiel | Beschreibung |
|---|---|---|
| user | <name>_u | SELinux User. Dieser Teil des Kontexts beschreibt die SELinux-Identität eines Subjekts oder Objekts. |
| role | <name>_r | SELinux Role. Sie wird vor allem bei Prozessen und beim Login verwendet und legt fest, welche Domänen einem Subjekt zugeordnet werden dürfen. |
| type | <name>_t | SELinux Type - der wichtigste Bestandteil im Type-Enforcement-Modell. Der Typ wird in Zugriffsregeln ausgewertet und bestimmt maßgeblich, welche Zugriffe für Prozesse und Objekte erlaubt sind. |
| level | s0 | SELinux Level - die Sicherheitsstufe. In MLS- oder MCS-Szenarien kann dieser Teil auch einen Bereich mit Kategorien enthalten. In vielen Standardszenarien erscheint hier einfach s0. |
Anhang
Siehe auch
- Unterseiten
- Inhalt der aktuellen Kategorie
Dokumentation
Links
Projekt
Weblinks