Zum Inhalt springen

Linux/SELinux/06 Benutzer/RHEL

Aus Foxwiki
Version vom 30. März 2026, 18:35 Uhr von Dirkwagner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= RHEL = == Einschränkung von Benutzern == ; Benutzer werden standardmäßig dem SELinux-Benutzer '''unconfined_u''' zugeordnet Alle von '''unconfined_u''' ausgeführten Prozesse befinden sich in der Domäne '''unconfined_t''' * Das bedeutet, dass Benutzer innerhalb der Grenzen der Standard-DAC-Richtlinie von Linux auf das gesamte System zugreifen können * Es stehen jedoch eine Reihe von eingeschränkten SELinux-Benutzern zur Verfügung * Das bedeutet,…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

RHEL

Einschränkung von Benutzern

Benutzer werden standardmäßig dem SELinux-Benutzer unconfined_u zugeordnet

Alle von unconfined_u ausgeführten Prozesse befinden sich in der Domäne unconfined_t

  • Das bedeutet, dass Benutzer innerhalb der Grenzen der Standard-DAC-Richtlinie von Linux auf das gesamte System zugreifen können
  • Es stehen jedoch eine Reihe von eingeschränkten SELinux-Benutzern zur Verfügung
  • Das bedeutet, dass Benutzer auf einen begrenzten Satz von Fähigkeiten beschränkt werden können

Jeder Linux-Benutzer wird mithilfe der SELinux-Richtlinie einem SELinux-Benutzer zugeordnet, wodurch Linux-Benutzer die für SELinux-Benutzer geltenden Einschränkungen erben können, beispielsweise (je nach Benutzer) die Unfähigkeit:

  • das X Window System auszuführen
  • Netzwerkfunktionen nutzen
  • Setuid-Anwendungen ausführen (es sei denn, die SELinux-Richtlinie erlaubt dies)
  • oder die Befehle su und sudo ausführen

Beispielsweise befinden sich Prozesse, die vom SELinux-Benutzer user_u ausgeführt werden, in der Domäne user_t

Linux- und SELinux-Benutzer

Zuordnungen zwischen Linux- und SELinux-Benutzern

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

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   *

Linux-Benutzer werden standardmäßig dem SELinux-Login __default__ zugeordnet (das wiederum dem SELinux-Benutzer unconfined_u zugeordnet ist)

  • Wenn ein Linux-Benutzer mit dem Befehl useradd erstellt wird und keine Optionen angegeben werden, wird er dem SELinux-Benutzer unconfined_u zugeordnet

Das Folgende definiert die Standardzuordnung:

__default__   unconfined_u     s0-s0:c0.c1023  *

Einschränkung neuer Linux-Benutzer

useradd
Linux-Benutzer, die dem SELinux-Benutzer unconfined_u zugeordnet sind, laufen in der Domäne unconfined_t

Dies lässt sich durch Ausführen des Befehls id -Z erkennen, während man als Linux-Benutzer angemeldet ist, der unconfined_u zugeordnet ist:

id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Wenn Linux-Benutzer in der Domäne unconfined_t laufen, werden SELinux-Richtlinienregeln angewendet, es gibt jedoch Richtlinienregeln, die Linux-Benutzern in der Domäne unconfined_t nahezu uneingeschränkten Zugriff gewähren

  • Wenn nicht eingeschränkte Linux-Benutzer eine Anwendung ausführen, für die die SELinux-Richtlinie einen Übergang von der Domäne unconfined_t in ihre eigene eingeschränkte Domäne definiert, unterliegen diese nicht eingeschränkten Linux-Benutzer dennoch den Einschränkungen dieser eingeschränkten Domäne

Der Sicherheitsvorteil dabei ist, dass, obwohl ein Linux-Benutzer uneingeschränkt arbeitet, die Anwendung eingeschränkt bleibt und somit die Ausnutzung einer Schwachstelle in der Anwendung durch die Richtlinie begrenzt werden kann

