|
|
| (52 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| '''Arbeiten mit SELinux''' | | {{Navigation|Linux/SELinux/03 Default Policy/Benutzer|Linux/SELinux/04/02 Protokolldateien}} |
| | '''Linux/SELinux/04 Arbeiten mit SELinux''' - Arbeiten mit SELinux |
|
| |
|
| === Beschreibung ===
| | == Beschreibung == |
| Die folgenden Abschnitte bieten einen Überblick über
| | {| class="table table-striped table-hover options big col1center" |
| * die wichtigsten SELinux-Pakete in Red Hat Enterprise Linux
| | ! Nummer !! Kapitel !! Beschreibung |
| * die Installation und Aktualisierung von Paketen
| | |- |
| * die verwendeten Protokolldateien
| | | 04/02 |
| * die wichtigste SELinux-Konfigurationsdatei
| | | [[Linux/SELinux/04/02 Protokolldateien|Protokolldateien]] |
| * das Aktivieren und Deaktivieren von SELinux
| | | Welche Protokolldatei wird verwendet |
| * SELinux-Modi
| | |- |
| * das Konfigurieren von Booleschen Werten
| | | 04/03 |
| * das vorübergehende und dauerhafte Ändern von Datei- und Verzeichnis-Labels
| | | [[Linux/SELinux/04/03 Hauptkonfigurationsdatei|Hauptkonfigurationsdatei]] |
| * das Überschreiben von Dateisystem-Labels mit dem Befehl [[mount]]
| | | Hauptkonfigurationsdatei |
| * das Einbinden von NFS-Volumes
| | |- |
| * sowie das Beibehalten von SELinux-Kontexten beim Kopieren und Archivieren von Dateien und Verzeichnissen
| | | 04/04 |
| | | [[Linux/SELinux/04/04 Dauerhafte Änderungen|Dauerhafte Änderungen]] |
| | | Dauerhafte Änderungen an SELinux-Zuständen und -Modi |
| | |- |
| | | 04/05 |
| | | [[Linux/SELinux/04/05 Systemstart|Systemstart]] |
| | | Ändern der SELinux-Modi beim Systemstart |
| | |- |
| | | 04/06 |
| | | [[Linux/SELinux/04/06 Booleane|Booleane]] |
| | | Booleane |
| | |- |
| | | 04/07 |
| | | [[Linux/SELinux/04/07 Kontexte|SELinux-Kontexte]] |
| | | SELinux-Kontexte – Dateien kennzeichnen |
| | |- |
| | | 04/08 |
| | | [[Linux/SELinux/04/08 Typen|Typen]] |
| | | Typen file_t und default_t |
| | |- |
| | | 04/09 |
| | | [[Linux/SELinux/04/09 Dateisysteme|Dateisysteme]] |
| | | Einbinden von Dateisystemen |
| | |- |
| | | 04/10 |
| | | [[Linux/SELinux/04/10 Labels beibehalten|Labels beibehalten]] |
| | | SELinux-Labels beibehalten |
| | |- |
| | | 04/11 |
| | | [[Linux/SELinux/04/11 Informationsbeschaffung|Informationsbeschaffung]] |
| | | Tools zur Informationsbeschaffung |
| | |- |
| | | 04/12 |
| | | [[Linux/SELinux/04/12 Richtlinienmodule|Richtlinienmodule]] |
| | | Priorisierung und Deaktivierung von SELinux-Richtlinienmodulen |
| | |- |
| | | 04/13 |
| | | [[Linux/SELinux/04/13 Multi-Level Security|Multi-Level Security]] |
| | | Multi-Level Security (MLS) |
| | |- |
| | | 04/14 |
| | | [[Linux/SELinux/04/14 Dateinamenübergang|Dateinamenübergang]] |
| | | Dateinamenübergang |
| | |- |
| | | 04/15 |
| | | [[Linux/SELinux/04/15 ptrace|ptrace()]] |
| | | Deaktivieren von ptrace() |
| | |- |
| | | 04/16 |
| | | [[Linux/SELinux/04/16 Miniaturansichten|Miniaturansichten]] |
| | | Schutz von Miniaturansichten |
| | |} |
|
| |
|
| === SELinux-Pakete ===
| | ---- |
| Bei einer vollständigen Installation von Red Hat Enterprise Linux werden die SELinux-Pakete standardmäßig installiert, sofern sie nicht während der Installation manuell ausgeschlossen werden
| |
| * Bei einer Minimalinstallation im Textmodus werden die Pakete policycoreutils-python und policycoreutils-gui standardmäßig nicht installiert
| |
| * Außerdem läuft SELinux standardmäßig SELinux im Enforcing-Modus und die SELinux-Targeted-Policy wird verwendet
| |
| * Die folgenden SELinux-Pakete sind standardmäßig auf Ihrem System installiert
| |
| * policycoreutils stellt Dienstprogramme wie [[restorecon]], [[secon]], [[setfiles]], [[semodule]], [[load_policy]] und [[setsebool]] für den Betrieb und die Verwaltung von SELinux bereit
| |
| * selinux-policy stellt eine grundlegende Verzeichnisstruktur, die Datei [[selinux-policy.conf]] und RPM-Makros bereit
| |
| * selinux-policy -targeted stellt die SELinux-Targeted-Richtlinie bereit
| |
| * libselinux – stellt eine API für SELinux-Anwendungen bereit
| |
| * libselinux-utils stellt die Dienstprogramme [[avcstat]], [[getenforce]], [[getsebool]], [[matchpathcon]], [[selinuxconlist]], [[selinuxdefcon]], [[selinuxenabled]] und [[setenforce]] bereit
| |
| * libselinux-python stellt Python-Bindungen für die Entwicklung von SELinux-Anwendungen bereit
| |
|
| |
|
| Die folgenden Pakete sind standardmäßig nicht installiert, können aber optional durch Ausführen des Befehls [[yum install ‚‘<package-name>‚‘]] installiert werden
| | {{Navigation|Linux/SELinux/03 Default Policy/Benutzer|Linux/SELinux/04/02 Protokolldateien}} |
| * selinux-policy-devel stellt Dienstprogramme zum Erstellen einer benutzerdefinierten SELinux-Richtlinie und von Richtlinienmodulen bereit
| |
| * selinux-policy-doc enthält Handbuchseiten, die beschreiben, wie SELinux zusammen mit verschiedenen Diensten konfiguriert wird
| |
| * selinux-policy-mls enthält die MLS-SELinux-Richtlinie (Multi-Level Security)
| |
| * setroubleshoot-server übersetzt Ablehnungsmeldungen, die bei einer Zugriffsverweigerung durch SELinux ausgegeben werden, in detaillierte Beschreibungen, die mit dem ebenfalls in diesem Paket enthaltenen Dienstprogramm [[sealert]] angezeigt werden können
| |
| * setools-console stellt die Tresys Technology SETools-Distribution bereit, eine Reihe von Dienstprogrammen und Bibliotheken zur Analyse und Abfrage von Richtlinien, zur Überwachung und Berichterstellung von Audit-Protokollen sowie zur Verwaltung von Dateikontexten
| |
| * Das Paket setools ist ein Metapaket für SETools
| |
| * Das Paket setools-gui stellt die Dienstprogramme [[apol]] und [[seaudit]] bereit
| |
| * Das Paket setools-console stellt die Befehlszeilen-Dienstprogramme [[sechecker]], [[sediff]], [[seinfo]], [[sesearch]] und [[findcon]] bereit
| |
| * Beachten Sie, dass die Pakete setools und setools-gui nur verfügbar sind, wenn der Red Hat Network Optional-Kanal aktiviert ist
| |
| * Weitere Informationen finden Sie unter Details zum Abdeckungsumfang
| |
| * mcstrans übersetzt Stufen wie [[s0-s0:c0.c1023]] in eine besser lesbare Form wie [[SystemLow-SystemHigh]]
| |
| * policycoreutils-python bietet Dienstprogramme wie [[semanage]], [[audit2allow]], [[audit2why]] und [[chcat]] zum Bedienen und Verwalten von SELinux
| |
| * policycoreutils-gui stellt [[system-config-selinux]] bereit, ein grafisches Dienstprogramm zur Verwaltung von SELinux
| |
|
| |
|
| === Welche Protokolldatei wird verwendet ===
| | [[Kategorie:Linux/SELinux]] |
| Unter Red Hat Enterprise Linux sind die Pakete dbus und audit standardmäßig installiert, sofern sie nicht aus der Standard-Paketauswahl entfernt wurden
| | [[Kategorie:Linux/SELinux/04]] |
| * Der Setroubleshoot-Server muss über Yum installiert werden (verwenden Sie den Befehl [[yum install setroubleshoot-server]])
| |
| | |
| Wenn der [[auditd]]-Daemon läuft, wird standardmäßig eine SELinux-Ablehnungsmeldung wie die folgende in [[/var/log/audit/audit.log]] geschrieben
| |
| type=AVC msg=audit (1223024155.684:49)
| |
| avc
| |
| denied { getattr } for pid=2000 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=399185 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:samba_share_t:s0 tclass=file
| |
| | |
| Außerdem wird eine Meldung ähnlich der folgenden in die Datei [[/var/log/message]] geschrieben
| |
| 7. Mai 18:55:56 localhost setroubleshoot
| |
| SELinux verhindert, dass httpd (httpd_t) „getattr“ auf /var/www/html/file1 (samba_share_t) ausführt
| |
| * Für vollständige SELinux-Meldungen
| |
| führen Sie sealert -l de7e30d6-5488-466d-a606-92c9f40d316d aus
| |
| | |
| In Red Hat Enterprise Linux 7 läuft [[setroubleshootd]] nicht mehr ständig als Dienst
| |
| * Es wird jedoch weiterhin zur Analyse der AVC-Meldungen verwendet
| |
| * Zwei neue Programme dienen dazu, [[setroubleshoot]] bei Bedarf zu starten
| |
| * Das Dienstprogramm [[sedispatch]] läuft als Teil des [[audit]]-Subsystems
| |
| * Wenn eine AVC-Ablehnungsmeldung zurückgegeben wird, sendet [[sedispatch]] eine Nachricht über [[dbus]]
| |
| * Diese Nachrichten gehen direkt an [[setroubleshootd]], sofern dieses bereits läuft
| |
| * Läuft es nicht, startet [[sedispatch]] es automatisch
| |
| * Das Dienstprogramm [[seapplet]] läuft in der System-Symbolleiste und wartet auf DBus-Meldungen von [[setroubleshootd]]
| |
| * Es öffnet die Benachrichtigungsblase, in der der Benutzer die AVC-Meldungen einsehen kann
| |
| | |
| ; Daemons automatisch starten
| |
| # Um die Daemons [[auditd]] und [ [rsyslog]]-Daemons so zu konfigurieren, dass sie beim Booten automatisch starten, geben Sie als Root-Benutzer die folgenden Befehle ein
| |
| sudo systemctl enable auditd.service
| |
| sudo systemctl enable rsyslog.service
| |
| # Um sicherzustellen, dass die Daemons aktiviert sind, geben Sie an der Shell-Eingabeaufforderung die folgenden Befehle ein
| |
| systemctl is-enabled auditd
| |
| enabled
| |
|
| |
| systemctl is-enabled rsyslog
| |
| enabled
| |
| Alternativ können Sie den Befehl [[systemctl status ‚'service-name‘'.service]] verwenden und in der Befehlsausgabe nach dem Schlüsselwort [[enabled]] suchen, zum Beispiel
| |
| systemctl status auditd.service | grep enabled
| |
| auditd.service – Sicherheitsüberwachungsdienst
| |
| Geladen
| |
| geladen (/usr/lib/systemd/system/auditd.service; ‚'enabled‘')
| |
| | |
| Weitere Informationen darüber, wie der [[systemd]]-Daemon Systemdienste verwaltet, finden Sie im Kapitel „Verwaltung von Systemdiensten“ im Systemadministratorhandbuch
| |
| | |
| === Hauptkonfigurationsdatei ===
| |
| Die Datei [[/etc/selinux/config]] ist die Hauptkonfigurationsdatei von SELinux
| |
| * Sie steuert, ob SELinux aktiviert oder deaktiviert ist und welcher SELinux-Modus sowie welche SELinux-Richtlinie verwendet wird
| |
| # Diese Datei steuert den Status von SELinux auf dem System
| |
| # SELINUX= kann einen dieser drei Werte annehmen
| |
| # enforcing – Die SELinux-Sicherheitsrichtlinie wird durchgesetzt
| |
| # permissive – SELinux gibt Warnungen aus, anstatt die Richtlinie durchzusetzen
| |
| # disabled – Es wird keine SELinux-Richtlinie geladen
| |
| SELINUX=enforcing
| |
| # SELINUXTYPE= kann einen dieser beiden Werte annehmen
| |
|
| |
| # targeted – Zielgerichtete Prozesse werden geschützt,
| |
| # mls – Multi-Level-Security-Schutz
| |
| SELINUXTYPE=targeted
| |
| | |
| ; <nowiki>[[SELINUX=]]</nowiki>
| |
| | |
| Die Option <nowiki>[[SELINUX]]</nowiki> legt fest, ob SELinux deaktiviert oder aktiviert ist und in welchem Modus – enforcing oder permissive – es läuft
| |
| * Bei Verwendung von [[SELINUX=enforcing]] wird die SELinux-Richtlinie durchgesetzt, und SELinux verweigert den Zugriff auf Grundlage der SELinux-Richtlinienregeln
| |
| * Verweigerungsmeldungen werden protokolliert
| |
| * Bei Verwendung von [[SELINUX=permissive]] wird die SELinux-Richtlinie nicht durchgesetzt
| |
| * SELinux verweigert keinen Zugriff, aber Verweigerungen werden für Aktionen protokolliert, die verweigert worden wären, wenn SELinux im Durchsetzungsmodus laufen würde
| |
| * Bei Verwendung von [[SELINUX=disabled]] ist SELinux deaktiviert, das SELinux-Modul ist nicht beim Linux-Kernel registriert und es werden nur DAC-Regeln verwendet
| |
| | |
| ; <nowiki>[[SELINUXTYPE=]]</nowiki>
| |
| Die Option [[SELINUXTYPE]] legt die zu verwendende SELinux-Richtlinie fest
| |
| * Die Targeted-Richtlinie ist die Standardrichtlinie
| |
| * Ändern Sie diese Option nur, wenn Sie die MLS-Richtlinie verwenden möchten
| |
| * Informationen zum Aktivieren der MLS-Richtlinie finden Sie im Abschnitt „[[Aktivieren von MLS in SELinux]]“
| |
| | |
| === Dauerhafte Änderungen an SELinux-Zuständen und -Modi ===
| |
| SELinux kann aktiviert oder deaktiviert werden | |
| * Wenn aktiviert, hat SEL
| |
|
| |
| inux zwei Modi: „enforcing“ und „permissive“
| |
| | |
| Verwenden Sie die Befehle [[getenforce]] oder [[sestatus]], um zu überprüfen, in welchem Modus SELinux läuft
| |
| * Der Befehl [[getenforce]] gibt [[Enforcing]], [[Permissive]] oder [ [Disabled]]
| |
| | |
| Der Befehl [[sestatus]] gibt den SELinux-Status und die verwendete SELinux-Richtlinie zurück
| |
| sestatus
| |
| SELinux-Status
| |
| enabled
| |
| SELinuxfs-Mount
| |
| /sys/fs/selinux
| |
| SELinux-Stammverzeichnis
| |
| /etc/selinux
| |
|
| |
| Name der geladenen Richtlinie
| |
| targeted
| |
| Aktueller Modus
| |
| enforcing
| |
| Modus aus Konfigurationsdatei
| |
| enforcing
| |
| MLS-Status der Richtlinie
| |
| enabled
| |
| Status von deny_unknown in der Richtlinie
| |
| allowed
| |
| Maximale Kernel-Richtlinienversion
| |
| 30
| |
| | |
| ; Hinweis
| |
| : Wenn Systeme SELinux im permissiven Modus ausführen, können Benutzer Dateien falsch kennzeichnen
| |
| * Dateien, die erstellt wurden, während SELinux deaktiviert war, werden überhaupt nicht gekennzeichnet
| |
| * Dieses Verhalten verursacht Probleme beim Wechsel in den enforcing-Modus, da Dateien falsch oder gar nicht gekennzeichnet sind
| |
| * Um zu verhindern, dass falsch gekennzeichnete und nicht gekennzeichnete Dateien Probleme verursachen, werden Dateisysteme automatisch neu gekennzeichnet, wenn vom deaktivierten Zustand in den permissiven oder den enforcing-Modus gewechselt wird
| |
| | |
| ==== SELinux aktivieren ====
| |
| Wenn SELinux aktiviert ist, kann es in einem von zwei Modi ausgeführt werden: enforcing oder permissive
| |
| * Die folgenden Abschnitte zeigen, wie Sie dauerhaft in diese Modi wechseln
| |
| | |
| Beim Aktivieren von SELinux auf Systemen, auf denen es zuvor deaktiviert war, empfiehlt Red Hat, um Probleme wie das Nicht-Booten des Systems oder Prozessfehler zu vermeiden, dieses Verfahren zu befolgen
| |
| # Aktivieren Sie SELinux im permissiven Modus
| |
| * Weitere Informationen finden Sie im Abschnitt „Permissiver Modus“
| |
| # Starten Sie Ihr System neu
| |
| # Überprüfen Sie, ob SELinux-Ablehnungsmeldungen vorliegen
| |
| * Weitere Informationen finden Sie im Abschnitt „Suchen und Anzeigen von Ablehnungen“
| |
| # Wenn keine Ablehnungen vorliegen, wechseln Sie in den Durchsetzungsmodus
| |
| * Weitere Informationen finden Sie im Abschnitt „Enforcing-Modus“
| |
| | |
| Um benutzerdefinierte Anwendungen mit SELinux im Enforcing-Modus auszuführen, wählen Sie eines der folgenden Szenarien
| |
| * Führen Sie Ihre Anwendung in der Domäne [[unconfined_service_t]] aus
| |
| * Weitere Informationen finden Sie im Abschnitt „[[Unconfined-Prozesse]]“
| |
| * Schreiben Sie eine neue Richtlinie für Ihre Anwendung
| |
| * Weitere Informationen finden Sie im Knowledge-Base-Artikel „Writing Custom SELinux Policy“
| |
| | |
| ===== Permissive-Modus =====
| |
| Wenn SELinux im Permissive-Modus läuft, wird die SELinux-Richtlinie nicht durchgesetzt
| |
| * Das System bleibt betriebsbereit und SELinux verweigert keine Vorgänge, sondern protokolliert lediglich AVC-Meldungen, die dann zur Fehlerbehebung, zum Debugging und zur Verbesserung der SELinux-Richtlinie verwendet werden können
| |
| * In diesem Fall wird jede AVC-Meldung nur einmal protokolliert
| |
| | |
| Um den Modus dauerhaft auf „permissive“ umzustellen, befolgen Sie die folgenden Schritte
| |
| ; Umstellung auf den permissiven Modus
| |
| # Bearbeiten Sie die Datei [[/etc/selinux/config]] wie folgt
| |
| # Diese Datei steuert den Status von SELinux auf dem System
| |
| # SELINUX= kann einen dieser drei Werte annehmen
| |
| # enforcing – Die SELinux-Sicherheitsrichtlinie wird durchgesetzt
| |
| # permissive – SELinux gibt Warnungen aus, anstatt die Richtlinie durchzusetzen
| |
| # disabled – Es wird keine SELinux-Richtlinie geladen
| |
| SELINUX=‚‘'permissive
| |
| # SELINUXTYPE= kann einen dieser beiden Werte annehmen
| |
| # targeted – Zielprozesse werden geschützt,
| |
|
| |
| # mls – Multi-Level-Security-Schutz
| |
| SELINUXTYPE=targeted
| |
| # Starten Sie das System neu
| |
| sudo reboot
| |
| | |
| ===== Durchsetzungsmodus =====
| |
| Wenn SELinux im Durchsetzungsmodus läuft, setzt es die SELinux-Richtlinie durch und verweigert den Zugriff auf der Grundlage der SELinux-Richtlinienregeln
| |
| * Unter Red Hat Enterprise Linux ist der Durchsetzungsmodus standardmäßig aktiviert, wenn das System ursprünglich mit SELinux
| |
| | |
| Wenn SELinux deaktiviert wurde, befolgen Sie die nachstehende Vorgehensweise, um den Modus wieder auf „Enforcing“ umzustellen
| |
| ; Umstellung auf den Enforcing-Modus
| |
| Diese Vorgehensweise setzt voraus, dass die Pakete selinux-policy -targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils und policycoreutils-python installiert sind
| |
| * Um zu überprüfen, ob die Pakete installiert sind, verwenden Sie den folgenden Befehl
| |
| rpm -q ‚'Paketname‘'
| |
| | |
| # Bearbeiten Sie die Datei [[/etc/selinux/config]] wie folgt
| |
| # Diese Datei steuert den Status von SELinux auf dem System
| |
| # SELINUX= kann einen dieser drei Werte annehmen
| |
| # enforcing – Die SELinux-Sicherheitsrichtlinie wird durchgesetzt
| |
| # permissive – SELinux gibt Warnungen aus, anstatt die Richtlinie durchzusetzen
| |
| # disabled – Es wird keine SELinux-Richtlinie geladen
| |
| SELINUX=‚‘'enforcing
| |
|
| |
| # SELINUXTYPE= kann einen dieser beiden Werte annehmen
| |
| # targeted – Zielgerichtete Prozesse werden geschützt,
| |
| # mls – Multi-Level-Security-Schutz
| |
| SELINUXTYPE=targeted
| |
| # Starten Sie das System neu
| |
| sudo reboot
| |
| | |
| Beim nächsten Systemstart kennzeichnet SELinux alle Dateien und Verzeichnisse im System neu und fügt einen SELinux-Kontext für Dateien und Verzeichnisse hinzu, die erstellt wurden, als SELinux deaktiviert war
| |
| | |
| ; Hinweis
| |
| : Nach dem Wechsel in den Enforcing-Modus kann SELinux einige Aktionen aufgrund falscher oder fehlender SELinux-Richtlinien verweigern
| |
| | |
| Um anzuzeigen, welche Aktionen SELinux verweigert, geben Sie als Root den folgenden Befehl ein
| |
| sudo ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
| |
| | |
| Alternativ können Sie, sofern das Paket setroubleshoot-server installiert ist, als root den folgenden Befehl eingeben
| |
| sudo grep „SELinux is preventing“ /var/log/messages
| |
| | |
| Falls SELinux bestimmte Aktionen verweigert, finden Sie Informationen zur Fehlerbehebung in Kapitel 11, „Fehlerbehebung“
| |
| | |
| Vorübergehende Änderungen der Modi werden in Abschnitt „[[SELinux-Zustände und -Modi]]“ behandelt
| |
| | |
| ==== Deaktivieren von SELinux ====
| |
| Wenn SELinux deaktiviert ist, wird die SELinux-Richtlinie überhaupt nicht geladen; sie wird nicht durchgesetzt und AVC-Meldungen werden nicht protokolliert
| |
| * Daher gehen alle in Abschnitt 1.1, „Vorteile des Betriebs von SELinux“, aufgeführten Vorteile des Betriebs von SELinux verloren
| |
| | |
| ; Wichtig
| |
| : Red Hat empfiehlt dringend, den permissiven Modus zu verwenden, anstatt SELinux dauerhaft zu deaktivieren
| |
| * Weitere Informationen zum permissiven Modus finden Sie im Abschnitt „[[Permissive Mode]]“
| |
| | |
| Um SELinux dauerhaft zu deaktivieren, gehen Sie wie folgt vor
| |
| ; SELinux deaktivieren
| |
| # Konfigurieren Sie [[SELINUX=disabled]] in der Datei [[/etc/selinux/config]]
| |
| # Diese Datei steuert den Status von SELinux auf dem System
| |
| # SELINUX= kann einen dieser drei Werte annehmen
| |
| # enforcing – Die SELinux-Sicherheitsrichtlinie wird durchgesetzt
| |
| # permissive – SELinux gibt Warnungen aus, anstatt die Richtlinie durchzusetzen
| |
| # disabled – Es wird keine SELinux-Richtlinie geladen
| |
| SELINUX=‚‘'disabled
| |
| # SELINUXTYPE= kann einen dieser beiden Werte annehmen
| |
| # targeted – Zielgerichtete Prozesse werden geschützt,
| |
| # mls – Multi-Level-Security-Schutz
| |
| SELINUXTYPE=targeted
| |
| # Starten Sie Ihr System neu
| |
| | |
| Vergewissern Sie sich nach dem Neustart, dass der Befehl [[getenforce]] den Wert [[Disabled]] zurückgibt
| |
| getenforce
| |
| Disabled
| |
| | |
| === Ändern der SELinux-Modi beim Systemstart ===
| |
| Beim Systemstart können Sie mehrere Kernel-Parameter setzen, um die Funktionsweise von SELinux zu ändern
| |
| enforcing=0
| |
| | |
| Durch das Setzen dieses Parameters startet das System im permissiven Modus, was bei der Fehlerbehebung nützlich ist
| |
| * Die Verwendung des permissiven Modus ist möglicherweise die einzige Möglichkeit, ein Problem zu erkennen, wenn Ihr Dateisystem zu stark beschädigt ist
| |
| * Außerdem erstellt das System im permissiven Modus weiterhin die Labels korrekt
| |
| * Die in diesem Modus erzeugten AVC-Meldungen können sich von denen im Enforcing-Modus unterscheiden
| |
| | |
| Im Permissive-Modus wird nur die erste Verweigerung aus einer Reihe gleicher Verweigerungen gemeldet
| |
| * Im Enforcing-Modus hingegen erhalten Sie möglicherweise eine Verweigerung beim Lesen eines Verzeichnisses, woraufhin eine Anwendung stoppt
| |
| * Im permissiven Modus erhalten Sie dieselbe AVC-Meldung, aber die Anwendung liest weiterhin Dateien in dem Verzeichnis, und Sie erhalten zusätzlich für jede Verweigerung eine AVC
| |
| selinux=0
| |
| | |
| Dieser Parameter bewirkt, dass der Kernel keinen Teil der SELinux-Infrastruktur lädt
| |
| * Die Init-Skripte erkennen, dass das System mit dem Parameter [[selinux=0]] gebootet wurde, und schreiben in die Datei [[/.autorelabel]]
| |
| * Dies bewirkt, dass das System beim nächsten Start mit aktiviertem SELinux automatisch eine Neukennzeichnung durchführt
| |
| | |
| ; Wichtig
| |
| : Red Hat empfiehlt die Verwendung des Parameters [[selinux=0]] nicht
| |
| * Verwenden Sie zum Debuggen Ihres Systems vorzugsweise den permissiven Modus
| |
| autorelabel=1
| |
| | |
| Dieser Parameter zwingt das System zu einer Neukennzeichnung, ähnlich wie die folgenden Befehle
| |
| sudo touch /.autorelabel
| |
| sudo reboot
| |
| | |
| Wenn die Systemkennzeichnung eine große Anzahl von Fehlern enthält, müssen Sie möglicherweise im permissiven Modus booten, damit die automatische Neukennzeichnung erfolgreich ist
| |
| | |
| Weitere SELinux-bezogene Kernel-Boot-Parameter, wie beispielsweise [[checkreqprot]], finden Sie in der Datei [[/ usr/share/doc/kernel-doc-‚‘<KERNEL_VER>‚‘/Documentation/kernel-parameters.txt]]-Datei
| |
| * Diese Dokumentation wird mit dem Paket kernel-doc installiert
| |
| * Ersetzen Sie die Zeichenfolge ‚‘<KERNEL_VER>‚‘ durch die Versionsnummer des installierten Kernels, zum Beispiel
| |
| sudo yum install kernel-doc
| |
| less /usr/share/doc/kernel-doc-‚'3.10.0‘' /Documentation/kernel-parameters.txt
| |
| | |
| === Booleane ===
| |
| Booleane ermöglichen es, Teile der SELinux-Richtlinie zur Laufzeit zu ändern, ohne Kenntnisse im Schreiben von SELinux-Richtlinien zu benötigen
| |
| * Dies ermöglicht Änderungen, wie z. B. das Zulassen des Zugriffs von Diensten auf NFS-Volumes, ohne die SELinux-Richtlinie neu zu laden oder neu zu kompilieren
| |
| | |
| ==== Auflisten von Booleanen ====
| |
| Um eine Liste der Booleans, eine Erklärung zu deren Bedeutung sowie Angaben dazu, ob sie aktiviert oder deaktiviert sind, zu erhalten, führen Sie den Befehl [[semanage boolean -l]] als Linux-Root-Benutzer aus
| |
| | |
| Das folgende Beispiel listet nicht alle Booleans auf, und die Ausgabe wurde der Kürze halber gekürzt
| |
| sudo semanage boolean -l
| |
| SELinux-Boolean Status Standard Beschreibung
| |
| smartmon_3ware (aus , aus) Legt fest, ob smartmon...
| |
| mpd_enable_homedirs (aus, aus) Legt fest, ob mpd...
| |
| | |
| ; Hinweis
| |
| : Um detailliertere Beschreibungen zu erhalten, installieren Sie das Paket selinux-policy-devel
| |
| | |
| Die Spalte [[SELinux-Boolean]] listet die Namen der Booleans auf
| |
| * Die Spalte [[Beschreibung]] gibt an, ob die Booleans aktiviert oder deaktiviert sind und welche Funktion sie haben
| |
| | |
| Der Befehl [[getsebool -a]] listet Boolesche Werte auf, unabhängig davon, ob sie aktiviert oder deaktiviert sind, gibt jedoch keine Beschreibung zu jedem einzelnen
| |
| * Das folgende Beispiel listet nicht alle Booleschen Werte auf
| |
| getsebool -a
| |
| cvs_read_shadow --> off
| |
| daemons_dump_core --> on
| |
| | |
| Führen Sie den Befehl [[getsebool ‚‘ boolean-name'‚]] aus, um nur den Status des Booleschen Werts ‘'boolean-name'' aufzulisten
| |
| getsebool cvs_read_shadow
| |
| cvs_read_shadow --> off
| |
| | |
| Verwenden Sie eine durch Leerzeichen getrennte Liste, um mehrere Boolesche Werte aufzulisten
| |
| getsebool cvs_read_shadow daemons_dump_core
| |
| cvs_read_shadow --> off
| |
| daemons _dump_core --> on
| |
| | |
| ==== Konfigurieren von Booleschen Werten ====
| |
| Führen Sie das Dienstprogramm [[setsebool]] im Format [[setsebool ‚'boolean_name‘' on/off]] aus, um Boolesche Werte zu aktivieren oder zu deaktivieren
| |
| | |
| Das folgende Beispiel zeigt die Konfiguration des Booleschen Werts [[httpd_can_network_connect_db]]
| |
| | |
| ; Konfigurieren von Booleschen Werten
| |
| # Standardmäßig ist der Boolesche Wert [[httpd_can_network_connect_db]] deaktiviert, wodurch Skripte und Module des Apache-HTTP-Servers daran gehindert werden, eine Verbindung zu Datenbankservern herzustellen
| |
| getsebool httpd_can_network_connect_db
| |
| httpd_can_network_connect_db --> off
| |
| # Um Skripte und Module des Apache-HTTP-Servers vorübergehend die Verbindung zu Datenbankservern zu ermöglichen, geben Sie als Root den folgenden Befehl ein
| |
| sudo setsebool httpd_can_network_connect_db on
| |
| # Verwenden Sie das Dienstprogramm [[getsebool]], um zu überprüfen, ob der Boolean-Wert aktiviert wurde
| |
| getsebool httpd_can_network_connect_db
| |
| httpd_can_network_connect_db --> on
| |
| | |
| Dadurch können Skripte und Module des Apache-HTTP-Servers eine Verbindung zu Datenbankservern herstellen
| |
| # Diese Änderung bleibt nach einem Neustart nicht erhalten
| |
| #*Um Änderungen auch nach einem Neustart beizubehalten, führen Sie den Befehl [[setsebool -P ‚‘ boolean-name'' on]] als Root aus:[3]
| |
| sudo setsebool -P httpd_can_network_connect_db on
| |
| | |
| ==== Shell-Autovervollständigung ====
| |
| Es ist möglich, die Shell-Autovervollständigung mit den Dienstprogrammen [[getsebool]], [[setsebool]] und [[semanage]] zu verwenden
| |
| * Verwenden Sie die Autovervollständigung mit [[getsebool]] und [ [setsebool]], um sowohl Befehlszeilenparameter als auch Boolesche Werte zu vervollständigen
| |
| * Um nur die Befehlszeilenparameter aufzulisten, fügen Sie das Bindestrichzeichen („-“) hinter dem Befehlsnamen ein und drücken Sie die [[Tab]]-Taste
| |
| sudo setsebool -[Tab]
| |
| -P
| |
| | |
| Um einen Booleschen Wert zu vervollständigen, beginnen Sie mit der Eingabe des Booleschen Werts und drücken Sie dann die [[Tab]]-Taste
| |
| getsebool samba_[Tab]
| |
| samba_create_home_dirs samba_export_all_ro samba_run_unconfined
| |
| samba_domain_controller samba_export_all_rw samba_share_fusefs
| |
| samba_enable_home_dirs samba_portmapper samba_share_nfs
| |
|
| |
| sudo setsebool -P virt_use_[Tab]
| |
| virt_use_comm virt_use_nfs virt_use_sanlock
| |
| virt_use_execmem virt_use_rawip virt_use_usb
| |
| virt_use_fusefs virt_use_samba virt_use_xserver
| |
| | |
| Das Dienstprogramm [[semanage]] wird mit mehreren Befehlszeilenargumenten verwendet, die nacheinander vervollständigt werden
| |
| * Das erste Argument eines [[semanage]]-Befehls ist eine Option, die angibt, welcher Teil der SELinux-Richtlinie verwaltet wird
| |
| sudo semanage [Tab]
| |
| boolean export import login node port
| |
| dontaudit fcontext interface module permissive user
| |
| | |
| Anschließend folgen ein oder mehrere Befehlszeilenparameter
| |
| sudo semanage fcontext -[Tab]
| |
| -a -D --equal --help -m -o
| |
| --add --delete -f -l --modify -S
| |
| -C --deleteall --ftype --list -n -t
| |
| -d -e -h --locallist --noheading --type
| |
| | |
| Geben Sie schließlich den Namen eines bestimmten SELinux-Eintrags ein, z. B. einen Booleschen Wert, einen SELinux-Benutzer, eine Domäne oder einen anderen
| |
| * Beginnen Sie mit der Eingabe des Eintrags und drücken Sie [[Tab]]
| |
| sudo semanage fcontext -a -t samba<tab>
| |
|
| |
| samba_etc_t samba_secrets_t
| |
| sambagui_exec_t samba_share_t
| |
| samba_initrc_exec_t samba_unconfined_script_exec_t
| |
| samba_log_t samba_unit_file_t
| |
| samba_net_exec_t
| |
| | |
| Befehls- -Parameter können in einem Befehl verkettet werden
| |
| sudo semanage port -a -t http_port_t -p tcp 81
| |
| | |
| === SELinux-Kontexte – Dateien kennzeichnen ===
| |
| Auf Systemen, auf denen SELinux läuft, werden alle Prozesse und Dateien so gekennzeichnet, dass sie sicherheitsrelevante Informationen darstellen
| |
| * Diese Informationen werden als SELinux-Kontext bezeichnet
| |
| * Bei Dateien kann dies mit dem Befehl [[ls -Z]] angezeigt werden
| |
|
| |
| ls -Z file1
| |
| -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
| |
| | |
| In diesem Beispiel stellt SELinux einen Benutzer ([[unconfined_u]]), eine Rolle ([[object_r]]), einen Typ ([[user_home_t]]) und eine Stufe ([[s0]]) bereit
| |
| * Diese Informationen werden verwendet, um Entscheidungen zur Zugriffskontrolle zu treffen
| |
| * Auf DAC-Systemen wird der Zugriff auf Basis der Linux-Benutzer- und Gruppen-IDs kontrolliert
| |
| * SELinux-Richtlinienregeln werden nach den DAC-Regeln überprüft
| |
| * SELinux-Richtlinienregeln werden nicht angewendet, wenn DAC-Regeln den Zugriff zuvor verweigern
| |
| | |
| ; Hinweis
| |
| : Standardmäßig erben neu erstellte Dateien und Verzeichnisse den SELinux-Typ ihrer übergeordneten Verzeichnisse
| |
| * Wenn Sie beispielsweise eine neue Datei im Verzeichnis [[/etc]] erstellen, das mit dem Typ [[etc_t]] gekennzeichnet ist, erbt die neue Datei denselben Typ
| |
| ls -dZ - /etc
| |
|
| |
| drwxr-xr-x root root system_u:object_r:‚'etc_t‘':s0 /etc
| |
| | |
| sudo touch /etc/file1
| |
| | |
| sudo ls -lZ /etc/file1
| |
| -rw-r--r-- root root unconfined_u:object_r:‚'etc_t‘':s0 /etc/file1
| |
| | |
| SELinux bietet mehrere Befehle zur Verwaltung der Dateisystem-Kennzeichnung, wie beispielsweise [[chcon]], [[semanage fcontext]], [[restorecon]] und [[matchpathcon]]
| |
| | |
| ==== Temporäre Änderungen: chcon ====
| |
| Der Befehl [[chcon]] ändert den SELinux-Kontext für Dateien
| |
| * Änderungen, die mit dem Befehl [[chcon]] vorgenommen werden, bleiben jedoch nicht bestehen, wenn das Dateisystem neu gekennzeichnet wird oder der Befehl [[restorecon]]
| |
| * Die SELinux-Richtlinie legt fest, ob Benutzer den SELinux-Kontext für eine bestimmte Datei ändern dürfen
| |
| * Bei der Verwendung von [[chcon]] geben Benutzer den gesamten oder einen Teil des SELinux-Kontexts an, der geändert werden soll
| |
| * Ein falscher Dateityp ist eine häufige Ursache dafür, dass SELinux den Zugriff verweigert
| |
| | |
| ==== Kurzreferenz ====
| |
| * Führen Sie den Befehl [[chcon -t ‚'type‘' ‚'file-name‘' ]], um den Dateityp zu ändern, wobei ‚'type‘' ein SELinux-Typ ist, wie z. B. [ [httpd_sys_content_t]], und ‚'file-name‘' ein Datei- oder Verzeichnisname ist
| |
| chcon -t httpd_sys_content_t ‚'file-name‘'
| |
| | |
| * Führen Sie den Befehl [[chcon -R -t ‚'type‘' ‚'directory-name‘']] aus, um den Typ des Verzeichnisses und dessen Inhalt zu ändern, wobei ‚'type‘' ein SELinux-Typ ist, wie beispielsweise [[httpd_sys_content_t]], und ‚'Verzeichnisname‘' ein Verzeichnisname ist
| |
| chcon -R -t httpd_sys_content_t ‚'Verzeichnisname‘'
| |
| | |
| ; Ändern des Typs einer Datei oder eines Verzeichnisses
| |
| Das folgende Verfahren zeigt, wie der Typ und keine anderen Attribute des SELinux-Kontexts geändert werden
| |
| * Das Beispiel in diesem Abschnitt funktioniert genauso für Verzeichnisse, beispielsweise wenn [[file1]] ein Verzeichnis wäre. # Wechseln Sie in Ihr Home-Verzeichnis
| |
| # Erstellen Sie eine neue Datei und zeigen Sie deren SELinux-Kontext an
| |
| touch file1
| |
| | |
| ls -Z file1
| |
| -rw -rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
| |
| | |
| In diesem Beispiel umfasst der SELinux-Kontext für [[file1]] den SELinux-Benutzer [[unconfined_u]], die Rolle [[object_r]], den Typ [[user_home_t]] und die [[s0]] Ebene
| |
| * Eine Beschreibung der einzelnen Bestandteile des SELinux-Kontexts finden Sie in Kapitel 2, ‚'SELinux-Kontexte‘'
| |
| # Geben Sie den folgenden Befehl ein, um den Typ in [[samba_share_t]] zu ändern
| |
| * Die Option [[-t]] ändert nur den Typ
| |
| * Zeigen Sie anschließend die Änderung an
| |
| chcon -t samba_share_t file1
| |
| | |
| ls -Z file1
| |
| -rw-rw-r-- user1 group1 unconfined_u:object_r:samba_share_t:s0 file1
| |
| | |
| # Verwenden Sie den folgenden Befehl, um den SELinux-Kontext für die Datei [[file1]] wiederherzustellen
| |
| * Verwenden Sie die Option [[-v]], um die Änderungen anzuzeigen
| |
| restorecon -v file1
| |
| restorecon reset file1 context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:user_home_t:s0
| |
| | |
| In diesem Beispiel wird der vorherige Typ, [[samba_share_t]], auf den korrekten Typ, [[user_home_t]], zurückgesetzt
| |
| * Bei Verwendung der Targeted-Richtlinie (der Standard-SELinux-Richtlinie in Red Hat Enterprise Linux) liest der Befehl [[restorecon]] die Dateien im Verzeichnis [[/etc/selinux/targeted/contexts/files/]] aus, um festzustellen, welchen SELinux-Kontext die Dateien haben sollten
| |
| | |
| ; Ändern der Typen eines Verzeichnisses und seines Inhalts
| |
| Das folgende Beispiel zeigt, wie ein neues Verzeichnis erstellt und der Dateityp des Verzeichnisses sowie dessen Inhalt auf einen vom Apache-HTTP-Server verwendeten Typ geändert wird
| |
| * Die Konfiguration in diesem Beispiel wird verwendet, wenn Sie möchten, dass der Apache-HTTP-Server ein anderes Dokumentstammverzeichnis (anstelle von [[/var/www/html/]]) verwendet
| |
| # Erstellen Sie als Root-Benutzer ein neues [ [web/]]-Verzeichnis und anschließend 3 leere Dateien ([[file1]], [[file2]] und [[file3]]) in diesem Verzeichnis
| |
| * Das [[web/]]-Verzeichnis und die darin enthaltenen Dateien sind mit dem Typ [[default_t]] gekennzeichnet
| |
| sudo mkdir /web
| |
|
| |
| sudo touch /web/file{1,2,3}
| |
| sudo ls -dZ /web
| |
| drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web
| |
| | |
| sudo ls -lZ /web
| |
|
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file1
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file2
| |
|
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file3
| |
| | |
| # Geben Sie als root den folgenden Befehl ein, um den Typ des Verzeichnisses [[web/]] (und dessen Inhalt) in [[httpd_sys_content_t]] zu ändern
| |
| sudo chcon -R -t httpd_sys_content_t /web/
| |
| | |
| sudo ls -dZ /web/
| |
| drwxr-xr-x root root unconfined_u:object_r:httpd_sys_content_t:s0 /web/
| |
|
| |
| sudo ls -lZ /web/
| |
| -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file1
| |
| -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file2
| |
| -rw-r--r-- root root unconfined_u:object_r: httpd_sys_content_t:s0 file3
| |
| | |
| # Um die Standard-SELinux-Kontexte wiederherzustellen, verwenden Sie das Dienstprogramm [[restorecon]] als root
| |
| sudo restorecon -R -v /web/
| |
| restorecon reset /web context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
| |
|
| |
| restorecon reset /web/file2 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
| |
| restorecon reset /web/file3 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t: s0
| |
| restorecon reset /web/file1 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
| |
| | |
| Weitere Informationen zu [[chcon]] finden Sie auf der chcon(1)-Manpage
| |
| | |
| ; Hinweis
| |
| : Typen-Enforcement ist die wichtigste Berechtigungssteuerung, die in der SELinux-Targeted-Policy verwendet wird
| |
| * In den meisten Fällen können SELinux-Benutzer und -Rollen ignoriert werden
| |
| | |
| ==== Dauerhafte Änderungen: semanage fcontext ====
| |
| Der Befehl [[semanage fcontext]] wird verwendet, um den SELinux-Kontext von Dateien zu ändern
| |
| * Um die Kontexte neu erstellter Dateien und Verzeichnisse anzuzeigen, geben Sie als root den folgenden Befehl ein
| |
| sudo semanage fcontext -C -l
| |
| | |
| Änderungen, die mit [[semanage fcontext]] vorgenommen wurden, werden von den folgenden Dienstprogrammen verwendet
| |
| * Das Dienstprogramm [[setfiles]] wird verwendet, wenn ein Dateisystem neu gekennzeichnet wird, und das Dienstprogramm [[restorecon]] stellt die Standard-SELinux-Kontexte wieder her
| |
| * Das bedeutet, dass durch [[semanage fcontext]] vorgenommene Änderungen dauerhaft sind, selbst wenn das Dateisystem neu gekennzeichnet wird
| |
| * Die SELinux-Richtlinie steuert, ob Benutzer den SELinux-Kontext für eine bestimmte Datei ändern können
| |
| | |
| ==== Kurzübersicht ====
| |
| Um SELinux-Kontextänderungen vorzunehmen, die eine Neukennzeichnung des Dateisystems überdauern
| |
| # Geben Sie den folgenden Befehl ein und achten Sie darauf, den vollständigen Pfad zur Datei oder zum Verzeichnis zu verwenden
| |
| sudo semanage fcontext -a ‚'Optionen‘' ‚'Dateiname‘ ‚|‘'Verzeichnisname'‚
| |
| | |
| # Verwenden Sie das Dienstprogramm [[restorecon]], um die Kontextänderungen anzuwenden
| |
| sudo restorecon -v ‘'Dateiname'‚|‘'Verzeichnisname'‚
| |
| | |
| ===== Verwendung regulärer Ausdrücke mit semanage fcontext =====
| |
| Damit der Befehl [[semanage fcontext]] korrekt funktioniert, können Sie entweder einen vollqualifizierten Pfad oder ‘'' Perl-kompatible reguläre Ausdrücke ()‚‘'
| |
| * Das einzige verwendete ‚'PCRE‘'-Flag ist [[PCRE2_DOTALL]], wodurch der Platzhalter [[.]] mit allem übereinstimmt, einschließlich einer neuen Zeile
| |
| * Zeichenfolgen, die Pfade darstellen, werden als Bytes verarbeitet, was bedeutet, dass Nicht-ASCII-Zeichen nicht durch einen einzelnen Platzhalter abgeglichen werden
| |
| | |
| Beachten Sie, dass mit [[semanage fcontext]] angegebene Dateikontextdefinitionen in umgekehrter Reihenfolge zu ihrer Definition ausgewertet werden
| |
| der letzte Eintrag wird unabhängig von der Stammlänge zuerst ausgewertet
| |
| * Lokale Dateikontextänderungen, die in [[file_contexts.local]] gespeichert sind, haben eine höhere Priorität als die in Policy-Modulen angegebenen
| |
| * Das bedeutet, dass immer dann, wenn in [[file_contexts.local]] gefunden wird, werden keine anderen Dateikontextdefinitionen berücksichtigt
| |
| | |
| ; Wichtig
| |
| : Mit dem Befehl [[semanage fcontext]] festgelegte Dateikontextdefinitionen überschreiben effektiv alle anderen Dateikontextdefinitionen
| |
| * Alle regulären Ausdrücke sollten daher so spezifisch wie möglich sein, um unbeabsichtigte Auswirkungen auf andere Teile des Dateisystems zu vermeiden
| |
| | |
| Weitere Informationen zu den in Dateikontextdefinitionen verwendeten regulären Ausdrücken und den geltenden Flags finden Sie in der [[semanage-fcontext(8) ]] Man-Seite
| |
| | |
| ; Ändern des Typs einer Datei oder eines Verzeichnisses
| |
| Das folgende Beispiel zeigt, wie der Typ einer Datei geändert wird, ohne andere Attribute des SELinux-Kontexts zu beeinflussen
| |
| * Dieses Beispiel funktioniert genauso für Verzeichnisse, beispielsweise wenn [[file1]] ein Verzeichnis wäre. # Erstellen Sie als Root-Benutzer eine neue Datei im Verzeichnis [[/etc]]
| |
| * Standardmäßig werden neu erstellte Dateien in [[/etc]] mit dem Typ [[etc_t]] gekennzeichnet
| |
| sudo touch /etc/file1
| |
|
| |
| ls -Z /etc/file1
| |
| -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
| |
| | |
| Um Informationen zu einem Verzeichnis aufzulisten, verwenden Sie den folgenden Befehl
| |
| ls -dZ ‚'Verzeichnisname‘'
| |
| | |
| # Geben Sie als root den folgenden Befehl ein, um den Typ von [[file1]] in [[samba_share_t]] zu ändern
| |
| * Die Option [[-a]] fügt einen neuen Eintrag hinzu, und die Option [[-t]] definiert einen Typ ([[samba_share_t]])
| |
| * Beachten Sie, dass die Ausführung dieses Befehls den Typ nicht direkt ändert; [[file1]] ist weiterhin mit dem Typ [[etc_t]] gekennzeichnet
| |
| sudo semanage fcontext -a -t samba_share_t /etc/file1
| |
| | |
| sudo ls -Z /etc/file1
| |
| -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
| |
| | |
| semanage fcontext -C -l
| |
|
| |
| /etc/file1 unconfined_u:object_r:samba_share_t:s0
| |
| | |
| # Verwenden Sie als root das Dienstprogramm [[restorecon]], um den Typ zu ändern
| |
| * Da [[semanage]] einen Eintrag für [[/etc/file1]] in [[file_contexts.local]] hinzugefügt hat, ändert [[restorecon]] den Typ in [[samba_share_t]]
| |
| sudo restorecon -v /etc/file1
| |
| restorecon reset /etc/file1 context unconfined_u:object_r:etc_t:s0->system_u:object_r:samba_share_t:s0
| |
| | |
| ; Ändern der Typen eines Verzeichnisses und seines Inhalts
| |
| Das folgende Beispiel zeigt, wie ein neues Verzeichnis erstellt und der Dateityp des Verzeichnisses sowie dessen Inhalt auf einen vom Apache-HTTP-Server verwendeten Typ geändert wird
| |
| * Die Konfiguration in diesem Beispiel wird verwendet, wenn Sie möchten, dass der Apache-HTTP-Server anstelle von [[/var/www/html/] einen anderen Dokumentenstamm verwendet ]
| |
| # Erstellen Sie als Root-Benutzer ein neues Verzeichnis [[web/]] und anschließend 3 leere Dateien ([[file1]], [[file2]] und [[file3]]) in diesem Verzeichnis
| |
| * Das Verzeichnis [[web/ ]] und die darin enthaltenen Dateien sind mit dem Typ [[default_t]] gekennzeichnet
| |
| sudo mkdir /web
| |
| sudo touch /web/file{1,2,3}
| |
| sudo ls -dZ /web
| |
| drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web
| |
| sudo ls -lZ /web
| |
| -rw-r--r-- root root unconfined_ u:object_r:default_t:s0 file1
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file2
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file3
| |
| | |
| # Geben Sie als root den folgenden Befehl ein, um den Typ des [[web/]]-Verzeichnisses und der darin enthaltenen Dateien in [[httpd_sys_content_t]] zu ändern
| |
| * Die Option [[-a]] fügt einen neuen Eintrag hinzu, und die Option [[-t]] definiert einen Typ ([[httpd_sys_content_t]])
| |
| * Der reguläre Ausdruck [[„/web(/.*)?“] ] bewirkt, dass [[semanage]] die Änderungen auf [[web/]] sowie die darin enthaltenen Dateien anwendet
| |
| * Beachten Sie, dass die Ausführung dieses Befehls den Typ nicht direkt ändert; [[web/]] und die darin enthaltenen Dateien sind weiterhin mit dem Typ [[default_t]] gekennzeichnet
| |
| sudo semanage fcontext -a -t httpd_sys_content_t „/web(/.*)?“
| |
| ls -dZ /web
| |
|
| |
| drwxr-xr-x root root unconfined_u:object_r:default_t:s0 /web
| |
| ls -lZ /web
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file1
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file2
| |
|
| |
| -rw-r--r-- root root unconfined_u:object_r:default_t:s0 file3
| |
| | |
| Der Befehl [[semanage fcontext -a -t httpd_sys_content_t „/web(/.*)?“]] fügt den folgenden Eintrag zu [[/etc/selinux/targeted/contexts/files/file_contexts.local]] hinzu
| |
| /web(/.*)? system_u:object_r:httpd_sys_content_t:s0
| |
| | |
| # Verwenden Sie als root das Dienstprogramm [[restorecon]], um den Typ von [[web/]] sowie aller darin enthaltenen Dateien
| |
| * Der Parameter [[-R]] steht für rekursiv, was bedeutet, dass alle Dateien und Verzeichnisse unter [[web/]] mit dem Typ [[httpd_sys_content_t]] gekennzeichnet werden
| |
| * Da [[semanage]] einen Eintrag für [[/web(/.*)?]] in [[file.contexts.local]] hinzugefügt hat, ändert [[restorecon]] die Typen in [
| |
|
| |
| [httpd_sys_content_t]]
| |
| sudo restorecon -R -v /web
| |
| restorecon reset /web context unconfined_u:object_r:default_t:s0->system_u:object_r: httpd_sys_content_t:s0
| |
| restorecon reset /web/file2 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
| |
| restorecon reset /web/file3 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
| |
|
| |
| restorecon reset /web/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
| |
| | |
| Beachten Sie, dass neu erstellte Dateien und Verzeichnisse standardmäßig den SELinux-Typ ihrer übergeordneten Verzeichnisse erben
| |
| | |
| ; Einen hinzugefügten Kontext löschen
| |
| Das folgende Beispiel zeigt das Hinzufügen und Entfernen eines SELinux-Kontexts
| |
| * Wenn der Kontext Teil eines regulären Ausdrucks ist, zum Beispiel [[/web(/.*)?]], setzen Sie den regulären Ausdruck in Anführungszeichen
| |
| sudo semanage fcontext -d „/web(/.*)?“
| |
| | |
| # Um den Kontext zu entfernen, geben Sie als Root den folgenden Befehl ein, wobei ‚'Dateiname‘'|‚'Verzeichnisname‘' der erste Teil in [[file_contexts.local]] ist
| |
| sudo semanage fcontext -d ‚'Dateiname‘'|‚'Verzeichnisname‘'
| |
| | |
| Das Folgende ist ein Beispiel für einen Kontext in [[file_contexts. local]]
| |
| /test system_u:object_r:httpd_sys_content_t:s0
| |
| | |
| wobei der erste Teil [[test]] ist
| |
| * Um zu verhindern, dass das Verzeichnis [[test/]] nach dem Ausführen von [[restorecon]] oder nach einer Neulabelung des Dateisystems mit dem [[httpd_sys_content_t]]-Label versehen wird, geben Sie als Root den folgenden Befehl ein, um den Kontext aus [[file_contexts.local]] zu löschen
| |
| sudo semanage fcontext -d /test
| |
| | |
| # Verwenden Sie als root das Dienstprogramm [[restorecon]], um den Standard-SELinux-Kontext wiederherzustellen
| |
| | |
| Weitere Informationen zu [[semanage]] finden Sie in den Handbuchseiten semanage(8) und semanage-fcontext(8)
| |
| | |
| ; Wichtig
| |
| : Wenn Sie den SELinux-Kontext mit [[semanage fcontext -a]] ändern, verwenden Sie den vollständigen Pfad zur Datei oder zum Verzeichnis, um zu vermeiden, dass Dateien nach einer Neukennzeichnung des Dateisystems oder nach dem Ausführen des Befehls [
| |
|
| |
| [restorecon]]-Befehls
| |
| | |
| ==== Wie der Dateikontext bestimmt wird ====
| |
| Die Bestimmung des Dateikontexts basiert auf Dateikontextdefinitionen, die in der Systemsicherheitsrichtlinie (den [[.fc]]-Dateien) festgelegt sind
| |
| * Basierend auf der Systemrichtlinie generiert [[semanage]] die Dateien [[file_contexts.homedirs]] und [ [file_contexts]]-Dateien
| |
| | |
| Systemadministratoren können Dateikontextdefinitionen mit dem Befehl [[semanage fcontext]] anpassen
| |
| * Solche Anpassungen werden in der Datei [[file_contexts.local]] gespeichert
| |
| | |
| Wenn ein Kennzeichnungsprogramm wie [[matchpathcon]] oder [[restorecon]] die richtige Kennzeichnung für einen bestimmten Pfad ermittelt, sucht es zunächst nach lokalen Änderungen ([[file_contexts.local]])
| |
| * Findet das Dienstprogramm kein passendes Muster, durchsucht es die Datei [[file_contexts.homedirs]] und schließlich die Datei [[file_contexts]]
| |
| * Sobald jedoch eine Übereinstimmung für einen bestimmten Dateipfad gefunden wird, endet die Suche, sucht das Dienstprogramm nicht nach weiteren Dateikontext-Definitionen
| |
| * Das bedeutet, dass Dateikontexte, die sich auf das Home-Verzeichnis beziehen, eine höhere Priorität haben als die übrigen, und lokale Anpassungen überschreiben die Systemrichtlinie
| |
| | |
| Dateikontext-Definitionen, die durch die [[Systemrichtlinie]] festgelegt sind (Inhalt der Dateien [[file_contexts.homedirs]] und [[file_contexts]]), werden vor der Auswertung nach der Länge des Stamms (Präfix des Pfads vor etwaigen Platzhaltern) sortiert
| |
| * Das bedeutet, dass der spezifischste Pfad ausgewählt wird
| |
| * Mit [[semanage fcontext]] festgelegte Dateikontextdefinitionen werden jedoch in umgekehrter Reihenfolge zu ihrer Definition ausgewertet
| |
| der letzte Eintrag wird unabhängig von der Stammlänge zuerst ausgewertet
| |
| | |
| Weitere Informationen zu
| |
| * der Änderung des Dateikontexts mit [[chcon]] finden Sie im Abschnitt „Temporäre Änderungen
| |
| chcon“
| |
| * das Ändern und Hinzufügen einer Dateikontextdefinition mit [[semanage fcontext]] finden Sie im Abschnitt „ Dauerhafte Änderungen
| |
| semanage fcontext“
| |
| * das Ändern und Hinzufügen einer Dateikontextdefinition durch eine Systemrichtlinienoperation, siehe Abschnitt „[[Pflege von SELinux-Labels]]“ oder Abschnitt „[[Priorisierung und Deaktivierung von SELinux-Richtlinienmodulen]]“
| |
| | |
| === Die Typen file_t und default_t ===
| |
| Bei Verwendung eines Dateisystems, das erweiterte Attribute (EA) ist der Typ [[file_t]] der Standardtyp einer Datei, der noch kein EA-Wert zugewiesen wurde
| |
| * Dieser Typ wird nur für diesen Zweck verwendet und existiert auf korrekt gelabelten Dateisystemen nicht, da alle Dateien auf einem System, auf dem SELinux läuft, einen korrekten SELinux-Kontext haben sollten und der Typ [[file_t]] niemals in der Dateikontext-Konfiguration verwendet wird[4]
| |
| | |
| Der Typ [[default_t]] wird für Dateien verwendet, die keinem Muster in der file-context-Konfiguration entsprechen, damit solche Dateien von Dateien unterschieden werden können, die keinen Kontext auf der Festplatte haben, und im Allgemeinen für eingeschränkte Domänen unzugänglich bleiben
| |
| * Wenn Sie beispielsweise ein neues Verzeichnis der obersten Ebene erstellen, wie z. B. [[mydirectory/]], kann dieses Verzeichnis mit dem Typ default_t gekennzeichnet werden
| |
| * Wenn Dienste Zugriff auf dieses Verzeichnis benötigen, müssen Sie die Dateikontext-Konfiguration für diesen Speicherort aktualisieren
| |
| * Siehe Abschnitt „Persistente Änderungen
| |
| semanage fcontext“ für Details zum Hinzufügen eines Kontexts zur Dateikontext-Konfiguration
| |
| | |
| === Einbinden von Dateisystemen ===
| |
| Standardmäßig wird beim Einbinden eines Dateisystems, das erweiterte Attribute unterstützt, der Sicherheitskontext für jede Datei aus dem ‚'security.selinux‘'
| |
|
| |
| erweiterten Attribut der Datei
| |
| * Dateien in Dateisystemen, die keine erweiterten Attribute unterstützen, wird ein einziger Standard-Sicherheitskontext aus der Richtlinienkonfiguration zugewiesen, basierend auf dem Dateisystemtyp
| |
| | |
| Verwenden Sie den Befehl [[mount -o context]], um vorhandene erweiterte Attribute zu überschreiben oder einen anderen Standardkontext für Dateisysteme festzulegen, die keine erweiterten Attribute unterstützen
| |
| * Dies ist nützlich, wenn Sie nicht darauf vertrauen, dass ein Dateisystem die richtigen Attribute bereitstellt, beispielsweise bei Wechselmedien, die in mehreren Systemen verwendet werden
| |
| * Der Befehl [[mount -o context]] kann auch verwendet werden, um die Kennzeichnung für Dateisysteme zu unterstützen, die keine erweiterten Attribute unterstützen, wie z. B. File Allocation Table (FAT) oder NFS-Volumes
| |
| * Der mit der Option [[context]] angegebene Kontext wird nicht auf die Festplatte geschrieben
| |
| die ursprünglichen Kontexte bleiben erhalten und sind beim Einbinden ohne [[context]] sichtbar, sofern das Dateisystem ursprünglich über erweiterte Attribute verfügte
| |
| | |
| Weitere Informationen zur Dateisystem-Kennzeichnung finden Sie in James Morris' Artikel „Filesystem Labeling in SELinux“
| |
| http://www.linuxjournal.com/article/7426
| |
| | |
| ==== Kontext-Mounts ====
| |
| Um ein Dateisystem mit dem angegebenen Kontext zu mounten – wobei vorhandene Kontexte überschrieben werden, falls vorhanden – oder um einen anderen Standardkontext für ein Dateisystem festzulegen, das keine erweiterten Attribute unterstützt, verwenden Sie als Root-Benutzer den [[mount -o context=‚'SELinux_user:role:type:level‘']] beim Einhängen des gewünschten Dateisystems
| |
| * Kontextänderungen werden nicht auf die Festplatte geschrieben
| |
| * Standardmäßig werden NFS-Einhängungen auf der Client-Seite mit einem Standardkontext gekennzeichnet, der durch die Richtlinie für NFS-Volumes definiert ist
| |
| * In gängigen Richtlinien verwendet dieser Standardkontext den Typ [[nfs_t]]
| |
| * Ohne zusätzliche Mount-Optionen kann dies die Freigabe von NFS-Volumes über andere Dienste, wie den Apache-HTTP-Server, verhindern
| |
| * Das folgende Beispiel mountet ein NFS-Volume so, dass es über den Apache-HTTP-Server freigegeben werden kann
| |
| sudo mount server:/export /local/mount/point -o \ context="system_u:object_r:httpd_sys_content_t:s0"
| |
| | |
| Neu erstellte Dateien und Verzeichnisse auf diesem Dateisystem scheinen den mit [[-o context]] angegebenen SELinux-Kontext zu haben
| |
| * Da diese Änderungen jedoch nicht auf die Festplatte geschrieben werden, bleibt der mit dieser Option angegebene Kontext zwischen den Mountvorgängen nicht erhalten
| |
| * Daher muss diese Option bei jedem Mountvorgang mit demselben Kontext verwendet werden, um den erforderlichen Kontext beizubehalten
| |
| * Informationen dazu, wie man Kontext-Mounts dauerhaft macht, finden Sie im Abschnitt „Kontext-Mounts dauerhaft machen“
| |
| | |
| Die Typen-Durchsetzung ist die wichtigste Berechtigungssteuerung, die in der SELinux-Targeted-Policy verwendet wird
| |
| * In den meisten Fällen können SELinux-Benutzer und -Rollen ignoriert werden. Verwenden Sie daher beim Überschreiben des SELinux-Kontexts mit [[-o context]] den SELinux-Benutzer [[system_u]] und die Rolle [[object_r]] und konzentrieren Sie sich auf den Typ
| |
| * Wenn Sie nicht die MLS-Policy oder die Multi-Kategorie-Sicherheit verwenden, verwenden Sie die [[s0]]-Ebene
| |
| | |
| ; Hinweis
| |
| | |
| Wenn ein Dateisystem mit einer [[context]]-Option eingebunden wird, sind Kontextänderungen durch Benutzer und Prozesse untersagt
| |
| * Wenn Sie beispielsweise den Befehl [[chcon]] auf einem mit einer [[context]]-Option eingebundenen Dateisystem ausführen, führt dies zu einem Fehler [[Operation not supported]]
| |
| | |
| ==== Ändern des Standardkontexts ====
| |
| Wie in Abschnitt 4.8, „Die Typen file_t und default_t“ , wird auf Dateisystemen, die erweiterte Attribute unterstützen, beim Zugriff auf eine Datei, der auf der Festplatte ein SELinux-Kontext fehlt, so behandelt, als hätte sie einen Standardkontext, wie er durch die SELinux-Richtlinie definiert ist
| |
| * In gängigen Richtlinien verwendet dieser Standardkontext den Typ [[file_t]]
| |
| * Wenn ein anderer Standardkontext verwendet werden soll, mounten Sie das Dateisystem mit der Option [[defcontext]]
| |
| | |
| Das folgende Beispiel mountet ein neu erstelltes Dateisystem auf [[/
| |
| dev/sda2]] in das neu erstellte Verzeichnis [[test/]] ein
| |
| * Dabei wird davon ausgegangen, dass es in [[/etc/selinux/targeted/contexts/files/]] keine Regeln gibt, die einen Kontext für das Verzeichnis [[test/]] definieren
| |
| sudo mount /dev/sda2 /test/ -o defcontext="system_u:object_r:samba_share_t:s0"
| |
| | |
| In diesem Beispiel
| |
| * definiert die Option [[defcontext]], dass [[system_u:object_r:samba_share_t:s0]] „der Standard-Sicherheitskontext für nicht gekennzeichnete Dateien“ ist[5]
| |
| * wird das Stammverzeichnis ([[test/]]) des Dateisystems nach dem Einbinden so behandelt, als wäre es mit dem durch [[defcontext]] angegebenen Kontext gekennzeichnet (diese Kennzeichnung wird nicht auf der Festplatte gespeichert)
| |
| * Dies wirkt sich auf die Kennzeichnung von Dateien aus, die unter [[test/]] erstellt werden
| |
| neue Dateien erben den Typ [[samba_share_t]], und diese Kennzeichnungen werden auf der Festplatte gespeichert
| |
| * Dateien, die unter [[test/]] erstellt wurden, während das Dateisystem mit der Option [[defcontext]] eingebunden war, behalten ihre Kennzeichnungen
| |
| | |
| ==== Einbinden eines NFS-Volumes ====
| |
| Standardmäßig werden NFS-Einbindungen auf der Client-Seite mit einem Standardkontext gekennzeichnet, der durch die Richtlinie für NFS-Volumes definiert ist
| |
| * In gängigen Richtlinien verwendet dieser Standardkontext den Typ [[nfs_t]]
| |
| * Je nach Richtlinienkonfiguration können Dienste wie der Apache-HTTP-Server und MariaDB möglicherweise keine Dateien lesen, die mit dem Typ [[nfs_t]] gekennzeichnet sind
| |
| * Dies kann verhindern, dass Dateisysteme, die mit diesem Typ gekennzeichnet sind, eingebunden und anschließend von anderen Diensten gelesen oder exportiert werden
| |
| | |
| Wenn Sie ein NFS-Volume mounten und dieses Dateisystem mit einem anderen Dienst lesen oder exportieren möchten, verwenden Sie beim Mounten die Option [[context]], um den Typ [[nfs_t]] zu überschreiben
| |
| * Verwenden Sie die folgende context-Option, um NFS-Volumes so einzuhängen, dass sie über den Apache-HTTP-Server freigegeben werden können
| |
| sudo mount server:/export /local/mount/point -o context="system_u:object_r:httpd_sys_content_t:s0"
| |
| | |
| Da diese Änderungen nicht auf die Festplatte geschrieben werden, bleibt der mit dieser Option angegebene Kontext zwischen den Einhängevorgängen nicht erhalten
| |
| * Daher muss diese Option bei jedem Einbinden mit demselben Kontext verwendet werden, um den erforderlichen Kontext beizubehalten
| |
| * Informationen dazu, wie Kontext-Mounts dauerhaft gemacht werden können, finden Sie im Abschnitt „Kontext-Mounts dauerhaft machen“
| |
| | |
| Als Alternative zum Einbinden von Dateisystemen mit [[context]]-Optionen können Boolesche Werte aktiviert werden, um Diensten den Zugriff auf Dateisysteme zu ermöglichen, die mit dem Typ [ [nfs_t]] gekennzeichnet sind
| |
| * Siehe Teil II, „Verwaltung eingeschränkter Dienste“ für Anweisungen zur Konfiguration von Booleans, um Diensten den Zugriff auf den Typ [[nfs_t]] zu ermöglichen
| |
| | |
| ==== Mehrere NFS-Mounts ====
| |
| Wenn mehrere Mounts aus demselben NFS-Export durchgeführt werden und versucht wird, den SELinux-Kontext jedes Mounts durch einen anderen Kontext zu überschreiben, führen nachfolgende Mount-Befehle zu Fehlern
| |
| * Im folgenden Beispiel verfügt der NFS-Server über einen einzigen Export, [[export/]], der zwei Unterverzeichnisse enthält: [ [web/]] und [[database/]]
| |
| * Die folgenden Befehle versuchen zwei Mounts von einem einzigen NFS-Export und versuchen, den Kontext für jeden einzelnen zu überschreiben
| |
| sudo mount server:/export/web /local/web -o context="system_u:object_r:httpd_sys_content_t:s0"
| |
| sudo mount server:/export/database /local/database -o context="system_u:object_r:mysqld_db_t:s0"
| |
| | |
| Der zweite Mount-Befehl schlägt fehl, und Folgendes wird in [[/var/log/messages]] protokolliert
| |
| kernel
| |
| SELinux
| |
| mount invalid
| |
| * Gleicher Superblock, unterschiedliche Sicherheitseinstellungen für (dev 0:15, Typ nfs)
| |
| | |
| Um mehrere Mounts aus einem einzigen NFS-Export durchzuführen, wobei jeder Mount einen anderen Kontext hat, verwenden Sie die [[-o nosharecache,context]]-Optionen
| |
| * Das folgende Beispiel mountet mehrere Mounts aus einem einzigen NFS-Export, wobei jeder Mount einen anderen Kontext hat (wodurch ein einzelner Dienst auf jeden einzelnen zugreifen kann)
| |
| sudo mount server:/export/web /local/web -o nosharecache,context=„system_u:object_r:httpd_sys_content_t:s0“
| |
| sudo mount server:/export/database /local/database -o \ nosharecache,context=„system_u:object_r:mysqld_db_t:s0“
| |
| | |
| In diesem Beispiel wird [[server:/export/web]] lokal im Verzeichnis [[/local/web/]] eingebunden, wobei alle Dateien mit dem Typ [[httpd_sys_content_t]] gekennzeichnet sind, was dem Apache-HTTP-Server Zugriff gewährt. [[server:/export/database]] wird lokal in [[/local/database/]] eingebunden, wobei alle Dateien mit dem Typ [ [mysqld_db_t]] gekennzeichnet, was MariaDB den Zugriff ermöglicht
| |
| * Diese Typänderungen werden nicht auf die Festplatte geschrieben
| |
| | |
| ; Wichtig
| |
| | |
| Die Option [[nosharecache]] ermöglicht es Ihnen, dasselbe Unterverzeichnis eines Exports mehrfach mit unterschiedlichen Kontexten einzuhängen, beispielsweise [[/export/web/]] mehrfach
| |
| * Hängen Sie dasselbe Unterverzeichnis eines Exports nicht mehrfach mit unterschiedlichen Kontexten ein, da dies zu einer überlappenden Einbindung führt, bei der Dateien unter zwei verschiedenen Kontexten zugänglich sind
| |
| | |
| ==== Kontext-Einbindungen dauerhaft machen ====
| |
| Um Kontext-Mounts über erneutes Mounten und Neustarts hinweg persistent zu machen, fügen Sie Einträge für die Dateisysteme in die Datei [[/etc/fstab]] oder eine Automounter-Zuordnung ein und verwenden Sie den erforderlichen Kontext als Mount-Option
| |
| | |
| Das folgende Beispiel fügt einen Eintrag in [[/etc/fstab]] für eine NFS-Kontext-Einbindung hinzu
| |
| server:/export /local/mount/ nfs context="system_u:object_r:httpd_sys_content_t:s0" 0 0
| |
| | |
| === SELinux-Labels beibehalten ===
| |
| [[SELinux/DOC/04 Arbeiten mit SELinux/SELinux-Labels beibehalten]]
| |
| | |
| === Tools zur Informationsbeschaffung ===
| |
| [[SELinux/DOC/04 Arbeiten mit SELinux/Tools zur Informationsbeschaffung]]
| |
| | |
| === Priorisierung und Deaktivierung von SELinux-Richtlinienmodulen ===
| |
| [[SELinux/DOC/04 Arbeiten mit SELinux/Priorisierung und Deaktivierung von SELinux-Richtlinienmodulen]]
| |
| | |
| === Multi-Level Security (MLS) ===
| |
| [[SELinux/DOC/04 Arbeiten mit SELinux/Multi-Level Security (MLS)]]
| |
| | |
| === Dateinamenübergang ===
| |
| [[SELinux/DOC/04 Arbeiten mit SELinux/Dateinamenübergang]]
| |
| | |
| === Deaktivieren von ptrace() ===
| |
| [[SELinux/DOC/04 Arbeiten mit SELinux/Deaktivieren von ptrace()]]
| |
| | |
| === Schutz von Miniaturansichten ===
| |
| [[SELinux/DOC/04 Arbeiten mit SELinux/Schutz von Miniaturansichten]]
| |
| | |
| == Fußnoten ==
| |
| * [3] Um vorübergehend zum Standardverhalten zurückzukehren, führen Sie als Linux-Root-Benutzer den Befehl [[setsebool httpd_can_network_connect_db off]] aus
| |
| ** Für Änderungen, die über Neustarts hinweg bestehen bleiben, führen Sie den Befehl [[setsebool -P httpd_can_network_connect_db off]]
| |
| * [4] Dateien im Verzeichnis [[/etc/selinux/targeted/contexts/files/]] definieren Kontexte für Dateien und Verzeichnisse
| |
| * Dateien in diesem Verzeichnis werden von den Dienstprogrammen [[restorecon]] und [[setfiles]] gelesen, um Dateien und Verzeichnisse in ihre Standardkontexte zurückzusetzen
| |
| * [5] Morris, James. „Filesystem Labeling in SELinux“ http://www.linuxjournal.com/article/7426
| |
| * [6] Weitere Informationen zu [[matchpathcon]] finden Sie auf der Handbuchseite matchpathcon(8)
| |
| | |
| [[Kategorie:SELinux/DOC]]
| |