Zum Inhalt springen

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

Aus Foxwiki
K Textersetzung - „wikitable“ durch „table table-striped table-hover“
 
(45 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''SELinux/DOC/03 Targeted Policy'''
{{Navigation|Linux/SELinux/02 Kontext|Linux/SELinux/03 Default Policy/Prozesse}}
'''Linux/SELinux/03 Default Policy''' - Targeted Policy


== Beschreibung ==
=== Beschreibung ===
; Targeted Policy
=== Targeted Policy ===
: Standard-Linux-SELinux-Richtlinie
Standard-Linux-SELinux-Richtlinie


; Verwendung der Targeted Policy
; Verwendung der Targeted Policy
{| class="wikitable options big"
{| class="table table-striped table-hover options big"
! Policy !! Beschreibung
! Policy !! Beschreibung
|-
|-
Zeile 15: Zeile 16:


; Beispiel
; Beispiel
* Angemeldete Benutzer laufen standardmäßig in der Domäne '''unconfined_t'''
{| class="table table-striped table-hover options big"
* Von init gestartete Systemprozesse laufen in der Domäne '''unconfined_service_t'''
! Domäne
* Domänen sind unconfined
! Beschreibung
 
; Speicherprüfungen
Prüfungen auf ausführbaren und beschreibbaren Speicher können sowohl für eingeschränkte als auch für unconfined Domänen gelten
* Standardmäßig können Subjekte, die in einer unconfined Domäne laufen, jedoch beschreibbaren Speicher zuweisen und diesen ausführen
* Diese Speicherprüfungen können durch das Setzen von [[Booleschen Werten]] aktiviert werden, wodurch die SELinux-Richtlinie zur Laufzeit geändert werden kann
 
== Prozesse ==
[[SELinux/DOC/03_Targeted_Policy/Prozesse]]
 
== 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 <nowiki>*</nowiki> root unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki> system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>
 
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
# Geben Sie als root den folgenden Befehl ein, um einen neuen Linux-Benutzer namens newuser anzulegen:
# useradd newuser
# 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
# 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
{| class="wikitable options big"
!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
| unconfined_t
|-
| Angemeldete Benutzer (standardmäßig)
| 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
| unconfined_service_t
|-
| Von init gestartete Systemprozesse
|xguest_u  || xguest_r  || xguest_t  || ja  || nein  || ja  || nur Firefox
|}
|}
Beide Domänen sind '''[[SELinux/unconfined|unconfined]]'''


* 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)
=== Speicherprüfungen ===
* Diese Benutzer können die setuid-Anwendungen su und sudo nicht ausführen und daher diese Anwendungen nicht nutzen, um Root-Rechte zu erlangen
Prüfungen auf ausführbaren und beschreibbaren Speicher
* 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
* Können für eingeschränkte und für unconfined Domänen gelten
* 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
 
# 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‘'
# 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‘'
# Ordnen Sie den neu erstellten SELinux-Benutzer einem bestehenden Linux-Benutzer zu:
semanage login -a -s ‚'SELinux_user_u‘' -rs0:c0.c1023 ‚'linux_user‘'
# 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‘ ‚
# Verwenden Sie das Dienstprogramm restorecon, um das Home-Verzeichnis von ‘'linux_user'‚ neu zu kennzeichnen:
# restorecon -FR -v /home/‘'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 ‚'SELinux_user_u‘':‚'default_role_r‘':‚'SELinux_user_t‘':s0:c0.c1023
# 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


* Standardmäßig können Subjekte, die in einer unconfined Domäne laufen, jedoch beschreibbaren Speicher zuweisen und diesen ausführen
Speicherprüfungen können durch das Setzen von [[Booleschen Werten]] aktiviert werden, wodurch die SELinux-Richtlinie zur Laufzeit geändert werden kann


<noinclude>
<noinclude>
== Anhang ==
== Anhang ==
=== Siehe auch ===
=== Siehe auch ===
; Unterseiten
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
; Inhalt der Kategorie Linux/SELinux
<div style="column-count:2">
<div style="column-count:2">
<categorytree hideroot=on mode="pages">SELinux/DOC</categorytree>
<categorytree hideroot=on mode="pages">Linux/SELinux</categorytree>
</div>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


=== Dokumentation ===
=== Dokumentation ===
Zeile 213: Zeile 64:
-->
-->


[[Kategorie:SELinux/DOC]]


[[Kategorie:Linux/SELinux]]
[[Kategorie:Linux/SELinux/03]]
{{Navigation|Linux/SELinux/02 Kontext|Linux/SELinux/03 Default Policy/Prozesse}}
</noinclude>
</noinclude>

Aktuelle Version vom 29. Juli 2026, 10:58 Uhr

Linux/SELinux/03 Default Policy - Targeted Policy

Beschreibung

Targeted Policy

Standard-Linux-SELinux-Richtlinie

Verwendung der Targeted Policy
Policy Beschreibung
targeted Prozesse, die als „targeted“ gekennzeichnet sind, laufen in einer eingeschränkten Domäne
not targeted Prozesse, die nicht als „targeted“ gekennzeichnet sind, laufen in einer uneingeschränkten Domäne
Beispiel
Domäne Beschreibung
unconfined_t Angemeldete Benutzer (standardmäßig)
unconfined_service_t Von init gestartete Systemprozesse

Beide Domänen sind unconfined

Speicherprüfungen

Prüfungen auf ausführbaren und beschreibbaren Speicher

  • Können für eingeschränkte und für unconfined Domänen gelten
  • Standardmäßig können Subjekte, die in einer unconfined Domäne laufen, jedoch beschreibbaren Speicher zuweisen und diesen ausführen

Speicherprüfungen können durch das Setzen von Booleschen Werten aktiviert werden, wodurch die SELinux-Richtlinie zur Laufzeit geändert werden kann


Anhang

Siehe auch

Unterseiten
Inhalt der Kategorie Linux/SELinux

Dokumentation

Projekt