Grundlegende Informationen zu SELinux
- WAS?
Dieser Artikel enthält grundlegende Informationen zu Linux mit erweiterter Sicherheit.
- WARUM?
Sie möchten SELinux verstehen und wissen, wie Sie es unter SUSE Linux Micro konfigurieren
- AUFWAND
Es dauert ungefähr 40 Minuten, um den Artikel zu lesen.
1 Informationen zu SELinux #
SELinux wurde als zusätzliche Linux-Sicherheitslösung entwickelt, die das Sicherheits-Framework im Linux-Kernel verwendet. Der Zweck bestand darin, eine detailliertere Sicherheitsrichtlinie zu ermöglichen, die über die standardmäßigen Discretionary Access Controls (DAC), die traditionellen Dateiberechtigungen von Eigentümer/Gruppe/Welt und Lesen/Schreiben/Ausführen hinausgeht.
SELinux verwendet Labels, die an Objekte (z. B. Dateien und Netzwerk-Sockets) angehängt sind, um Entscheidungen über die Zugriffskontrolle zu treffen.
Die Standardaktion von SELinux besteht darin, jeglichen Zugriff zu verweigern. SELinux lässt nur Aktionen zu, die in der SELinux-Richtlinie ausdrücklich zugelassen wurden. Als weitere Eigenschaft von SELinux zur Erhöhung der Sicherheit lässt SELinux eine strikte Eingrenzung von Prozessen zu, bis zu dem Punkt, an dem die Prozesse nicht auf Dateien anderer Prozesse auf demselben System zugreifen können.
SELinux wurde entwickelt, um bestehende Sicherheitslösungen zu verbessern, nicht um sie zu ersetzen. Beispielsweise wird die freigegebene Zugriffskontrolle (Discretionary Access Control, DAC) auch dann angewendet, wenn das System SELinux verwendet. Wenn DAC den Zugriff zuerst verweigert, wird SELinux nicht verwendet, da der Zugriff bereits durch einen anderen Mechanismus blockiert wurde.
2 Abrufen von SELinux #
SELinux wird standardmäßig installiert, wenn SUSE Linux Micro von YaST installiert wird, oder ist Teil der vorgefertigten Images.
Wenn SELinux auf Ihrem System nicht eingerichtet ist, führen Sie das folgende Kommando aus:
# transactional-update setup-selinux
Starten Sie Ihr System neu, nachdem das Kommando beendet wurde. Mit diesem Kommando wird die SELinux-Richtlinie installiert, falls sie noch nicht installiert ist, der SELinux-Modus enforcing festgelegt und initrd neu erstellt.
3 SELinux-Modi #
SELinux kann in einem von drei Modi ausgeführt werden: disabled, permissive oder enforcing.
Wenn Sie den Modus disabled verwenden, werden keine Regeln der SELinux-Richtlinie angewendet und Ihr System ist nicht geschützt. Daher empfehlen wir, den Modus disabled nicht zu verwenden.
Im Modus permissive ist SELinux aktiv, die Sicherheitsrichtlinie wird geladen, das Dateisystem wird gekennzeichnet und Zugriffsverweigerungseinträge werden protokolliert. Die Richtlinie wird jedoch nicht durchgesetzt und somit wird kein Zugriff verweigert.
Im Modus enforced wird die Sicherheitsrichtlinie angewendet. Jeder Zugriff, der nicht explizit von der Richtlinie zugelassen wird, wird verweigert.
Informationen zum Umschalten zwischen den SELinux-Modi finden Sie unter Abschnitt 3.1, „Ändern des SELinux-Modus“.
3.1 Ändern des SELinux-Modus #
Sie können den SELinux-Modus vorübergehend oder dauerhaft wechseln.
3.1.1 Vorübergehendes Ändern des SELinux-Modus #
Wenn Sie SELinux vorübergehend auf den Modus permissive oder enforcing festlegen möchten, verwenden Sie das Kommando setenforce.
Das Kommando setenforce hat die folgende Syntax:
# setenforce MODE_ID
MODE_ID ist dabei 0 für den Modus permissive oder 1 für den Modus enforced.
Denken Sie daran, dass Sie SELinux nicht mit dem Kommando setenforce deaktivieren können.
3.1.2 Dauerhaftes Ändern des SELinux-Modus #
Wenn Sie Änderungen am SELinux-Modus vornehmen möchten, in dem der Neustart des Systems fortgesetzt wird, bearbeiten Sie die Konfigurationsdatei /etc/selinux/config. In dieser Datei können Sie auch SELinux auf Ihrem System deaktivieren. Diese Aktion wird jedoch nicht empfohlen. Wenn SELinux möglicherweise Probleme mit Ihrem System verursacht, wechseln Sie stattdessen in den Modus permissive und debuggen Sie Ihr System.
Ändern Sie in der Datei /etc/selinux/config den Wert von SELINUX in disabled oder permissive oder enforced wie folgt:
SELINUX=disabled
Die Änderungen in der Datei werden nach dem nächsten Neustart übernommen.
disabled
Wenn Sie SELinux auf Ihrem System deaktivieren und später aktivieren, stellen Sie sicher, dass Sie Ihr System neu benennen. Wenn SELinux deaktiviert ist und Sie Änderungen an Ihrem Dateisystem vornehmen, werden die Änderungen nicht mehr im Kontext widergespiegelt (z. B. haben neue Dateien keinen Kontext). Daher müssen Sie Ihr System mit dem Kommando restorecon, mit dem Boot-Parameter autorelabel oder durch Erstellen einer Datei neu bezeichnen, die beim nächsten Start eine Neubezeichnung auslöst. Führen Sie zum Erstellen der Datei das folgende Kommando aus:
# touch /etc/selinux/.autorelabel
Nach dem Neustart wird die Datei /etc/selinux/.autorelabel durch eine andere Flag-Datei, /etc/selinux/.relabelled, ersetzt, um eine erneute Bezeichnung bei nachfolgenden Neustarts zu verhindern.
3.1.3 Überprüfen des aktiven SELinux-Modus #
Führen Sie zum Überprüfen des Modus das folgende Kommando aus:
# getenforce
Das Kommando sollte permissive oder enforced zurückgeben, je nach der angegebenen MODE_ID.
3.2 Überprüfen der Funktionsfähigkeit von SELinux #
Wenn Sie Konfigurationsänderungen vornehmen, kann es nützlich sein, in den Modus „Zulässig“ zu wechseln. Während dieser Zeit können Benutzer Dateien falsch bezeichnen und somit Probleme verursachen, wenn sie wieder in den Erzwingungsmodus wechseln.
Führen Sie die folgenden Schritte aus, um das System wieder in den gesicherten Zustand zu versetzen:
Setzen Sie den Sicherheitskontext zurück:
>sudorestorecon -R /Wechseln Sie in den Erzwingungsmodus, indem Sie
SELINUX=enforcingals/etc/selinux/configfestlegen.Starten Sie die Arbeitsstation neu, und melden Sie sich noch einmal an.
Führen Sie das Kommando
sestatus -vaus. Es sollte Ihnen eine Ausgabe ähnlich der folgenden geben:>sudosestatus -vSELinux 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: requested(insecure) Max kernel policy version: 33 Process contexts: Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Init context: system_u:system_r:init_t:s0 /usr/sbin/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 File contexts: Controlling terminal: unconfined_u:object_r:user_tty_device_t:s0 /etc/passwd system_u:object_r:passwd_file_t:s0 /etc/shadow system_u:object_r:shadow_t:s0 /bin/bash system_u:object_r:shell_exec_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /bin/login system_u:object_r:login_exec_t:s0 /bin/sh system_u:object_r:bin_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /sbin/agetty system_u:object_r:bin_t:s0 \ -> system_u:object_r:getty_exec_t:s0 /sbin/init system_u:object_r:bin_t:s0 -> \ system_u:object_r:init_exec_t:s0 /usr/sbin/sshd system_u:object_r:sshd_exec_t:s0Wenn das System nicht ordnungsgemäß funktioniert, überprüfen Sie die Protokolldateien in
/var/log/audit/audit.logWeitere Einzelheiten finden Sie unter SELinux troubleshooting.
4 SELinux-Sicherheitskontext #
Der Sicherheitskontext ist eine Reihe von Informationen, die einer Datei oder einem Prozess zugewiesen sind. Es besteht aus SELinux user (SELinux-Benutzer), role (Rolle), type (Typ), level (Stufe) und category (Kategorie). Anhand dieser Informationen werden Entscheidungen zur Zugriffskontrolle getroffen.
- SELinux-Benutzer
Eine in der Richtlinie definierte Identität, die für eine bestimmte Gruppe von Rollen und für einen bestimmten Bereich level autorisiert ist. Jeder Linux-Benutzer ist nur einem SELinux-Benutzer zugeordnet. Ein SELinux-Benutzer kann jedoch mehrere Rollen haben.
SELinux verwendet nicht die Liste der Benutzerkonten, die von Linux in
/etc/passwdverwaltet werden, sondern eine eigene Datenbank und Zuordnung. Gemäß der Konvention wird der Identitätsname mit dem Suffix_uversehen, zum Beispieluser_u.Wenn ein neues Linux-Konto erstellt wird und der SELinux-Benutzer dem Konto nicht zugewiesen ist, wird der Standard-SELinux-Benutzer verwendet. Der Standardwert ist normalerweise
unconfined_u. Eine Anleitung zum Ändern des Standardwerts finden Sie unter Abschnitt 7.5.2, „Das Kommandosemanage login“.- role
Definiert eine Reihe von Berechtigungen, die einem Benutzer erteilt werden können. Eine Rolle definiert, auf welche Typen ein Benutzer, der dieser Rolle zugeordnet ist, zugreifen kann. Gemäß der Konvention wird der Rollenname mit dem Suffix
_rversehen, zum Beispielsystem_r.- type
Der Typ vermittelt Informationen darüber, wie bestimmte Dateien und Prozesse interagieren können. Ein Prozess besteht aus Dateien mit einem konkreten SELinux-Typ und kann nicht auf Dateien außerhalb dieses Typs zugreifen. Gemäß der Konvention wird der Typname mit dem Suffix
_tversehen, zum Beispielvar_t.- level
Ein optionales Attribut, das den Bereich der Abstandsstufen in der mehrstufigen Sicherheit angibt.
- category
Ein optionales Attribut, mit dem Sie Kategorien zu Prozessen, Dateien und Benutzern hinzufügen können. Ein Benutzer kann dann auf Dateien zugreifen, die dieselbe Kategorie haben.
Hier ist ein Beispiel für einen SELinux-Kontext:
allow user_t bin_t:file {read execute gettattr};
Diese Beispielregel besagt, dass der Benutzer mit dem Kontexttyp user_t (dieser Benutzer wird als Quellobjekt bezeichnet) auf Objekte der Klasse Datei mit dem Kontexttyp bin_t (dem Ziel) zugreifen darf, indem er die Berechtigungen read, execute und getattr verwendet.
5 Übersicht über die SELinux-Richtlinie #
Die Richtlinie ist die Schlüsselkomponente in SELinux. Die SELinux-Richtlinie definiert Regeln, die festlegen, welche Objekte auf welche Dateien, Verzeichnisse, Ports und Prozesse auf einem System zugreifen können. Dazu wird für alle einen Sicherheitskontext definiert.
Eine SELinux-Richtlinie enthält eine Vielzahl von Regeln. Um es überschaubarer zu machen, werden Richtlinien oft in Module unterteilt. Auf diese Weise kann der Administrator den Schutz für verschiedene Teile des Systems ein- oder ausschalten.
Wenn Sie die Richtlinie für Ihr System kompilieren, haben Sie die Wahl, entweder mit einer modularen Richtlinie oder einer monolithischen Richtlinie zu arbeiten, bei der eine große Richtlinie verwendet wird, um alles auf Ihrem System zu schützen. Es wird dringend empfohlen, eine modulare Richtlinie und keine monolithische Richtlinie zu verwenden. Modulare Richtlinien sind viel einfacher zu verwalten.
SUSE Linux Micro wird mit der SELinux-Richtlinie targeted ausgeliefert.
5.1 Arbeiten mit SELinux-Modulen #
Als Administrator können Sie Module ein- oder ausschalten. Dies kann nützlich sein, wenn Sie nur einen Teil der SELinux-Richtlinie deaktivieren und einen bestimmten Dienst nicht ohne SELinux-Schutz ausführen möchten.
Führen Sie das folgende Kommando aus, um alle verwendeten SELinux-Richtlinienmodule anzuzeigen:
semodule -lNachdem Sie den Namen des Moduls erhalten haben, das Sie abschalten möchten, führen Sie das folgende Kommando aus:
>sudosemodule -d MODULENAME
Führen Sie zum Einschalten des Richtlinienmoduls das folgende Kommando aus:
>sudosemodule -e MODULENAME
5.2 Erstellen von Richtlinien für Container #
SUSE Linux Micro wird mit einer Richtlinie ausgeliefert, die Containern standardmäßig den Zugriff auf Dateien außerhalb der Containerdaten nicht erlaubt. Andererseits ist der gesamte Netzwerkzugriff erlaubt. Typischerweise werden Container mit Bind-Mounts erstellt und sollten in der Lage sein, auf andere Verzeichnisse zuzugreifen, wie /home oder /var. Möglicherweise möchten Sie den Zugriff auf diese Verzeichnisse zulassen oder im Gegenteil einige Ports auf den Container beschränken, auch wenn SELinux auf Ihrem System verwendet wird. In diesem Fall müssen Sie neue Richtlinienregeln erstellen, die den Zugriff aktivieren oder deaktivieren. SUSE Linux Micro stellt zu diesem Zweck das Udica-Tool zur Verfügung.
Im folgenden Verfahren wird beschrieben, wie Sie eine benutzerdefinierte Richtlinie für Ihre Container erstellen:
Stellen Sie sicher, dass sich SELinux im Erzwingungsmodus befindet. Detaillierte Informationen finden Sie in Abschnitt 3.1, „Ändern des SELinux-Modus“.
Starten Sie einen Container mit den folgenden Parametern:
#podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bashDer Container wird mit der Standardrichtlinie ausgeführt, die keinen Zugriff auf die Bereitstellungspunkte zulässt, aber andere Ports nicht einschränkt.
Sie können den Container verlassen.
Rufen Sie die Container-ID ab:
#podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e59f9d0f86f2 registry.opensuse.org/devel/bci/tumbleweed/containerfile/opensuse/bci/ruby:latest /bin/bash 8 minutes ago Up 8 seconds ago 0.0.0.0:21->21/tcp zen_ramanujanErstellen Sie eine JSON-Datei, die Udica verwendet, um eine benutzerdefinierte Richtlinie für den Container zu erstellen:
#podman inspect e59f9d0f86f2 > OUTPUT_JSON_FILEErsetzen Sie beispielsweise OUTPUT_JSON_FILE durch
container.json.Führen Sie Udica aus, um eine Richtlinie gemäß den Containerparametern zu generieren:
#udica -j OUTPUT_JSON_FILECUSTOM_CONTAINER_POLICYBeispiel:
#udica -j container.json custom_policyLaden Sie die Richtlinienmodule gemäß den bereitgestellten Anweisungen, indem Sie Folgendes ausführen:
#semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}Führen Sie einen Container mit dem neuen Richtlinienmodul aus, indem Sie die Option
--security-optwie folgt verwenden:#podman run --security-opt label=type:custom_policy.process -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash
6 Boolesche Datentypen unter SELinux #
Boolesche Datentypen unter SELinux unterstützen einen flexiblen Richtlinienverwaltungsansatz. Mit booleschen Datentypen können Sie beispielsweise eine bestimmte Richtlinie auf einem Server deaktivieren, während dieselbe Richtlinie auf einem anderen Server aktiv bleibt. Mit anderen Worten, ein boolescher Datentyp kann als Schalter für eine Richtlinienregel verstanden werden. Statt eine bestimmte Richtlinie zu ändern, können Sie sie ausschalten. Im Richtliniencode werden boolesche Datentypen als abstimmbar bezeichnet. Da boolesche Datentypen in der Richtlinie enthalten sind, sind sie verfügbar, sobald eine Richtlinie geladen wird.
Die Änderungen am booleschen Datentyp können dauerhaft oder vorübergehend sein und bis zum Ende der Sitzung andauern.
SELinux bietet Tools, mit denen Sie Details auflisten und anzeigen oder den Status von booleschen Datentypen ändern können. Weitere Details hierzu finden Sie in folgenden Abschnitten.
6.1 Arbeiten mit booleschen Datentypen #
6.1.1 Auflisten von booleschen Datentypen #
Sie können das Kommando getsebool oder semanage verwenden, um aktuell definierte boolesche Datentypen aufzulisten. Führen Sie das folgende Kommando aus, um alle derzeit definierten booleschen Datentypen zusammen mit ihrem Status aufzulisten:
# getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...
Wenn Sie weitere Details zu bestimmten booleschen Datentypen erhalten möchten, können Sie das Kommando semanage verwenden:
# semanage boolean -l
SELinux boolean State Default Description
abrt_anon_write (off , off) Allow abrt to anon write
abrt_handle_event (off , off) Allow abrt to handle event
abrt_upload_watch_anon_write (on , on) Allow abrt to upload watch anon writeZum Abrufen des Status eines einzelnen booleschen Datentyps können Sie das folgende Kommando verwenden:
# getsebool BOOLEAN_NAME
Alternativ können Sie einfach das Kommando grep für die Ausgabe semanage boolean verwenden:
# semanage boolean -l | grep BOOLEAN_NAME6.1.2 Umschalten zwischen booleschen Datentypen #
Die Kommandos setsebool und semanage können verwendet werden, um den Wert von booleschen Datentypen umzuschalten. Sie können den Status von booleschen Datentypen dauerhaft oder nur vorübergehend ändern, bis die Sitzung beendet ist. Zum vorübergehenden Ändern eines booleschen Datentyps führen Sie das folgende Kommando aus:
# setsebool BOOLEAN_NAMEBOOLEAN_VALUE
wobei BOOLEAN_VALUE entweder on oder off ist.
Zum dauerhaften Ändern eines booleschen Datentyps führen Sie einen der beiden folgenden Kommandos aus:
# setsebool -P BOOLEAN_NAMEBOOLEAN_VALUE
Alternativ können Sie das Kommando semanage verwenden:
# semanage boolean -m --BOOLEAN_VALUEBOOLEAN_NAME
wobei BOOLEAN_VALUE entweder on oder off ist.
Ein einzelner boolescher Datentyp kann mehrere Richtlinienregeln aktivieren oder deaktivieren. Verwenden Sie das sedispol-Tool, mit dem die Richtliniendatei analysiert werden kann, um anzuzeigen, welche Richtlinienregeln von welchen booleschen Datentypen aktiviert oder deaktiviert werden:
# sedispol /etc/selinux/targeted/policy/policy.32
Da die Richtlinienregeln normalerweise umfangreich sind, empfehlen wir, eine Ausgabedatei festzulegen, indem Sie f auswählen und einen Dateinamen angeben. Nachdem Sie den Dateinamen angegeben haben, drücken Sie 6 Anschließend können Sie die Datei überprüfen.
7 Tools zur Verwaltung von SELinux #
SUSE Linux Micro bietet Ihnen Tools zur Verwaltung von SELinux auf Ihrem System. Wenn die unten beschriebenen Tools nicht auf Ihrem System installiert sind, installieren Sie die Tools mit dem folgenden Kommando:
# transactional-update pkg install policycoreutils-python-utilsStarten Sie das System nach erfolgreicher Installation neu.
7.1 Verwenden der Option Z #
Wenn SELinux installiert und konfiguriert ist, können Sie -Z mit den regulären Kommandos wie ls, id oder ps verwenden. Mit dieser Option können Sie den Sicherheitskontext von Dateien oder Prozessen anzeigen. Zum Beispiel mit dem Kommando ls:
> ls -Z /etc/shadow
system_u:object_r:shadow_t:s0 /etc/shadow7.2 Das Kommando chcon #
Der Kommandoname chcon steht für change context (Kontext ändern). Das Kommando kann den vollständigen Sicherheitskontext einer Datei in den in der CLI angegebenen Wert ändern oder Teile des Kontexts ändern. Alternativ können Sie eine Datei angeben, die als Referenz dient.
Zum Ändern des vollständigen Sicherheitskontextes einer Datei sieht die Syntax des Kommandos wie folgt aus:
# chcon SECURITY_CONTEXTFILENAMEwobei
SECURITY_CONTEXT folgendes Format hat: SELinux_USER:ROLE:TYPE:LEVEL:CATEGORY. Der Kontext könnte z. B. lauten: system_u:object_r:httpd_config_t:s0.
FILENAME ist ein Pfad zu der Datei, deren Kontext geändert werden soll.
Führen Sie chcon wie folgt aus, um einen Sicherheitskontext gemäß einer bereitgestellten Datei festzulegen, die als Referenz dient:
# chcon --reference=REFERENCE_FILEFILENAMEwobei:
REFERENCE_FILE ein Pfad zu einer Datei ist, die als Referenz verwendet werden soll.
FILENAME ein Pfad zu der Datei ist, deren Kontext geändert werden soll.
Alternativ können Sie nur einen Teil des Sicherheitskontexts ändern. Die allgemeine Syntax für das Kommando chcon lautet:
# chcon CONTEXT_OPTIONCONTEXT_PARTFILENAMEDie Optionen und Argumente haben folgende Bedeutung:
Je nach Kontextteil kann CONTEXT_OPTION Folgendes sein:
-ubzw.--usergibt an, dass ein SELinux-Benutzerkontext in der bereitgestellten Datei geändert wird:
#chcon -u system_u logind.conf-rbzw.--roleNur der Teil role wird im Kontext der bereitgestellten Datei geändert:
#chcon -r object_r logind.conf-tbzw.--typeNur der Teil type wird im Kontext der bereitgestellten Datei geändert:
#chcon -t etc_t logind.conf-lbzw.--rangeNur der Teil range des Sicherheitskontexts wird geändert:
#chcon -l s0 logind.conf
CONTEXT_PART ist der besondere Wert des einzustellenden Sicherheitskontexts.
FILENAME ist ein Pfad zu der Datei, deren Kontext geändert wird.
chcon für Symlinks
Wenn Sie den Sicherheitskontext für einen Symlink ändern, wird standardmäßig der Kontext des Link-Ziels geändert, und der Kontext des Symlinks wird nicht geändert. Um zu erzwingen, dass chcon den Kontext des Symlinks und nicht das Link-Ziel ändert, verwenden Sie die Option --no-dereference wie unten gezeigt:
# chcon --no-dereference -u system_u -t etc_t network.confSie können den Kontext aller Dateien in einem Verzeichnis ändern, indem Sie die rekursive Option verwenden:
# chcon --recursive system_u:object_r:httpd_config_t:s0 conf.d7.3 Kommandos getenforce und setenforce #
Das Kommando getenforce gibt den aktuellen SELinux-Modus zurück: Enforcing, Permissive oder Disabled.
# getenforce
Permissive
Das Kommando setenforce ändert den SELinux-Modus vorübergehend in enforcing oder permissive. Sie können dieses Kommando nicht verwenden, um SELinux zu deaktivieren. Denken Sie daran, dass die Änderung nur bis zum nächsten Neustart bestehen bleibt. Wenn Sie den Status dauerhaft ändern möchten, folgen Sie der Beschreibung in Abschnitt 3.1, „Ändern des SELinux-Modus“.
# setenforce MODE_ID
MODE_ID ist dabei 0 für den Modus permissive oder 1 für den Modus enforced.
7.4 Das Skript fixfiles #
Mit dem Skript können Sie die folgende Aufgabe mit dem Sicherheitskontext ausführen:
Überprüfen, ob der Kontext korrekt ist
Alle falschen Dateikontextbezeichnungen ändern
Das System neu benennen, wenn Sie eine neue Richtlinie hinzugefügt haben
Die Syntax des Skripts lautet wie folgt:
# fixfiles [OPTIONS] ARGUMENTmit folgenden Bedeutungen
OPTIONS kann Folgendes sein:
-
-lLOGFILE speichert die Ausgabe in der bereitgestellten Datei
-
-oOUTPUT_FILE speichert in der bereitgestellten Ausgabedatei die Namen aller Dateien, deren Dateikontext vom Standardkontext abweicht.
-
-F erzwingt ein Zurücksetzen des Kontexts
-
ARGUMENT kann einen der folgenden Werte haben:
-
check Zeigt den vorherigen und aktuellen Dateikontext für eine falsche Bezeichnung an, ohne Änderungen vorzunehmen
-
relabel Bezeichnet falsche Dateikontexte gemäß der aktuell geladenen Richtlinie neu
-
restore Stellt falsche Dateikontexte auf die Standardwerte zurück
-
verify Listet alle Dateien mit falschen Dateikontextbezeichnungen auf, ohne Änderungen vorzunehmen
-
7.5 Das Kommando semanage #
Mit dem Kommando semanage können Teile der Richtlinie konfiguriert werden, ohne dass die Richtlinie aus den Quellen neu kompiliert werden muss. Mit dem Kommando können Sie die folgenden Aufgaben durchführen:
Verwalten von booleschen Datentypen mithilfe des Arguments
boolean. Ausführliche Informationen zu booleschen Datentypen finden Sie in Abschnitt 6.1, „Arbeiten mit booleschen Datentypen“.Anpassen des Kontexts von Dateien mit dem Argument
fcontextVerwalten von Benutzerzuordnungen mit dem Argument
loginVerwalten von SELinux-Benutzern mit dem Argument
userVerwalten der SELinux-Richtlinienmodule mit dem Argument
module
Die allgemeine Kommandosyntax sieht wie folgt aus:
# semanage ARGUMENTOPTIONS [OBJECT_NAME]wobei:
ARGUMENT steht für eines der folgenden steht:
login,user,fcontext,boolean,module.OPTIONS hängt vom bereitgestellten ARGUMENT ab. Allgemeine Optionen werden in Allgemeine Optionen beschrieben.
OBJECT_NAME, kann je nach angegebenem ARGUMENT ein Anmeldename, Modulname, Dateiname oder SELinux-Benutzer sein.
-a,--addfügt ein bereitgestelltes Objekt hinzu
-h,--helpdruckt die Kommandohilfe
- --extract
zeigt Kommandos an, die zum Ändern des Systems verwendet wurden (boolesche Datentypen, Dateikontext usw.)
-l,--listlistet alle Objekte auf
-m,--modifyändert das bereitgestellte Objekt
-n,--noheadingändert die Ausgabe des Auflistungsvorgangs durch Weglassen von Überschriften
-s,--seusergibt den SELinux-Benutzer an
Weitere Optionen sind spezifisch für bestimmte semanage-Kommandos und werden in den entsprechenden Abschnitten beschrieben.
7.5.1 Das Kommando semanage fcontext #
Mit dem Kommando semanage fcontext können Sie die folgenden Aufgaben ausführen:
Dateikontextdefinitionen abfragen
Kontexte zu Dateien hinzufügen
eigene Regeln hinzufügen
Änderungen, die mit dem Kommando semanage
fcontext am Dateikontext vorgenommen werden, erfordern keine Änderungen oder Neukompilierung der Richtlinie.
Zusätzlich zu den in Allgemeine Optionen beschriebenen allgemeinen Optionen verwendet das Kommando semanage
fcontext die folgenden Optionen:
-e,--equalMit dieser Option können Sie den Kontext des angegebenen Pfadkontexts verwenden, um Dateien in einem anderen Verzeichnis (dem angegebenen Zielpfad) zu bezeichnen. Sie möchten beispielsweise einem alternativen Home-Verzeichnis
/export/homeden gleichen Kontext zuweisen, den/homehat. Wenn Sie diese Option verwenden, müssen Sie den Quellpfad und den Zielpfad angeben:#semanage fcontext -a -e /home /export/home-f,--ftypeZum Angeben eines Dateityps. Verwenden Sie einen der folgenden Werte:
a– alle Dateien, was auch der Standardwert istb– ein Blockgerätc– ein Zeichengerätd– ein Verzeichnisf– reguläre Dateienl– ein Symlinkp– eine benannte Leitungs– ein Socket
7.5.2 Das Kommando semanage login #
Mit dem semanage login können Sie die folgenden Aufgaben ausführen:
Zuordnung von Linux-Benutzern zu einem bestimmten SELinux-Benutzer. Wenn Sie beispielsweise den Linux-Benutzer tux unter
sysadm_uzuordnen möchten, führen Sie das folgende Kommando aus:#semanage login -a -s sysadm_u tuxZuordnung einer Gruppe von Linux-Benutzern zu einem bestimmten SELinux-Benutzer. Wenn Sie beispielsweise Benutzer der Gruppe Autoren unter
user_uzuordnen möchten, führen Sie das folgende Kommando aus::#semanage login -a -s user_u %writersDie Gruppe wird dann in der Ausgabe von
semanage login -laufgeführt, wobei das Zeichen % vorangestellt ist.Beachten Sie, dass die Benutzergruppe primär sein sollte, da die Zuordnung von SELinux-Benutzern zu ergänzenden Gruppen zu inkompatiblen Zuordnungen führen kann.
#semanage login -m -s staff_u %writersZuordnung von Linux-Benutzern zu einem bestimmten SELinux MLS/MCS-Sicherheitsbereich.
Ändern der bereits erstellten Zuordnung. Ersetzen Sie dazu einfach die Option
-adurch-min den vorherigen Kommandos.Festlegen des Standard-SELinux-Benutzers für neue Linux-Benutzer. Der übliche Standard-SELinux-Benutzer ist
unconfined_u. Führen Sie zum Ändern des Werts instaff_udas folgende Kommando aus:#semanage login -m -s staff_u __default__
7.5.3 Das Kommando semanage boolean #
Das Kommando semanage boolean wird verwendet, um boolesche Datentypen in der SELinux-Richtlinie zu steuern.
Die Zusammenfassung des Kommandos sieht wie folgt aus:
semanage boolean [-h] [-n] [ --extract |
--deleteall | --list [-C] | --modify ( --on | --off | -1 | -0 ) boolean ]
Zusätzlich zu den allgemeinen Optionen können Sie die folgenden Optionen verwenden, die für das Kommando semanage boolean spezifisch sind:
- --list -C
Zum Anzeigen einer Liste der lokalen Änderungen an booleschen Datentypen.
- -m --on | -1
Zum Einschalten des bereitgestellten booleschen Datentyps.
- -m --off | -0
Zum Ausschalten des bereitgestellten booleschen Datentyps.
- -D, --deleteall
Zum Löschen aller lokalen Änderungen an booleschen Datentypen.
Die häufigste Verwendung des Kommandos ist das Ein- oder Ausschalten eines bestimmten booleschen Datentyps. Führen Sie zum Beispiel zum Einschalten des Booleschen Datentyps authlogin_yubikey das folgende Kommando aus:
#semanage boolean -m on authlogin_yubikey
7.5.4 Das Kommando semanage user #
Das Kommando semanage user steuert die Zuordnung zwischen dem SELinux-Benutzer und den Rollen und MLS/MCS-Ebenen.
Zusätzlich zu den in Allgemeine Optionen beschriebenen allgemeinen Optionen verwendet das Kommando semanage
user die folgenden Optionen:
- -R [ROLES], --roles [ROLES]
Eine Liste der SELinux-Rollen. Sie können mehrere Rollen in doppelte Anführungszeichen einschließen und durch Leerzeichen trennen, oder Sie können
-Rmehrmals verwenden.
Mit diesem Kommando können Sie die folgenden Aufgaben ausführen:
Auflisten der Zuordnung von SELinux-Benutzern zu Rollen durch Ausführen von:
#semanage user -lÄndern der Rollen, die dem
user_u-SELinux-Benutzer zugewiesen sind:#semanage user -m -R "system_r unconfined_r user_r"Zuweisen zu
admin_udie Rollestaff_rund eine Kategories0:#semanage user -a -R "staff_r -r s0 admin_uErstellen eines neuen SELinux-Benutzers, zum Beispiel
admin_umit der Rollestaff_r. Sie müssen mit-Pauch das Bezeichnungspräfix für diesen Benutzer definieren:#semanage user -a -R "staff_r" -P admin admin_u
7.5.5 Das Kommando semanage module #
Das Kommando semanage module kann SELinux-Richtlinienmodule installieren, entfernen, deaktivieren oder aktivieren.
Zusätzlich zu den in Allgemeine Optionen beschriebenen allgemeinen Optionen verwendet das Kommando semanage
fcontext die folgenden Optionen:
-d,--disableZum Deaktivieren des mitgelieferten SELinux-Richtlinienmoduls:
#semanage module --disable MODULE_NAME-e,--enableZum Aktivieren des mitgelieferten SELinux-Richtlinienmoduls:
#semanage module --enable MODULE_NAME
7.6 Das Kommando sestatus #
Mit dem Kommando sestatus wird der Status eines Systems abgerufen, auf dem SELinux ausgeführt wird.
Die generische Syntax für das Kommando lautet:
sestatus [OPTION]
Wenn das Kommando ohne Optionen und Argumente ausgeführt wird, gibt es die folgenden Informationen aus:
#sestatusSELinux 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: requested (insecure) Max kernel policy version: 33
Das Kommando kann die folgenden Optionen annehmen:
- -b
Zeigt den Status von booleschen Datentypen auf dem System an.
- -v
Zeigt den Sicherheitskontext der in der Datei
/etc/sestatus.confaufgeführten Dateien und Prozesse an.
8 Rechtliche Hinweise #
Copyright © 2006–2025 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie im Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.