Linux/SELinux/03 Default Policy/Benutzer: Unterschied zwischen den Versionen
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
- 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