Zum Inhalt springen

Linux/SELinux/03 Default Policy/Benutzer

Aus Foxwiki
Version vom 24. März 2026, 08:49 Uhr von Dirkwagner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Benutzer == ; Eingeschränkte und uneingeschränkte Benutzer Jeder Linux-Benutzer wird mithilfe der SELinux-Richtlinie einem SELinux-Benutzer zugeordnet * Dadurch können Linux-Benutzer die Einschränkungen von SELinux-Benutzern erben * Diese Zuordnung der Linux-Benutzer lässt sich durch Ausführen des Befehls `semanage login -l` als root anzeigen: # semanage login -l Anmeldename SELinux-Benutzer MLS/MCS-Bereich Dienst __default__ unconfined_u s0-s…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Benutzer

Eingeschränkte und uneingeschränkte Benutzer

Jeder Linux-Benutzer wird mithilfe der SELinux-Richtlinie einem SELinux-Benutzer zugeordnet

  • Dadurch können Linux-Benutzer die Einschränkungen von SELinux-Benutzern erben
  • Diese Zuordnung der Linux-Benutzer lässt sich durch Ausführen des Befehls `semanage login -l` als root anzeigen:
# 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 *

In Linux werden Linux-Benutzer standardmäßig dem SELinux-Login __default__ zugeordnet, der wiederum dem SELinux-Benutzer unconfined_u zugeordnet ist

  • Die folgende Zeile definiert die Standardzuordnung:
__default__ unconfined_u s0-s0:c0.c1023

Das folgende Verfahren zeigt, wie Sie einen neuen Linux-Benutzer zum System hinzufügen und diesen Benutzer dem SELinux-Benutzer unconfined_u zuordnen

  • Es wird davon ausgegangen, dass der Root-Benutzer im unconfined-Modus läuft, wie es in Linux standardmäßig der Fall ist:
Zuordnung eines neuen Linux-Benutzers zum SELinux-Benutzer unconfined_u
  1. Geben Sie als root den folgenden Befehl ein, um einen neuen Linux-Benutzer namens newuser anzulegen:
# useradd newuser
  1. So weisen Sie dem Linux-Benutzer newuser ein Passwort zu
    • Geben Sie als root den folgenden Befehl ein:
