Linux/SELinux/04 Arbeiten mit SELinux
Arbeiten mit SELinux
Beschreibung
Die folgenden Abschnitte bieten einen Überblick über
- die wichtigsten SELinux-Pakete in Red Hat Enterprise Linux
- die Installation und Aktualisierung von Paketen
- die verwendeten Protokolldateien
- die wichtigste SELinux-Konfigurationsdatei
- das Aktivieren und Deaktivieren von SELinux
- SELinux-Modi
- das Konfigurieren von Booleschen Werten
- das vorübergehende und dauerhafte Ändern von Datei- und Verzeichnis-Labels
- das Überschreiben von Dateisystem-Labels mit dem Befehl mount
- das Einbinden von NFS-Volumes
- sowie das Beibehalten von SELinux-Kontexten beim Kopieren und Archivieren von Dateien und Verzeichnissen
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
- 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
Unter Red Hat Enterprise Linux sind die Pakete dbus und audit standardmäßig installiert, sofern sie nicht aus der Standard-Paketauswahl entfernt wurden
- 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
- [[SELINUX=]]
Die Option [[SELINUX]] 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
- [[SELINUXTYPE=]]
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/DOC/04 Arbeiten mit SELinux/Dauerhafte Änderungen an SELinux-Zuständen und -Modi
Ändern der SELinux-Modi beim Systemstart
SELinux/DOC/04 Arbeiten mit SELinux/Ändern der SELinux-Modi beim Systemstart
Booleane
SELinux/DOC/04 Arbeiten mit SELinux/Booleane
SELinux-Kontexte – Dateien kennzeichnen
SELinux/DOC/04 Arbeiten mit SELinux/SELinux-Kontexte – Dateien kennzeichnen
Die Typen file_t und default_t
SELinux/DOC/04 Arbeiten mit SELinux/Die Typen file t und default t
Einbinden von Dateisystemen
SELinux/DOC/04 Arbeiten mit SELinux/Einbinden von Dateisystemen
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)