Hinweis
  • Dies schützt das System nicht vor dem Benutzer
  • Stattdessen werden der Benutzer und das System vor möglichen Schäden geschützt, die durch eine Schwachstelle in der Anwendung verursacht werden

Verwenden Sie beim Erstellen von Linux-Benutzern mit dem Befehl useradd die Option -Z, um anzugeben, welchem SELinux-Benutzer sie zugeordnet werden sollen

Das folgende Beispiel erstellt einen neuen Linux-Benutzer namens useruuser und ordnet diesen Benutzer dem SELinux-Benutzer user_u zu

  • Linux-Benutzer, die dem SELinux-Benutzer user_u zugeordnet sind, laufen in der Domäne user_t
  • In dieser Domäne können Linux-Benutzer keine Setuid-Anwendungen ausführen, es sei denn, die SELinux-Richtlinie erlaubt dies (z. B. passwd), und sie können den Befehl su oder sudo nicht ausführen, wodurch verhindert wird, dass sie mit diesen Befehlen zum Root-Benutzer werden
Einen neuen Linux-Benutzer auf den SELinux-Benutzer user_u beschränken

1. Erstellen Sie als Root einen neuen Linux-Benutzer (useruuser), der dem SELinux-Benutzer user_u zugeordnet ist

sudo useradd -Z user_u useruuser

2. Um die Zuordnung zwischen useruuser und user_u anzuzeigen, geben Sie als Root den folgenden Befehl ein:

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 *
useruuser user_u s0 *

3. Weisen Sie als root dem Linux-Benutzer useruuser ein Passwort zu:

sudo passwd useruuser
Passwort für Benutzer useruuser ändern
Neues Passwort: Geben Sie ein Passwort ein
Neues Passwort erneut eingeben: Geben Sie dasselbe Passwort erneut ein
passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert

4. Melden Sie sich von Ihrer aktuellen Sitzung ab und melden Sie sich als Linux-Benutzer useruuser an

  • Wenn Sie sich anmelden, ordnet das Modul pam_selinux den Linux-Benutzer einem SELinux-Benutzer zu (in diesem Fall user_u) und richtet den resultierenden SELinux-Kontext ein
  • Die Shell des Linux-Benutzers wird dann mit diesem Kontext gestartet
  • Geben Sie den folgenden Befehl ein, um den Kontext eines Linux-Benutzers anzuzeigen:
id -Z
user_u:user_r:user_t:s0

5. Melden Sie sich von der Sitzung des Linux-Benutzers useruuser ab und melden Sie sich mit Ihrem Konto wieder an

  • Wenn Sie den Linux-Benutzer useruuser nicht mehr benötigen, geben Sie den folgenden Befehl als Root ein, um ihn zusammen mit seinem Home-Verzeichnis zu entfernen:
sudo userdel -Z -r useruuser

Bestehende Linux-Benutzer einschränken

semanage login

Wenn ein Linux-Benutzer dem SELinux-Benutzer unconfined_u zugeordnet ist (das Standardverhalten) und Sie ändern möchten, welchem SELinux-Benutzer er zugeordnet ist, verwenden Sie den Befehl semanage login

Das folgende Beispiel erstellt einen neuen Linux-Benutzer namens newuser und ordnet diesen Linux-Benutzer dann dem SELinux-Benutzer user_u zu:

Zuordnung von Linux-Benutzern zu SELinux-Benutzern

1. Erstellen Sie als root einen neuen Linux-Benutzer (newuser)

  • Da für diesen Benutzer die Standardzuordnung gilt, erscheint er nicht in der Ausgabe von semanage login -l:
sudo useradd newuser
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   *

2. Um den Linux-Benutzer newuser dem SELinux-Benutzer user_u zuzuordnen, geben Sie als root den folgenden Befehl ein:

