Zum Inhalt springen

Linux/SELinux/06 Benutzer: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:


== Einschränkung von Benutzern ==
== Einschränkung von Benutzern ==
; Benutzer werden standardmäßig dem SELinux-Benutzer „unconfined_u“ zugeordnet
; 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“
* 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
* Das bedeutet, dass Benutzer innerhalb der Grenzen der Standard-DAC-Richtlinie von Linux auf das gesamte System zugreifen können
* In Red Hat Enterprise Linux stehen jedoch eine Reihe von eingeschränkten SELinux-Benutzern zur Verfügung
* 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
* Das bedeutet, dass Benutzer auf einen begrenzten Satz von Fähigkeiten beschränkt werden können


Zeile 12: Zeile 12:
* Netzwerkfunktionen nutzen
* Netzwerkfunktionen nutzen
* Setuid-Anwendungen ausführen (es sei denn, die SELinux-Richtlinie erlaubt dies)
* Setuid-Anwendungen ausführen (es sei denn, die SELinux-Richtlinie erlaubt dies)
* oder die Befehle „su“ und „sudo“ ausführen
* 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“
Beispielsweise befinden sich Prozesse, die vom SELinux-Benutzer '''user_u''' ausgeführt werden, in der Domäne '''user_t'''
* Solche Prozesse können eine Verbindung zum Netzwerk herstellen, aber nicht die Befehle „su“ oder „sudo“ ausführen
* Solche Prozesse können eine Verbindung zum Netzwerk herstellen, aber nicht die Befehle '''su''' oder '''sudo''' ausführen
* Dies trägt dazu bei, das System vor dem Benutzer zu schützen
* Dies trägt dazu bei, das System vor dem Benutzer zu schützen
* Weitere Informationen zu eingeschränkten Benutzern und ihren Fähigkeiten finden Sie in Abschnitt [[Eingeschränkte und uneingeschränkte Benutzer]], Tabelle [[SELinux-Benutzerfähigkeiten]]
* Weitere Informationen zu eingeschränkten Benutzern und ihren Fähigkeiten finden Sie in Abschnitt [[Eingeschränkte und uneingeschränkte Benutzer]], Tabelle '''[[SELinux-Benutzerfähigkeiten]]'''


== Zuordnungen zwischen Linux- und SELinux-Benutzern ==
== Zuordnungen zwischen Linux- und SELinux-Benutzern ==
Zeile 29: Zeile 29:
  system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>


In Red Hat Enterprise Linux werden Linux-Benutzer standardmäßig dem SELinux-Login „__default__“ zugeordnet (das wiederum dem SELinux-Benutzer „unconfined_u“ zugeordnet ist)
In Red Hat Enterprise Linux werden Linux-Benutzer 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
* 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:
Das Folgende definiert die Standardzuordnung:
Zeile 36: Zeile 36:


== Einschränkung neuer Linux-Benutzer: useradd ==
== Einschränkung neuer Linux-Benutzer: useradd ==
Linux-Benutzer, die dem SELinux-Benutzer „unconfined_u“ zugeordnet sind, laufen in der Domäne „unconfined_t“
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:
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
  id -Z
  unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
  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 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
