Zum Inhalt springen

Linux/SELinux/06 Benutzer: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=== Chapter 6. Confining Users ===
=== Kapitel 6. Einschränkung von Benutzern ===
Unter Linux werden Benutzer 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. In Red Hat Enterprise Linux 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.


In Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux, users are mapped to the SELinux <tt>unconfined_u</tt> user by default. All processes run by <tt>unconfined_u</tt> are in the <tt>unconfined_t</tt> domain. This means that users can access across the system within the limits of the standard Linux DAC policy. However, a number of confined SELinux users are available in Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux. This means that users can be restricted to limited set of capabilities. Each Linux user is mapped to an SELinux user using SELinux policy, allowing Linux users to inherit the restrictions placed on SELinux users, for example (depending on the user), not being able to: * run the X Window System
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. 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 3.3, „Eingeschränkte und uneingeschränkte Benutzer“, Tabelle 3.1, „SELinux-Benutzerfähigkeiten“.  
* use networking
* run setuid applications (unless SELinux policy permits it)
* or run the <tt>su</tt> and <tt>sudo</tt> commands.  


=== 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


For example, processes run by the SELinux <tt>user_u</tt> user are in the <tt>user_t</tt> domain. Such processes can connect to network, but cannot run the <tt>su</tt> or <tt>sudo</tt> commands. This helps protect the system from the user. See Section&nbsp;3.3, “Confined and Unconfined Users”, Table&nbsp;3.1, “SELinux User Capabilities” for further information about confined users and their capabilities.
__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>


=== 6.1. Linux and SELinux User Mappings ===
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.


As root, enter the following command to view the mapping between Linux users and SELinux users:  
Das Folgende definiert die Standardzuordnung:  
__default__ unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>


~]# semanage login -l
=== Einschränkung neuer Linux-Benutzer: useradd ===
Linux-Benutzer, die dem SELinux-Benutzer „unconfined_u“ zugeordnet sind, laufen in der Domäne „unconfined_t“.


Login Name          SELinux User        MLS/MCS Range        Service
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


__default__          unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki>
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.
root                unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki>
system_u            system_u            s0-s0:c0.c1023      <nowiki>*</nowiki>
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.  


In Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux, Linux users are mapped to the SELinux <tt>__default__</tt> login by default (which is in turn mapped to the SELinux <tt>unconfined_u</tt> user). When a Linux user is created with the <tt>useradd</tt> command, if no options are specified, they are mapped to the SELinux <tt>unconfined_u</tt> user. The following defines the default-mapping:
; 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.


__default__          unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki>
; 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.
sudo useradd -Z user_u useruuser
# 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


=== 6.2. Confining New Linux Users: useradd ===
__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>
useruuser user_u s0 <nowiki>*</nowiki>
# 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.
# 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
# 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


Linux users mapped to the SELinux <tt>unconfined_u</tt> user run in the <tt>unconfined_t</tt> domain. This is seen by running the <tt>id -Z</tt> command while logged-in as a Linux user mapped to <tt>unconfined_u</tt>:  
=== 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:


~]$ id -Z
; Zuordnung von Linux-Benutzern zu SELinux-Benutzern
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
# 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


When Linux users run in the <tt>unconfined_t</tt> domain, SELinux policy rules are applied, but policy rules exist that allow Linux users running in the <tt>unconfined_t</tt> domain almost all access. If unconfined Linux users execute an application that SELinux policy defines can transition from the <tt>unconfined_t</tt> domain to its own confined domain, unconfined Linux users are still subject to the restrictions of that confined domain. The security benefit of this is that, even though a Linux user is running unconfined, the application remains confined, and therefore, the exploitation of a flaw in the application can be limited by policy.  
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>
# 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.  
# 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


'''Note'''
__default__ unconfined_u s0-s0:c0.c1023 <nowiki>*</nowiki>
newuser user_u s0 <nowiki>*</nowiki>
root unconfined_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:
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.
# 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
# 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


This does not protect the system from the user. Instead, the user and the system are being protected from possible damage caused by a flaw in the application.  
__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>


When creating Linux users with the <tt>useradd</tt> command, use the <tt>-Z</tt> option to specify which SELinux user they are mapped to. The following example creates a new Linux user, <tt>useruuser</tt>, and maps that user to the SELinux <tt>user_u</tt> user. Linux users mapped to the SELinux <tt>user_u</tt> user run in the <tt>user_t</tt> domain. In this domain, Linux users are unable to run setuid applications unless SELinux policy permits it (such as <tt>passwd</tt>), and cannot run the <tt>su</tt> or <tt>sudo</tt> command, preventing them from becoming the root user with these commands.  
=== Ä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__