sudo semanage login -a -s user_u newuser

Die Option -a fügt einen neuen Eintrag hinzu, und die Option -s gibt den SELinux-Benutzer an, dem ein Linux-Benutzer zugeordnet werden soll

  • Das letzte Argument, newuser, ist der Linux-Benutzer, den Sie dem angegebenen SELinux-Benutzer zuordnen möchten

3. Um die Zuordnung zwischen dem Linux-Benutzer newuser und user_u anzuzeigen, verwenden Sie erneut das Dienstprogramm semanage:

sudo semanage login -l

Anmeldename  SELinux-Benutzer  MLS/MCS-Bereich  Dienst

__default__  unconfined_u      s0-s0:c0.c1023   *
newuser      user_u s0 *
root         unconfined_u      s0-s0:c0.c1023   *
system_u     system_u          s0-s0:c0.c1023   *

4. Weisen Sie als root dem Linux-Benutzer newuser ein Passwort zu:

sudo passwd newuser
Passwort für Benutzer newuser ändern
Neues Passwort: Geben Sie ein Passwort ein
Neues Passwort erneut eingeben: Geben Sie dasselbe Passwort erneut ein
passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert

5. Melden Sie sich von Ihrer aktuellen Sitzung ab und melden Sie sich als Linux-Benutzer newuser an

  • Geben Sie den folgenden Befehl ein, um den SELinux-Kontext von newuser anzuzeigen:
id -Z
user_u:user_r:user_t:s0

6. Melden Sie sich von der Sitzung des Linux-Benutzers newuser ab und melden Sie sich wieder mit Ihrem Konto an

  • Wenn Sie den Linux-Benutzer newuser nicht benötigen, geben Sie den folgenden Befehl als root ein, um ihn zusammen mit seinem Home-Verzeichnis zu entfernen:
sudo userdel -r newuser

Entfernen Sie als root die Zuordnung zwischen dem Linux-Benutzer newuser und user_u:

sudo semanage login -d newuser
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 *

Ändern der Standardzuordnung

Unter Linux werden Benutzer standardmäßig dem SELinux-Login __default__ zugeordnet (der wiederum dem SELinux-Benutzer unconfined_u zugeordnet ist)

Wenn Sie möchten, dass neue Linux-Benutzer sowie Linux-Benutzer, die nicht ausdrücklich einem SELinux-Benutzer zugeordnet sind, standardmäßig eingeschränkt werden, ändern Sie die Standardzuordnung mit dem Befehl semanage login

Geben Sie beispielsweise als Root den folgenden Befehl ein, um die Standardzuordnung von unconfined_u auf user_u zu ändern:

sudo semanage login -m -S targeted -s user_u -r s0 __default__

Überprüfen Sie, ob der __default__-Login auf user_u zugeordnet ist:

sudo semanage login -l

Anmeldename  SELinux-Benutzer  MLS/MCS-Bereich  Dienst

__default__  user_u            s0-s0:c0.c1023   *
root         unconfined_u      s0-s0:c0.c1023   *
system_u     system_u          s0-s0:c0.c1023   *

Wenn ein neuer Linux-Benutzer angelegt wird und kein SELinux-Benutzer angegeben ist, oder wenn sich ein bestehender Linux-Benutzer anmeldet und nicht mit einem bestimmten Eintrag aus der Ausgabe von semanage login -l übereinstimmt, wird er gemäß der __default__-Anmeldung dem user_u zugeordnet

Um zum Standardverhalten zurückzukehren, geben Sie als Root den folgenden Befehl ein, um die Anmeldung __default__ dem SELinux-Benutzer unconfined_u zuzuordnen:

sudo semanage login -m -S targeted -s unconfined_u -r s0-s0:c0.c1023 __default__

xguest: Kiosk-Modus

