Zum Inhalt springen

Linux/SELinux/02 Kontext: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 256: Zeile 256:
| 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''.
| 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''.
|}
|}
--!>
-->


<noinclude>
<noinclude>

Version vom 30. März 2026, 01:00 Uhr

Linux/SELinux/02 Kontext - Security Context Verwaltung

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
  • Dieser Teil des Kontexts beschreibt die SELinux-Identität eines Subjekts oder Objekts
role <name>_r SELinux-Rolle
  • 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-Typ – '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

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



Anhang

Siehe auch

Unterseiten

Inhalt der aktuellen Kategorie

Dokumentation

Projekt

  1. Kapitel 2. SELinux-Kontexte