'''Procedure&nbsp;6.1.&nbsp;Confining a New Linux User to <tt>user_u</tt> SELinux User'''# As root, create a new Linux user (<tt>useruuser</tt>) that is mapped to the SELinux <tt>user_u</tt> user. <br/>~]# useradd -Z user_u useruuser
Überprüfen Sie, ob der ‚'__default__‘'-Login auf ‚'user_u‘' zugeordnet ist:
# To view the mapping between <tt>useruuser</tt> and <tt>user_u</tt>, enter the following command as root: <br/>~]# semanage login -l<br/>
Login Name          SELinux User        MLS/MCS Range        Service<br/>
__default__          unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki><br/>root                unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki><br/>system_u            system_u            s0-s0:c0.c1023      <nowiki>*</nowiki><br/>useruuser            user_u              s0                  <nowiki>*</nowiki>
# As root, assign a password to the Linux <tt>useruuser</tt> user: <br/>~]# passwd useruuser<br/>Changing password for user useruuser.<br/>New password: ''Enter a password''<br/>Retype new password: ''Enter the same password again''<br/>passwd: all authentication tokens updated successfully.
# Log out of your current session, and log in as the Linux <tt>useruuser</tt> user. When you log in, the <tt>pam_selinux</tt> module maps the Linux user to an SELinux user (in this case, <tt>user_u</tt>), and sets up the resulting SELinux context. The Linux user's shell is then launched with this context. Enter the following command to view the context of a Linux user: <br/>~]$ id -Z<br/>user_u:user_r:user_t:s0
# Log out of the Linux <tt>useruuser</tt>'s session, and log back in with your account. If you do not want the Linux <tt>useruuser</tt> user, enter the following command as root to remove it, along with its home directory: <br/>~]# userdel -Z -r useruuser


sudo semanage login -l


Login-Name SELinux-Benutzer MLS/MCS-Bereich Dienst
__default__ user_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>


=== 6.3. Confining Existing Linux Users: semanage login ===
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.


If a Linux user is mapped to the SELinux <tt>unconfined_u</tt> user (the default behavior), and you would like to change which SELinux user they are mapped to, use the <tt>semanage login</tt> command. The following example creates a new Linux user named <tt>newuser</tt>, then maps that Linux user to the SELinux <tt>user_u</tt> user:  
Um zum Standardverhalten zurückzukehren, geben Sie als Root den folgenden Befehl ein, um die Anmeldung „__default__“ dem SELinux-Benutzer „unconfined_u“ zuzuordnen:  


'''Procedure&nbsp;6.2.&nbsp;Mapping Linux Users to the SELinux Users'''# As root, create a new Linux user (<tt>newuser</tt>). Since this user uses the default mapping, it does not appear in the <tt>semanage login -l</tt> output: <br/>~]# useradd newuser<br/>~]# semanage login -l<br/>
sudo semanage login -m -S targeted -s „unconfined_u“ -r s0-s0:c0.c1023 __default__
Login Name          SELinux User        MLS/MCS Range        Service<br/>
__default__          unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki><br/>root                unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki><br/>system_u            system_u            s0-s0:c0.c1023      <nowiki>*</nowiki>
# To map the Linux <tt>newuser</tt> user to the SELinux <tt>user_u</tt> user, enter the following command as root: <br/>~]# semanage login -a -s user_u newuser<br/>The <tt>-a</tt> option adds a new record, and the <tt>-s</tt> option specifies the SELinux user to map a Linux user to. The last argument, <tt>newuser</tt>, is the Linux user you want mapped to the specified SELinux user.
# To view the mapping between the Linux <tt>newuser</tt> user and <tt>user_u</tt>, use the <tt>semanage</tt> utility again: <br/>~]# semanage login -l<br/>
Login Name          SELinux User        MLS/MCS Range        Service<br/>
__default__          unconfined_u        s0-s0:c0.c1023       <nowiki>*</nowiki><br/>newuser              user_u              s0                  <nowiki>*</nowiki><br/>root                unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki><br/>system_u            system_u            s0-s0:c0.c1023      <nowiki>*</nowiki>
# As root, assign a password to the Linux <tt>newuser</tt> user: <br/>~]# passwd newuser<br/>Changing password for user newuser.<br/>New password: ''Enter a password''<br/>Retype new password: ''Enter the same password again''<br/>passwd: all authentication tokens updated successfully.
# Log out of your current session, and log in as the Linux <tt>newuser</tt> user. Enter the following command to view the <tt>newuser</tt>'s SELinux context: <br/>~]$ id -Z<br/>user_u:user_r:user_t:s0
# Log out of the Linux <tt>newuser</tt>'s session, and log back in with your account. If you do not want the Linux <tt>newuser</tt> user, enter the following command as root to remove it, along with its home directory: <br/>~]# userdel -r newuser<br/>As root, remove the mapping between the Linux <tt>newuser</tt> user and <tt>user_u</tt>: <br/>~]# semanage login -d newuser<br/>~]# semanage login -l<br/>
Login Name          SELinux User        MLS/MCS Range        Service<br/>
__default__         unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki><br/>root                unconfined_u        s0-s0:c0.c1023      <nowiki>*</nowiki><br/>system_u            system_u            s0-s0:c0.c1023      <nowiki>*</nowiki>