* 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
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
Zeile 51: Zeile 51:
* Stattdessen werden der Benutzer und das System vor möglichen Schäden geschützt, die durch eine Schwachstelle in der Anwendung verursacht werden
* 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
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
* 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“
* 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.&nbsp;B.&nbsp;„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
* In dieser Domäne können Linux-Benutzer keine Setuid-Anwendungen ausführen, es sei denn, die SELinux-Richtlinie erlaubt dies (z.&nbsp;B.&nbsp;'''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
; Einen neuen Linux-Benutzer auf den SELinux-Benutzer '''user_u''' beschränken
# Erstellen Sie als Root einen neuen Linux-Benutzer („useruuser“), der dem SELinux-Benutzer „user_u“ zugeordnet ist
# Erstellen Sie als Root einen neuen Linux-Benutzer ('''useruuser'''), der dem SELinux-Benutzer '''user_u''' zugeordnet ist
  sudo useradd -Z user_u useruuser
  sudo useradd -Z user_u useruuser
# Um die Zuordnung zwischen „useruuser“ und „user_u“ anzuzeigen, geben Sie als Root den folgenden Befehl ein:
# Um die Zuordnung zwischen '''useruuser''' und '''user_u''' anzuzeigen, geben Sie als Root den folgenden Befehl ein:
  sudo semanage login -l
  sudo semanage login -l


Zeile 66: Zeile 66:
  __default__ unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  __default__ unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  root 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>
system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  useruuser user_u s0 <nowiki>*</nowiki>
  useruuser user_u s0 <nowiki>*</nowiki>
# Weisen Sie als root dem Linux-Benutzer 'useruuser‘' ein Passwort zu:
# Weisen Sie als root dem Linux-Benutzer '''useruuser''' ein Passwort zu:
  sudo passwd useruuser
  sudo passwd useruuser
  Passwort für Benutzer useruuser ändern
  Passwort für Benutzer useruuser ändern
 
Neues Passwort: '''Geben Sie ein Passwort ein'''
Neues Passwort: 'Geben Sie ein Passwort ein‘'
  Neues Passwort erneut eingeben: '''Geben Sie dasselbe Passwort erneut ein'''
  Neues Passwort erneut eingeben: 'Geben Sie dasselbe Passwort erneut ein‘'
  passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert
  passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert
# Melden Sie sich von Ihrer aktuellen Sitzung ab und melden Sie sich als Linux-Benutzer 'useruuser‘' an
# 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
* 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
* Die Shell des Linux-Benutzers wird dann mit diesem Kontext gestartet
* Geben Sie den folgenden Befehl ein, um den Kontext eines Linux-Benutzers anzuzeigen:
* Geben Sie den folgenden Befehl ein, um den Kontext eines Linux-Benutzers anzuzeigen:
  ~]$ id -Z
  id -Z
  user_u:user_r:user_t:s0
  user_u:user_r:user_t:s0
 
# Melden Sie sich von der Sitzung des Linux-Benutzers '''useruuser''' ab und melden Sie sich mit Ihrem Konto wieder an
# 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:
* 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
  sudo userdel -Z -r useruuser


== Bestehende Linux-Benutzer einschränken: semanage login ==
== 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‘'
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:
* 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
; Zuordnung von Linux-Benutzern zu SELinux-Benutzern
# Erstellen Sie als root einen neuen Linux-Benutzer ('newuser‘')
# 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‘':
* Da für diesen Benutzer die Standardzuordnung gilt, erscheint er nicht in der Ausgabe von '''semanage login -l''':
  sudo useradd newuser
  sudo useradd newuser
  sudo semanage login -l
  sudo semanage login -l
Zeile 103: Zeile 100:
  system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>
   
   
# Um den Linux-Benutzer „newuser“ dem SELinux-Benutzer „user_u“ zuzuordnen, geben Sie als root den folgenden Befehl ein:
# 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
  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
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
* Das letzte Argument, '''newuser''', ist der Linux-Benutzer, den Sie dem angegebenen SELinux-Benutzer zuordnen möchten
# Um die Zuordnung zwischen dem Linux-Benutzer 'newuser‘' und 'user_u‘' anzuzeigen, verwenden Sie erneut das Dienstprogramm 'semanage‘':
# Um die Zuordnung zwischen dem Linux-Benutzer '''newuser''' und '''user_u''' anzuzeigen, verwenden Sie erneut das Dienstprogramm '''semanage''':
  sudo semanage login -l
  sudo semanage login -l


Zeile 117: Zeile 114:
  root 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>
  system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>
# Weisen Sie als root dem Linux-Benutzer 'newuser‘' ein Passwort zu:
# Weisen Sie als root dem Linux-Benutzer '''newuser''' ein Passwort zu:
  sudo passwd newuser
  sudo passwd newuser
  Passwort für Benutzer newuser ändern
  Passwort für Benutzer newuser ändern
  Neues Passwort: 'Geben Sie ein Passwort ein‘'
  Neues Passwort: '''Geben Sie ein Passwort ein'''
  Neues Passwort erneut eingeben: 'Geben Sie dasselbe Passwort erneut ein‘'
  Neues Passwort erneut eingeben: '''Geben Sie dasselbe Passwort erneut ein'''
  passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert
  passwd: Alle Authentifizierungstoken wurden erfolgreich aktualisiert
# Melden Sie sich von Ihrer aktuellen Sitzung ab und melden Sie sich als Linux-Benutzer 'newuser‘' an
# 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:
* Geben Sie den folgenden Befehl ein, um den SELinux-Kontext von '''newuser''' anzuzeigen:
  id -Z
  id -Z
  user_u:user_r:user_t:s0
  user_u:user_r:user_t:s0
# Melden Sie sich von der Sitzung des Linux-Benutzers 'newuser‘' ab und melden Sie sich wieder mit Ihrem Konto an
# 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:
* 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
  sudo userdel -r newuser
Entfernen Sie als root die Zuordnung zwischen dem Linux-Benutzer 'newuser‘' und 'user_u‘':
Entfernen Sie als root die Zuordnung zwischen dem Linux-Benutzer '''newuser''' und '''user_u''':
  sudo semanage login -d newuser
  sudo semanage login -d newuser
  sudo semanage login -l
  sudo semanage login -l
 
Anmeldename SELinux-Benutzer MLS/MCS-Bereich Dienst
Anmeldename SELinux-Benutzer MLS/MCS-Bereich Dienst
 
  __default__ unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  __default__ unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  root unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  root unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>
Zeile 141: Zeile 138:


== Ändern der Standardzuordnung ==
== Ändern der Standardzuordnung ==
Unter Linux werden Benutzer standardmäßig dem SELinux-Login „__default__“ zugeordnet (der wiederum dem SELinux-Benutzer „unconfined_u“ zugeordnet ist)
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‘'
  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:
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__
  sudo semanage login -m -S targeted -s '''user_u''' -r s0 __default__


Überprüfen Sie, ob der '__default__‘'-Login auf 'user_u‘' zugeordnet ist:
Überprüfen Sie, ob der '''__default__'''-Login auf '''user_u''' zugeordnet ist:
  sudo semanage login -l
  sudo semanage login -l
 
  Login-Name SELinux-Benutzer MLS/MCS-Bereich Dienst
  Login-Name SELinux-Benutzer MLS/MCS-Bereich Dienst
 
  __default__ user_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  __default__ user_u s0-s0:c0.c1023 <nowiki>*</nowiki>
  root 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>
  system_u system_u s0-s0:c0.c1023 <nowiki>*</nowiki>


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
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:
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__
  sudo semanage login -m -S targeted -s '''unconfined_u''' -r s0-s0:c0.c1023 __default__


== xguest: Kiosk-Modus ==
== xguest: Kiosk-Modus ==
Zeile 165: Zeile 162:
* Dieses Konto dient zur Sicherung von Rechnern, an denen sich Benutzer spontan anmelden und diese nutzen, wie beispielsweise in Bibliotheken, Banken, Flughäfen, Informationskiosken und Cafés
* Dieses Konto dient zur Sicherung von Rechnern, an denen sich Benutzer spontan anmelden und diese nutzen, wie beispielsweise 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
* 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]]
* 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
* 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


Zeile 173: Zeile 170:
  sudo yum install xguest
  sudo yum install xguest
# 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
# 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:
* Bevor Sie sich mit diesem Konto anmelden, überprüfen Sie mit dem Dienstprogramm '''getenforce''', ob SELinux im Enforcing-Modus läuft:
  getenforce
  getenforce
  Enforcing
  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
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
* Es ist nicht möglich, sich mit diesem Konto anzumelden, wenn SELinux im Permissive-Modus läuft oder deaktiviert ist
# Sie können sich nur über den GNOME Display Manager (GDM) bei diesem Konto anmelden
# 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
* 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 ==
; Boolesche Werte für Benutzer, die Anwendungen ausführen
; 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
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; diese werden mit dem Dienstprogramm „setsebool“ konfiguriert, das als Root ausgeführt werden muss
Es stehen Boolesche Werte zur Verfügung, um dieses Verhalten zu ändern; diese werden mit dem Dienstprogramm '''setsebool''' konfiguriert, das als Root ausgeführt werden muss
* Der Befehl „setsebool -P“ nimmt dauerhafte Änderungen vor
* Der Befehl '''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:
Verwenden Sie die Option '''-P'‚ nicht, wenn Sie nicht möchten, dass die Änderungen über Neustarts hinweg bestehen bleiben:


=== guest_t ===
=== 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
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 ===
=== xguest_t ===
Um zu 'verhindern‘', dass Linux-Benutzer in der 'xguest_t‘'-Domäne Anwendungen in ihren Home-Verzeichnissen und in ''/tmp'' ausführen:
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
  sudo setsebool -P xguest_exec_content off


=== user_t ===
=== user_t ===
Um zu 'verhindern‘', dass Linux-Benutzer in der Domäne 'user_t‘' Anwendungen in ihren Home-Verzeichnissen und in ''/tmp'' ausführen:
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
  sudo setsebool -P user_exec_content off


=== staff_t ===
=== staff_t ===
Um zu '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 offUm den Booleschen Wert 'staff_exec_content‘' zu aktivieren und Linux-Benutzern in der Domäne 'staff_t‘' zu 'erlauben‘', Anwendungen in ihren Home-Verzeichnissen und in ''/tmp'' auszuführen:
Um zu '''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 offUm den Booleschen Wert '''staff_exec_content''' zu aktivieren und Linux-Benutzern in der Domäne '''staff_t''' zu '''erlauben''', Anwendungen in ihren Home-Verzeichnissen und in '''/tmp''' auszuführen:
  sudo setsebool -P staff_exec_content on
  sudo setsebool -P staff_exec_content on


[[Kategorie:SELinux/DOC]]
[[Kategorie:SELinux/DOC]]

Version vom 25. März 2026, 08:51 Uhr

SELinux/DOC/06 Benutzer einschränken

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

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 *

In Red Hat Enterprise Linux werden Linux-Benutzer 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
  1. 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 *
  1. 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
  1. 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
  1. 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 *

  1. 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
  1. 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 *
  1. 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
  1. 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
  1. 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

Login-Name 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 beispielsweise 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

So richten Sie das Kiosk-Konto ein:

  1. Installieren Sie als Root das xguest-Paket
  • Installieren Sie die erforderlichen Abhängigkeiten:
sudo yum install xguest
  1. 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
  1. 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; diese werden mit dem Dienstprogramm setsebool konfiguriert, das als Root ausgeführt werden muss

  • Der Befehl 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

Um zu 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 offUm den Booleschen Wert staff_exec_content zu aktivieren und Linux-Benutzern in der Domäne staff_t zu erlauben, Anwendungen in ihren Home-Verzeichnissen und in /tmp auszuführen:

sudo setsebool -P staff_exec_content on