Ändern von SELinux-Status und -Modi
Permanente Änderungen der SELinux-Status und -Modi
Wie in Erste Schritte mit SELinux beschrieben, kann SELinux aktiviert oder deaktiviert werden. Im aktivierten Zustand bietet SELinux zwei Modi: den Erzwingungsmodus und den permissiven Modus.
Mit den Befehlen getenforce oder sestatus können Sie überprüfen, in welchem Modus SELinux ausgeführt wird. Der Befehl getenforce gibt Enforcing, Permissive oder Disabled zurück.
Der Befehl sestatus gibt den SELinux-Status und die verwendete SELinux-Richtlinie zurück:
[~]$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
|
Wenn SELinux im permissiven Modus ausgeführt wird, können Benutzer und Prozesse verschiedene Dateisystemobjekte falsch kennzeichnen. Dateisystemobjekte, die bei deaktiviertem SELinux erstellt wurden, werden gar nicht gekennzeichnet. Dieses Verhalten verursacht Probleme beim Wechsel in den Erzwingungsmodus, da SELinux auf korrekte Kennzeichnungen der Dateisystemobjekte angewiesen ist. Um zu verhindern, dass falsch oder gar nicht gekennzeichnete Dateien Probleme verursachen, werden Dateisysteme beim Wechsel vom deaktivierten in den permissiven oder erzwingenden Modus automatisch neu gekennzeichnet. Im permissiven Modus verwenden Sie als Root den Befehl |
SELinux aktivieren
Wenn SELinux aktiviert ist, kann es in einem von zwei Modi ausgeführt werden: im Erzwingungsmodus oder im permissiven Modus. In den folgenden Abschnitten wird beschrieben, wie Sie dauerhaft in diese Modi wechseln.
Um beispielsweise Systemstartprobleme oder Prozessausfälle zu vermeiden, wenn SELinux auf Systemen aktiviert wird, auf denen es zuvor deaktiviert war, befolgen Sie bitte dieses Verfahren.
-
Die Pakete
selinux-policy-targeted,selinux-policy,libselinux-utilsundgrubbysind installiert. So überprüfen Sie, ob ein bestimmtes Paket installiert ist:$ rpm -q Paketname
-
Wenn SELinux auf Ihrem System auf Kernel-Ebene deaktiviert ist (dies ist die empfohlene Vorgehensweise, siehe [_disabling_selinux]), ändern Sie dies zuerst. Prüfen Sie, ob Sie die Option
selinux=0in Ihrer Kernel-Befehlszeile haben:$ cat /proc/cmdline BOOT_IMAGE=... ... selinux=0
-
Entfernen Sie die Option
selinux=0aus der Bootloader-Konfiguration mitgrubby:$ sudo grubby --update-kernel ALL --remove-args selinux
-
Die Änderung wird wirksam, nachdem Sie das System in einem der folgenden Schritte neu gestartet haben.
-
-
Stellen Sie sicher, dass das Dateisystem beim nächsten Systemstart neu gelabelt wird:
$ sudo fixfiles onboot
-
Aktivieren Sie SELinux im permissiven Modus. Weitere Informationen finden Sie unter [_changing_to_permissive_mode].
-
Starten Sie ihr System neu:
$ reboot
-
Prüfen Sie auf SELinux-Verweigerungsmeldungen.
$ sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent
-
Wenn keine Zugriffsverweigerungen vorliegen, wechseln Sie in den Erzwingungsmodus. Weitere Informationen finden Sie unter [_changing_to_enforcing_mode].
Um benutzerdefinierte Anwendungen mit SELinux im Erzwingungsmodus auszuführen, wählen Sie eines der folgenden Szenarien:
-
Führen Sie Ihre Anwendung in der Domain
unconfined_service_taus. -
Erstellen Sie eine neue Richtlinie für Ihre Anwendung. Weitere Informationen finden Sie im Kapitel Writing a custom SELinux policy im Dokument RHEL 8 Using SELinux.
Wechseln in den „permissive“-Modus
Gehen Sie wie folgt vor, um den SELinux-Modus dauerhaft in den permissiven Modus zu ändern. Im permissiven Modus werden die SELinux-Richtlinien nicht durchgesetzt. Das System bleibt betriebsbereit, und SELinux blockiert keine Operationen, sondern protokolliert lediglich AVC-Meldungen. Diese können zur Fehlerbehebung, zum Debuggen und zur Verbesserung der SELinux-Richtlinien verwendet werden. Jede AVC-Meldung wird in diesem Fall nur einmal protokolliert.
-
Die Pakete
selinux-policy-targeted,libselinux-utilsundpolicycoreutilssind auf Ihrem System installiert. -
Die Kernel-Parameter
selinux=0oderenforcing=0werden nicht verwendet.
-
Öffnen Sie die Datei
/etc/selinux/configin einem Texteditor Ihrer Wahl, zum Beispiel:
# vi /etc/selinux/config
-
Konfigurieren Sie die Option
SELINUX=permissive:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=*permissive* # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
Starten Sie das System neu:
# reboot
Wechsel in den „enforcing“-Modus
Gehen Sie wie folgt vor, um SELinux in den „enforcing“-Modus zu versetzen. In diesem „Erzwingungsmodus“ setzt SELinux die SELinux-Richtlinien durch und verweigert den Zugriff gemäß den SELinux-Richtlinienregeln. Unter Fedora ist der Erzwingungsmodus standardmäßig aktiviert, wenn das System mit SELinux installiert wurde.
-
Die Pakete
selinux-policy-targeted,libselinux-utilsundpolicycoreutilssind auf Ihrem System installiert. -
Die Kernel-Parameter
selinux=0oderenforcing=0werden nicht verwendet.
-
Öffnen Sie die Datei
/etc/selinux/configin einem Texteditor Ihrer Wahl, zum Beispiel:# vi /etc/selinux/config
-
Konfigurieren Sie die Option
SELINUX=enforcing:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
Speichern Sie die Änderung und starten Sie das System neu:
# reboot
Beim nächsten Systemstart labelt SELinux alle Dateien und Verzeichnisse im System neu und fügt den Dateien und Verzeichnissen, die bei deaktiviertem SELinux erstellt wurden, einen SELinux-Kontext hinzu.
-
Nach dem Neustart des Systems überprüfen Sie, ob der Befehl
getenforceden WertEnforcingzurückgibt:$ getenforce Enforcing
|
Nach dem Wechsel in den Erzwingungsmodus kann SELinux aufgrund fehlerhafter oder fehlender SELinux-Richtlinienregeln bestimmte Aktionen verweigern. Um anzuzeigen, welche Aktionen SELinux verweigert, geben Sie als Root folgenden Befehl ein: # ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today Alternativ können Sie, wenn das Paket # grep "SELinux is preventing" /var/log/messages Standardbenutzer können über die GUI Wenn SELinux aktiv ist und der Audit-Daemon (auditd) auf Ihrem System nicht läuft, suchen Sie in der Ausgabe des Befehls # dmesg | grep -i -e type=1300 -e type=1400 Falls SELinux bestimmte Aktionen verweigert, finden Sie Informationen zur Fehlerbehebung im Kapitel Troubleshooting problems related to SELinux im Dokument RHEL 8 Using SELinux. |
SELinux deaktivieren
Gehen Sie wie folgt vor, um SELinux dauerhaft zu deaktivieren.
|
Wenn SELinux deaktiviert ist, wird die SELinux-Richtlinie nicht geladen; sie wird nicht durchgesetzt und AVC-Meldungen werden nicht protokolliert. Daher gehen alle Vorteile der Ausführung von SELinux verloren. Es wird empfohlen, den permissiven Modus zu verwenden, anstatt SELinux dauerhaft zu deaktivieren. Weitere Informationen zum permissiven Modus finden Sie unter [_changing_to_permissive_mode]. |
|
Das Deaktivieren von SELinux mit der Option |
-
Das Paket
grubbyist installiert:$ rpm -q grubby grubby-version
-
Öffnen Sie die Datei
/etc/selinux/configin einem Texteditor Ihrer Wahl, zum Beispiel:# vi /etc/selinux/config
-
Konfigurieren Sie die Option
SELINUX=disabled:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
Speichern Sie die Änderung und starten Sie Ihr System neu:
# reboot
-
Nach dem Neustart überprüfen Sie, ob der Befehl
getenforceden WertDisabledzurückgibt:$ getenforce Disabled
SELinux-Modi beim Systemstart ändern
Beim Systemstart können Sie verschiedene Kernelparameter festlegen, um die Funktionsweise von SELinux zu ändern:
- enforcing=0
-
Durch Setzen dieses Parameters startet das System im permissiven Modus, was bei der Fehlersuche hilfreich ist. Bei stark beschädigtem Dateisystem ist der permissive Modus unter Umständen die einzige Möglichkeit, ein Problem zu erkennen. Im permissiven Modus werden die Kennzeichnungen weiterhin korrekt erstellt. Die in diesem Modus erzeugten AVC-Meldungen können sich von denen im Enforcing-Modus unterscheiden.
Im permissiven Modus wird nur die erste Ablehnung einer Reihe gleichartiger Ablehnungen gemeldet. Im erzwingenden Modus hingegen kann eine Ablehnung beim Lesen eines Verzeichnisses auftreten, woraufhin die Anwendung beendet wird. Im permissiven Modus erhalten Sie dieselbe AVC-Meldung, die Anwendung liest jedoch weiterhin Dateien im Verzeichnis, und Sie erhalten zusätzlich für jede weitere Ablehnung eine AVC-Meldung.
- selinux=0
-
Dieser Parameter bewirkt, dass der Kernel keine Teile der SELinux-Infrastruktur lädt. Die Init-Skripte erkennen, dass das System mit dem Parameter
selinux=0gestartet wurde und bearbeiten die Datei/.autorelabel. Dadurch wird das System beim nächsten Start mit aktiviertem SELinux automatisch neu gekennzeichnet.Die Verwendung des Parameters
selinux=0wird nicht empfohlen. Verwenden Sie zum Debuggen Ihres Systems besser den permissiven Modus. - autorelabel=1
-
Dieser Parameter zwingt das System, die Kennzeichnungen ähnlich wie bei den folgenden Befehlen neu zu benennen:
# touch /.autorelabel # reboot
Wenn ein Dateisystem eine große Anzahl falsch gekennzeichneeter Objekte enthält, starten Sie das System im permissiven Modus, um den automatischen Neukennzeichnungsprozess zu ermöglichen.
Weitere SELinux-bezogene Kernel-Bootparameter, wie z.B. checkreqprot, finden Sie in der Datei kernel-parameters.txt. Diese Datei ist im Quellcodepaket Ihres Linux-Kernels (.src.rpm) enthalten. So laden Sie das Quellcodepaket des aktuell verwendeten Kernels herunter:
[~]# dnf download --source kernel
Want to help? Learn how to contribute to Fedora Docs ›