=== 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 3.1, „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:
# Installieren Sie als Root das xguest-Paket. Installieren Sie die erforderlichen Abhängigkeiten:
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. 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 4.4, „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.
# 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.


=== 6.4. Changing the Default Mapping ===
=== 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.
In Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux, Linux users are mapped to the SELinux <tt>__default__</tt> login by default (which is in turn mapped to the SELinux <tt>unconfined_u</tt> user). If you would like new Linux users, and Linux users not specifically mapped to an SELinux user to be confined by default, change the default mapping with the <tt>semanage login</tt> command.
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:  
 
For example, enter the following command as root to change the default mapping from <tt>unconfined_u</tt> to <tt>user_u</tt>:
 
~]# semanage login -m -S targeted -s "user_u" -r s0 __default__
 
Verify the <tt>__default__</tt> login is mapped to <tt>user_u</tt>:
 
~]# semanage login -l
 
Login Name          SELinux User        MLS/MCS Range        Service
 
__default__          user_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>
 
If a new Linux user is created and an SELinux user is not specified, or if an existing Linux user logs in and does not match a specific entry from the <tt>semanage login -l</tt> output, they are mapped to <tt>user_u</tt>, as per the <tt>__default__</tt> login.
 
To change back to the default behavior, enter the following command as root to map the <tt>__default__</tt> login to the SELinux <tt>unconfined_u</tt> user:
 
~]# semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 __default__
 
=== 6.5. xguest: Kiosk Mode ===
 
The xguest package provides a kiosk user account. This account is used to secure machines that people walk up to and use, such as those at libraries, banks, airports, information kiosks, and coffee shops. The kiosk user account is very limited: essentially, it only allows a user to log in and use '''Firefox''' to browse Internet websites. Guest user is assigned to <tt>xguest_u</tt>, see Table&nbsp;3.1, “SELinux User Capabilities”. Any changes made while logged in with this account, such as creating files or changing settings, are lost when you log out.
 
To set up the kiosk account: # As root, install the xguest package. Install dependencies as required: <br/>~]# yum install xguest
# In order to allow the kiosk account to be used by a variety of people, the account is not password-protected, and as such, the account can only be protected if SELinux is running in enforcing mode. Before logging in with this account, use the <tt>getenforce</tt> utility to confirm that SELinux is running in enforcing mode: <br/>~]$ getenforce<br/>Enforcing<br/>If this is not the case, see Section&nbsp;4.4, “Permanent Changes in SELinux States and Modes” for information about changing to enforcing mode. It is not possible to log in with this account if SELinux is in permissive mode or disabled.
# You can only log in to this account using the GNOME Display Manager (GDM). Once the xguest package is installed, a <tt>Guest</tt> account is added to the GDM login screen.
 
 
 
=== 6.6. Booleans for Users Executing Applications ===
 
Not allowing Linux users to execute applications (which inherit users' permissions) in their home directories and the <tt>/tmp</tt> directory, which they have write access to, helps prevent flawed or malicious applications from modifying files that users own.
 
Booleans are available to change this behavior, and are configured with the <tt>setsebool</tt> utility, which must be run as root. The <tt>setsebool -P</tt> command makes persistent changes. Do not use the <tt>-P</tt> option if you do not want changes to persist across reboots:  


==== 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
To ''prevent'' Linux users in the <tt>guest_t</tt> domain from executing applications in their home directories and <tt>/tmp</tt>:  
 
~]# 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:
To ''prevent'' Linux users in the <tt>xguest_t</tt> domain from executing applications in their home directories and <tt>/tmp</tt>:  
sudo setsebool -P xguest_exec_content off
 
~]# 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: sudo setsebool -P user_exec_content off
To ''prevent'' Linux users in the <tt>user_t</tt> domain from executing applications in their home directories and <tt>/tmp</tt>:  
 
~]# 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: sudo setsebool -P staff_exec_content on
To ''prevent'' Linux users in the <tt>staff_t</tt> domain from executing applications in their home directories and <tt>/tmp</tt>:  
 
~]# setsebool -P staff_exec_content off
 
To turn the <tt>staff_exec_content</tt> boolean on and to ''allow'' Linux users in the <tt>staff_t</tt> domain to execute applications in their home directories and <tt>/tmp</tt>:  
 
~]# setsebool -P staff_exec_content on
 
 
 
 


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

Version vom 24. März 2026, 21:20 Uhr

Kapitel 6. Einschränkung von Benutzern

Unter Linux werden Benutzer 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. In Red Hat Enterprise Linux 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“. 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. Weitere Informationen zu eingeschränkten Benutzern und ihren Fähigkeiten finden Sie in Abschnitt 3.3, „Eingeschränkte und uneingeschränkte Benutzer“, Tabelle 3.1, „SELinux-Benutzerfähigkeiten“.

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 3.1, „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 4.4, „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, 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