# passwd newuser Passwort für Benutzer newuser ändern
Neues UNIX-Passwort: ‚'Geben Sie ein Passwort ein‘' Neues UNIX-Passwort erneut eingeben: ‚'Geben Sie dasselbe Passwort erneut ein‘' passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert
  1. Melden Sie sich von Ihrer aktuellen Sitzung ab und melden Sie sich als Linux-Benutzer „newuser“ an
  • Bei der Anmeldung ordnet das PAM-Modul pam_selinux den Linux-Benutzer automatisch einem SELinux-Benutzer zu (in diesem Fall unconfined_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:

[newuser@localhost $ id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 
Hinweis
Wenn Sie den Benutzer „newuser“ auf Ihrem System nicht mehr benötigen, melden Sie sich von der Sitzung des Linux-Benutzers „newuser“ ab, melden Sie sich mit Ihrem Konto an und führen Sie den Befehl userdel -r newuser als Root aus
  • Dadurch wird newuser zusammen mit seinem Home-Verzeichnis entfernt

Eingeschränkte und uneingeschränkte Linux-Benutzer unterliegen Prüfungen auf ausführbaren und beschreibbaren Speicher und werden zudem durch MCS oder MLS eingeschränkt

Um die verfügbaren SELinux-Benutzer aufzulisten, geben Sie den folgenden Befehl ein:

seinfo -u Benutzer: 8
sysadm_u
system_u
xguest_u
root
guest_u
staff_u
user_u
unconfined_u

Beachten Sie, dass der Befehl seinfo vom Paket setools-console bereitgestellt wird, das standardmäßig nicht installiert ist

Wenn ein nicht eingeschränkter Linux-Benutzer eine Anwendung ausführt, die laut SELinux-Richtlinie als solche definiert ist, die von der Domäne „unconfined_t“ in ihre eigene eingeschränkte Domäne wechseln kann, unterliegt der nicht eingeschränkte Linux-Benutzer dennoch den Einschränkungen dieser eingeschränkten Domäne

  • Der Sicherheitsvorteil dabei ist, dass die Anwendung auch dann eingeschränkt bleibt, wenn ein Linux-Benutzer uneingeschränkt arbeitet
  • Daher kann die Ausnutzung einer Schwachstelle in der Anwendung durch die Richtlinie begrenzt werdenEbenso können wir diese Prüfungen auf eingeschränkte Benutzer anwenden
  • Jeder eingeschränkte Linux-Benutzer unterliegt den Einschränkungen einer eingeschränkten Benutzerdomäne
  • Die SELinux-Richtlinie kann auch einen Übergang von einer eingeschränkten Benutzerdomäne zu einer eigenen Ziel-Einschränkungsdomäne definieren
  • In einem solchen Fall unterliegen eingeschränkte Linux-Benutzer den Einschränkungen dieser Ziel-Einschränkungsdomäne
  • Der wichtigste Punkt ist, dass den eingeschränkten Benutzern entsprechend ihrer Rolle besondere Privilegien zugewiesen werden

In der folgenden Tabelle finden Sie Beispiele für grundlegende eingeschränkte Domänen für Linux-Benutzer unter Linux:

SELinux-Benutzerfähigkeiten
Benutzer Rolle Domäne X Window System su oder sudo Ausführen im Home-Verzeichnis und in /tmp (Standard) Netzwerk
sysadm_u sysadm_r sysadm_t ja su und sudo ja ja
staff_u staff_r staff_t ja nur sudo ja ja
user_u user_r user_t ja nein ja ja
guest_u guest_r guest_t nein nein ja nein
xguest_u xguest_r xguest_t ja nein ja nur Firefox
  • Linux-Benutzer in den Domänen user_t, guest_t und xguest_t können Anwendungen mit festgelegter Benutzer-ID (setuid) nur ausführen, wenn die SELinux-Richtlinie dies zulässt (z. B. passwd)
  • Diese Benutzer können die setuid-Anwendungen su und sudo nicht ausführen und daher diese Anwendungen nicht nutzen, um Root-Rechte zu erlangen
  • Linux-Benutzer in den Domänen sysadm_t, staff_t, user_t und xguest_t können sich über das X Window System und ein Terminal anmelden
  • Standardmäßig können Linux-Benutzer in den Domänen staff_t, user_t, guest_t und xguest_t Anwendungen in ihren Home-Verzeichnissen und in /tmp ausführen
  • Um zu verhindern, dass sie Anwendungen, die die Berechtigungen der Benutzer erben, in Verzeichnissen ausführen, auf die sie Schreibzugriff haben, setzen Sie die Booleans „guest_exec_content“ und „xguest_exec_content“ auf „off“
  • Dies hilft dabei, zu verhindern, dass fehlerhafte oder bösartige Anwendungen die Dateien der Benutzer verändern
  • Informationen darüber, wie Sie Benutzern das Ausführen von Anwendungen in ihren Home-Verzeichnissen und in /tmp erlauben oder verhindern können, finden Sie in Abschnitt 6.6, „Booleane für Benutzer, die Anwendungen ausführen“
  • Der einzige Netzwerkzugriff, über den Linux-Benutzer in der Domäne xguest_t verfügen, ist die Verbindung von Firefox zu Webseiten

Beachten Sie, dass system_u eine spezielle Benutzeridentität für Systemprozesse und -objekte ist

  • Sie darf niemals mit einem Linux-Benutzer verknüpft werden
  • Außerdem sind unconfined_u und root nicht eingeschränkte Benutzer
  • Aus diesen Gründen sind sie nicht in der oben genannten Tabelle der SELinux-Benutzerfähigkeiten enthalten

Neben den bereits erwähnten SELinux-Benutzern gibt es spezielle Rollen, die diesen Benutzern zugeordnet werden können

Diese Rollen legen fest, was SELinux dem Benutzer erlaubt:

  • webadm_r kann nur SELinux-Typen verwalten, die mit dem Apache-HTTP-Server zusammenhängen
  • Weitere Informationen finden Sie in Abschnitt 13.2, „Typen“
  • dbadm_r kann nur SELinux-Typen verwalten, die mit der MariaDB-Datenbank und dem PostgreSQL-Datenbankmanagementsystem zusammenhängen

Weitere Informationen finden Sie in Abschnitt 20.2, „Typen“ und Abschnitt 21.2, „Typen“

  • logadm_r kann nur SELinux-Typen verwalten, die mit den syslog- und auditlog-Prozessen zusammenhängen
  • secadm_r kann nur SELinux verwalten
  • auditadm_r kann nur Prozesse verwalten, die mit dem Audit-Subsystem zusammenhängen

Um alle verfügbaren Rollen aufzulisten, geben Sie den folgenden Befehl ein:

$ seinfo -r

Wie bereits erwähnt, wird der Befehl seinfo vom Paket setools-console bereitgestellt, das standardmäßig nicht installiert ist

sudo-Übergang

Der sudo-Übergang und SELinux-Rollen

In bestimmten Fällen müssen eingeschränkte Benutzer eine administrative Aufgabe ausführen, die Root-Rechte erfordert

  • Dazu muss ein solcher eingeschränkter Benutzer mithilfe des Befehls sudo die SELinux-Rolle „confined administrator“ annehmen
  • Der Befehl sudo wird verwendet, um vertrauenswürdigen Benutzern administrativen Zugriff zu gewähren

Wenn Benutzer einem administrativen Befehl sudo voranstellen, werden sie zur Eingabe ihres „eigenen“ Passworts aufgefordert

  • Nach der Authentifizierung und vorausgesetzt, der Befehl ist zulässig, wird der administrative Befehl so ausgeführt, als wären sie der Root-Benutzer

Wie in Tabelle 3.1, „SELinux-Benutzerfähigkeiten“, dargestellt, dürfen standardmäßig nur die eingeschränkten SELinux-Benutzer staff_u und sysadm_u sudo verwenden

  • Wenn solche Benutzer einen Befehl mit sudo ausführen, kann ihre Rolle basierend auf den Regeln geändert werden, die in der Konfigurationsdatei /etc/sudoers oder in einer entsprechenden Datei im Verzeichnis /etc/sudoers.d/ festgelegt sind, sofern eine solche Datei existiert

Weitere Informationen zu sudo finden Sie im Abschnitt „Gaining Privileges“ im Linux 7 System Administrator's Guide

Konfigurieren des sudo-Übergangs

Diese Vorgehensweise zeigt, wie Sie sudo so einrichten, dass ein neu erstellter eingeschränkter Benutzer vom Typ ‚'SELinux_user_u‘' von einer ‚'default_role_r‘'-Rolle in eine ‚'administrator_r‘'-Administratorrolle wechselt

Hinweis
Um eine eingeschränkte Administratorrolle für einen bereits vorhandenen SELinux-Benutzer zu konfigurieren, überspringen Sie die ersten beiden Schritte
  1. Erstellen Sie einen neuen SELinux-Benutzer und legen Sie die Standard-SELinux-Rolle sowie eine zusätzliche eingeschränkte Administratorrolle für diesen Benutzer fest:
# semanage user -a -r s0-s0:c0.c1023 -R „‚'default_role_r‘' ‚'administrator_r‘'“ ‚'SELinux_user_u‘'
  1. Richten Sie die Standard-SELinux-Policy-Kontextdatei ein
    • Um beispielsweise die gleichen SELinux-Regeln wie der SELinux-Benutzer „staff_u“ zu verwenden, kopieren Sie die Kontextdatei von „staff_u“:
# cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/‚'SELinux_user_u‘'
  1. Ordnen Sie den neu erstellten SELinux-Benutzer einem bestehenden Linux-Benutzer zu:
semanage login -a -s ‚'SELinux_user_u‘' -rs0:c0.c1023 ‚'linux_user‘'
  1. Erstellen Sie eine neue Konfigurationsdatei mit demselben Namen wie Ihr Linux-Benutzer im Verzeichnis /etc/sudoers.d/ und fügen Sie folgende Zeichenfolge hinzu:
# echo „‚'linux_user‘' ALL=(ALL) TYPE=‚'administrator_t‘' ROLE=‚'administrator_r‘' /bin/bash “ > /etc/sudoers.d/‚'linux_user‘ ‚
  1. Verwenden Sie das Dienstprogramm restorecon, um das Home-Verzeichnis von ‘'linux_user'‚ neu zu kennzeichnen:
# restorecon -FR -v /home/‘'linux_user
  1. Melden Sie sich als der neu erstellte Linux-Benutzer am System an und überprüfen Sie, ob der Benutzer mit der Standard-SELinux-Rolle gekennzeichnet ist:
$ id -Z ‚'SELinux_user_u‘':‚'default_role_r‘':‚'SELinux_user_t‘':s0:c0.c1023
  1. Führen Sie sudo aus, um den SELinux-Kontext des Benutzers auf die in /etc/sudoers.d/‚'linux_user‘' angegebene zusätzliche SELinux-Rolle zu ändern
    • Die mit sudo verwendete Option -i bewirkt, dass eine interaktive Shell ausgeführt wird:
$ sudo -i
# id -Z ‚'SELinux_user_u‘':‚'administrator_r‘':‚'administrator_t‘':s0:c0.c1023

Um die Platzhalter wie ‚'default_role_r‘' oder ‚'administrator_r‘' besser zu verstehen, siehe das folgende Beispiel

Beispiel
Konfiguration des sudo-Übergangs

In diesem Beispiel wird ein neuer SELinux-Benutzer confined_u mit der standardmäßig zugewiesenen Rolle staff_r erstellt und sudo so konfiguriert, dass die Rolle von confined_u von staff_r auf webadm_r geändert wird

Geben Sie alle folgenden Befehle als Root-Benutzer in der Rolle sysadm_r oder unconfined_r ein

# semanage user -a -r s0-s0:c0.c1023 -R „staff_r webadm_r“ confined_u
# cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/confined_u

  1. semanage login -a -s confined_u -rs0:c0.c1023 linux_user
# restorecon -FR -v /home/linux_user
# echo „‚'linux_user‘' ALL=(ALL) ROLE=webadm_r TYPE=webadm_t /bin/bash “ > /etc/sudoers.d/linux_user
  • Melden Sie sich als der neu erstellte Linux-Benutzer am System an und überprüfen Sie, ob der Benutzer mit der Standard-SELinux-Rolle gekennzeichnet ist:
id -Z confined_u:staff_r:staff_t:s0:c0.c1023 $ sudo -i # id -Z confined_u:webadm_r:webadm_t:s0:c0.c1023