Das xguest-Paket stellt ein Kiosk-Benutzerkonto bereit

  • Dieses Konto dient zur Sicherung von Rechnern, an denen sich Benutzer spontan anmelden und diese nutzen, wie in Bibliotheken, Banken, Flughäfen, Informationskiosken und Cafés
  • Das Kiosk-Benutzerkonto ist stark eingeschränkt: Im Wesentlichen erlaubt es einem Benutzer lediglich, sich anzumelden und mit Firefox im Internet zu surfen
  • Der Gastbenutzer ist xguest_u zugewiesen, siehe Tabelle SELinux-Benutzerfähigkeiten
  • Alle Änderungen, die während der Anmeldung mit diesem Konto vorgenommen werden, wie das Erstellen von Dateien oder das Ändern von Einstellungen, gehen beim Abmelden verloren
Kiosk-Konto einrichten

1. Installieren Sie als Root das xguest-Paket

  • Installieren Sie die erforderlichen Abhängigkeiten:
sudo yum install xguest

2. Damit das Kiosk-Konto von verschiedenen Personen genutzt werden kann, ist es nicht passwortgeschützt; daher kann das Konto nur geschützt werden, wenn SELinux im Enforcing-Modus läuft

  • Bevor Sie sich mit diesem Konto anmelden, überprüfen Sie mit dem Dienstprogramm getenforce, ob SELinux im Enforcing-Modus läuft:
getenforce
Enforcing

Ist dies nicht der Fall, finden Sie in Abschnitt Dauerhafte Änderungen an SELinux-Zuständen und -Modi, Informationen zum Wechsel in den Enforcing-Modus

  • Es ist nicht möglich, sich mit diesem Konto anzumelden, wenn SELinux im Permissive-Modus läuft oder deaktiviert ist

3. Sie können sich nur über den GNOME Display Manager (GDM) bei diesem Konto anmelden

  • Sobald das xguest-Paket installiert ist, wird dem GDM-Anmeldebildschirm ein Guest-Konto hinzugefügt

Boolesche Werte für Benutzer

Boolesche Werte für Benutzer, die Anwendungen ausführen

Wenn Linux-Benutzern nicht gestattet wird, Anwendungen (die die Berechtigungen der Benutzer erben) in ihren Home-Verzeichnissen und im Verzeichnis /tmp auszuführen, auf das sie Schreibzugriff haben, wird verhindert, dass fehlerhafte oder bösartige Anwendungen Dateien ändern, die den Benutzern gehören

Es stehen Boolesche Werte zur Verfügung, um dieses Verhalten zu ändern

  • werden mit dem setsebool konfiguriert, das als Root ausgeführt werden muss
  • setsebool -P nimmt dauerhafte Änderungen vor

Verwenden Sie die Option -P nicht, wenn Sie nicht möchten, dass die Änderungen über Neustarts hinweg bestehen bleiben

guest_t

Um Linux-Benutzern in der Domäne guest_t, die Ausführung von Anwendungen in ihren Home-Verzeichnissen und im Verzeichnis /tmp zu verhindern:

sudo setsebool -P guest_exec_content off

xguest_t

Um zu verhindern, dass Linux-Benutzer in der xguest_t-Domäne Anwendungen in ihren Home-Verzeichnissen und in /tmp ausführen:

sudo setsebool -P xguest_exec_content off

user_t

Um zu verhindern, dass Linux-Benutzer in der Domäne user_t Anwendungen in ihren Home-Verzeichnissen und in /tmp ausführen:

sudo setsebool -P user_exec_content off

staff_t

Verhindern, dass Linux-Benutzer in der Domäne staff_t Anwendungen in ihren Home-Verzeichnissen und in /tmp ausführen

sudo setsebool -P staff_exec_content off

Booleschen Wert staff_exec_content aktivieren

  • Linux-Benutzern in der Domäne staff_t erlauben Anwendungen in ihren Home-Verzeichnissen und in /tmp auszuführen:
sudo setsebool -P staff_exec_content on