Zum Inhalt springen

Linux/SELinux/03 Default Policy/Benutzer: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
'''Linux/SELinux/03 Default Policy/Benutzer''' - Eingeschränkte und uneingeschränkte Benutzer
'''Linux/SELinux/03 Default Policy/Benutzer''' - Eingeschränkte und uneingeschränkte Benutzer
{{Navigation|Linux/SELinux/03 Default Policy|Linux/SELinux/04 Arbeiten mit SELinux}}


== Beschreibung ==
== Beschreibung ==
Zeile 199: Zeile 200:


{{Navigation|Linux/SELinux/03 Default Policy|Linux/SELinux/04 Arbeiten mit SELinux}}
{{Navigation|Linux/SELinux/03 Default Policy|Linux/SELinux/04 Arbeiten mit SELinux}}


[[Kategorie:Linux/SELinux/03]]
[[Kategorie:Linux/SELinux/03]]

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

Linux/SELinux/03 Default Policy/Benutzer - Eingeschränkte und uneingeschränkte Benutzer

Beschreibung

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

2. 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:
Neues UNIX-Passwort erneut eingeben:
passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert

3. 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 werden

Ebenso 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:

Benutzerfähigkeiten

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 Linux/SELinux/06 Benutzer

  • Der einzige Netzwerkzugriff, über den Linux-Benutzer in der Domäne xguest_t verfügen, ist die Verbindung von Firefox zu Webseiten
Beachten

system_u ist eine spezielle Benutzeridentität für Systemprozesse und -objekte

  • 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
Spezielle Rollen

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 hier
  • dbadm_r kann nur SELinux-Typen verwalten, die mit der MariaDB-Datenbank und dem PostgreSQL-Datenbankmanagementsystem zusammenhängen
Weitere Informationen finden Sie in Typen und 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
Rollen auflisten

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

$ seinfo -r

Der Befehl seinfo vom Paket setools-console bereitgestellt, das standardmäßig nicht installiert ist

sudo-Übergang

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 der Tabelle „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
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
Vorgehen

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

2. Richten Sie die Standard-SELinux-Policy-Kontextdatei ein

Um 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

3. Ordnen Sie den neu erstellten SELinux-Benutzer einem bestehenden Linux-Benutzer zu:

semanage login -a -s SELinux_user_u -rs0:c0.c1023 linux_user

4. 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

5. Verwenden Sie das Dienstprogramm restorecon, um das Home-Verzeichnis von ‘'linux_user'‚ neu zu kennzeichnen:

# restorecon -FR -v /home/linux_user

6. 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

7. 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
# 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