Linux/SELinux/05 SEPolicy: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
=== Die sepolicy-Suite === | === Die sepolicy-Suite === | ||
[[sepolicy]] bietet eine Reihe von Funktionen zur Abfrage der installierten SELinux-Richtlinie | |||
* Diese Funktionen sind entweder neu oder wurden zuvor von separaten Dienstprogrammen wie | * Diese Funktionen sind entweder neu oder wurden zuvor von separaten Dienstprogrammen wie ''sepolgen'' oder ''setrans'' bereitgestellt | ||
* Mit dieser Suite können Sie Übergangsberichte, Manpages oder sogar neue Richtlinienmodule erstellen, wodurch Benutzer einen einfacheren Zugang zur SELinux-Richtlinie erhalten und diese besser verstehen können | * Mit dieser Suite können Sie Übergangsberichte, Manpages oder sogar neue Richtlinienmodule erstellen, wodurch Benutzer einen einfacheren Zugang zur SELinux-Richtlinie erhalten und diese besser verstehen können | ||
Das Paket policycoreutils-devel stellt | Das Paket policycoreutils-devel stellt [[sepolicy]] bereit | ||
Geben Sie als Root-Benutzer den folgenden Befehl ein, um | Geben Sie als Root-Benutzer den folgenden Befehl ein, um [[sepolicy]] zu installieren | ||
yum install policycoreutils-devel | sudo yum install policycoreutils-devel | ||
; | ; Funktionen von sepolicy | ||
Die | Die ''sepolicy''-Suite bietet die folgenden Funktionen, die als Befehlszeilenparameter aufgerufen werden: | ||
{| class="wikitable options big" | {| class="wikitable options big" | ||
!Funktion | !Funktion | ||
| Zeile 40: | Zeile 40: | ||
|} | |} | ||
=== | === sepolicy-Python-Bindings === | ||
In früheren Linux-Versionen enthielt das setools-Paket die Dienstprogramme | In früheren Linux-Versionen enthielt das setools-Paket die Dienstprogramme ''sesearch'' und ''seinfo'' | ||
* Das Dienstprogramm | * Das Dienstprogramm ''sesearch'' dient zum Suchen von Regeln in einer SELinux-Richtlinie, während das Dienstprogramm ''seinfo'' es ermöglicht, verschiedene andere Komponenten der Richtlinie abzufragen | ||
In Linux wurden Python-Bindings für | In Linux wurden Python-Bindings für ''sesearch'' und ''seinfo'' hinzugefügt, sodass Sie die Funktionalität dieser Dienstprogramme über die ''sepolicy''-Suite nutzen können | ||
; Beispiel | |||
‚‘> python | |||
‚‘> python | |||
>>> import sepolicy | >>> import sepolicy | ||
>>> sepolicy.info(sepolicy.ATTRIBUTE) | >>> sepolicy.info(sepolicy.ATTRIBUTE) | ||
| Zeile 60: | Zeile 59: | ||
* Unter Linux wird der Befehl „sepolicy generate“ verwendet, um eine erste Vorlage für ein SELinux-Richtlinienmodul zu generieren | * Unter Linux wird der Befehl „sepolicy generate“ verwendet, um eine erste Vorlage für ein SELinux-Richtlinienmodul zu generieren | ||
Im Gegensatz zu | Im Gegensatz zu ''sepolgen'' ist es nicht erforderlich, ''sepolicy generate'' als Root-Benutzer auszuführen | ||
* Dieses Dienstprogramm erstellt außerdem eine RPM-Spec-Datei, mit der ein RPM-Paket erstellt werden kann, das die Policy-Paketdatei ( | * Dieses Dienstprogramm erstellt außerdem eine RPM-Spec-Datei, mit der ein RPM-Paket erstellt werden kann, das die Policy-Paketdatei (‚'''NAME'‚.pp'') und die Schnittstellendatei (‚'''NAME'‚.if'') am richtigen Ort installiert, die SELinux-Policy in den Kernel integriert und die Labeling-Einstellungen anpasst | ||
* Das Setup-Skript installiert anschließend die SELinux-Policy und richtet das Labeling ein | * Das Setup-Skript installiert anschließend die SELinux-Policy und richtet das Labeling ein | ||
* Darüber hinaus wird mit dem Befehl | * Darüber hinaus wird mit dem Befehl ''sepolicy manpage'' eine Handbuchseite basierend auf der installierten Richtlinie generiert. [7] Schließlich erstellt und kompiliert ''sepolicy generate'' die SELinux-Richtlinie und die Handbuchseite zu einem RPM-Paket, das zur Installation auf anderen Systemen bereit ist | ||
Wenn | Wenn ''sepolicy generate'' ausgeführt wird, werden die folgenden Dateien erzeugt: | ||
; | ; ‚'''NAME'‚.te'' – Typ-Enforcing-Datei | ||
: Diese Datei definiert alle Typen und Regeln für eine bestimmte Domäne | : Diese Datei definiert alle Typen und Regeln für eine bestimmte Domäne | ||
; | ; ‚'''NAME'‚.if'' – Schnittstellendatei | ||
: Diese Datei definiert den Standard-Dateikontext für das System | : Diese Datei definiert den Standard-Dateikontext für das System | ||
* Sie übernimmt die in der Datei | * Sie übernimmt die in der Datei ''NAME.te'' erstellten Dateitypen und ordnet den Typen Dateipfade zu | ||
* Dienstprogramme wie | * Dienstprogramme wie ''restorecon'' und ''rpm'' verwenden diese Pfade, um Labels zu schreiben | ||
; | ; ‚'''NAME'‚_selinux.spec'' – RPM-Spezifikationsdatei | ||
: Diese Datei ist eine RPM-Spezifikationsdatei, die die SELinux-Richtlinie installiert und die Labeling-Einstellungen vornimmt | : Diese Datei ist eine RPM-Spezifikationsdatei, die die SELinux-Richtlinie installiert und die Labeling-Einstellungen vornimmt | ||
* Diese Datei installiert außerdem die Schnittstellendatei und eine Man-Seite, die die Richtlinie beschreibt | * Diese Datei installiert außerdem die Schnittstellendatei und eine Man-Seite, die die Richtlinie beschreibt | ||
* Sie können den Befehl | * Sie können den Befehl ''sepolicy manpage -d ''NAME'‚'' verwenden, um die Man-Seite zu generieren | ||
; | ; ‚'''NAME'‚.sh'' – Hilfs-Shell-Skript | ||
: Dieses Skript hilft beim Kompilieren, Installieren und Korrigieren der Kennzeichnung auf dem System | : Dieses Skript hilft beim Kompilieren, Installieren und Korrigieren der Kennzeichnung auf dem System | ||
* Es generiert außerdem eine Man-Seite basierend auf der installierten Richtlinie, kompiliert und erstellt ein RPM-Paket, das für die Installation auf anderen Systemen geeignet ist | * Es generiert außerdem eine Man-Seite basierend auf der installierten Richtlinie, kompiliert und erstellt ein RPM-Paket, das für die Installation auf anderen Systemen geeignet ist | ||
Wenn es möglich ist, ein SELinux-Richtlinienmodul zu generieren, gibt | Wenn es möglich ist, ein SELinux-Richtlinienmodul zu generieren, gibt ''sepolicy generate'' alle generierten Pfade von der Quelldomäne zur Zieldomäne aus | ||
* Weitere Informationen zu | * Weitere Informationen zu ''sepolicy generate'' finden Sie auf der Man-Seite sepolicy-generate(8) | ||
=== Domänenübergänge verstehen: sepolicy transition === | === Domänenübergänge verstehen: sepolicy transition === | ||
Früher wurde das Dienstprogramm | Früher wurde das Dienstprogramm ''setrans'' verwendet, um zu prüfen, ob ein Übergang zwischen zwei Domänen- oder Prozesstypen möglich ist, und es gab alle Zwischentypen aus, die für den Übergang zwischen diesen Domänen oder Prozessen verwendet werden | ||
* Unter Linux ist | * Unter Linux ist ''setrans'' als Teil der ''sepolicy''-Suite verfügbar, und stattdessen wird nun der Befehl ''sepolicy transition'' verwendet | ||
Der Befehl | Der Befehl ''sepolicy transition'' fragt eine SELinux-Richtlinie ab und erstellt einen Prozessübergangsbericht | ||
* Der Befehl | * Der Befehl ''sepolicy transition'' benötigt zwei Befehlszeilenargumente – eine Quelldomäne (angegeben mit der Option ‚‘-s'‚) und eine Zieldomäne (angegeben mit der Option ''-t'') | ||
* Wenn nur die Quelldomäne angegeben wird, listet „sepolicy transition“ alle möglichen Domänen auf, zu denen die Quelldomäne wechseln kann | * Wenn nur die Quelldomäne angegeben wird, listet „sepolicy transition“ alle möglichen Domänen auf, zu denen die Quelldomäne wechseln kann | ||
* Die folgende Ausgabe enthält nicht alle Einträge | * Die folgende Ausgabe enthält nicht alle Einträge | ||
| Zeile 102: | Zeile 101: | ||
httpd_t @ httpd_unconfined_script_exec_t --> httpd_unconfined_script_t'' | httpd_t @ httpd_unconfined_script_exec_t --> httpd_unconfined_script_t'' | ||
Wenn die Zieldomäne angegeben ist, untersucht „sepolicy transition“ die SELinux-Richtlinie auf alle Übergangspfade von der Quelldomäne zur Zieldomäne und listet diese Pfade auf | Wenn die Zieldomäne angegeben ist, untersucht „sepolicy transition“ die SELinux-Richtlinie auf alle Übergangspfade von der Quelldomäne zur Zieldomäne und listet diese Pfade auf | ||
Die folgende Ausgabe ist unvollständig: | |||
sepolicy transition -s httpd_t -t system_mail_t | |||
httpd_t @ exim_exec_t --> system_mail_t | httpd_t @ exim_exec_t --> system_mail_t | ||
httpd_t @ courier_exec_t --> system_mail_t | httpd_t @ courier_exec_t --> system_mail_t | ||
| Zeile 123: | Zeile 122: | ||
Der Befehl „sepolicy manpage“ generiert Handbuchseiten auf Basis der SELinux-Richtlinie, die Prozessdomänen dokumentieren | Der Befehl „sepolicy manpage“ generiert Handbuchseiten auf Basis der SELinux-Richtlinie, die Prozessdomänen dokumentieren | ||
* Dadurch ist diese Dokumentation stets auf dem neuesten Stand | * Dadurch ist diese Dokumentation stets auf dem neuesten Stand | ||
* Jeder Name der automatisch generierten Handbuchseiten besteht aus dem Namen der Prozessdomäne und dem Suffix | * Jeder Name der automatisch generierten Handbuchseiten besteht aus dem Namen der Prozessdomäne und dem Suffix ''_selinux'', zum Beispiel ''httpd_selinux'' | ||
Die Handbuchseiten enthalten mehrere Abschnitte, die Informationen zu verschiedenen Teilen der SELinux-Richtlinie für eingeschränkte Domänen bereitstellen: | Die Handbuchseiten enthalten mehrere Abschnitte, die Informationen zu verschiedenen Teilen der SELinux-Richtlinie für eingeschränkte Domänen bereitstellen: | ||
* Der Abschnitt | * Der Abschnitt ''Entrypoints'' enthält alle ausführbaren Dateien, die während eines Domänenübergangs ausgeführt werden müssen | ||
* Der Abschnitt „Process Types“ listet alle Prozesstypen auf, die mit demselben Präfix wie die Zieldomäne beginnen | * Der Abschnitt „Process Types“ listet alle Prozesstypen auf, die mit demselben Präfix wie die Zieldomäne beginnen | ||
* Der Abschnitt „Booleans“ listet die mit der Domäne verbundenen Booleschen Werte auf | * Der Abschnitt „Booleans“ listet die mit der Domäne verbundenen Booleschen Werte auf | ||
Version vom 24. März 2026, 09:45 Uhr
Die sepolicy-Suite
sepolicy bietet eine Reihe von Funktionen zur Abfrage der installierten SELinux-Richtlinie
- Diese Funktionen sind entweder neu oder wurden zuvor von separaten Dienstprogrammen wie sepolgen oder setrans bereitgestellt
- Mit dieser Suite können Sie Übergangsberichte, Manpages oder sogar neue Richtlinienmodule erstellen, wodurch Benutzer einen einfacheren Zugang zur SELinux-Richtlinie erhalten und diese besser verstehen können
Das Paket policycoreutils-devel stellt sepolicy bereit
Geben Sie als Root-Benutzer den folgenden Befehl ein, um sepolicy zu installieren
sudo yum install policycoreutils-devel
- Funktionen von sepolicy
Die sepolicy-Suite bietet die folgenden Funktionen, die als Befehlszeilenparameter aufgerufen werden:
| Funktion | Beschreibung |
|---|---|
| booleans | Abfrage der SELinux-Richtlinie zur Anzeige der Beschreibung von Booleschen Werten |
| communicate | Abfrage der SELinux-Richtlinie, um zu prüfen, ob Domänen miteinander kommunizieren können |
| generate | Erstellung einer Vorlage für ein SELinux-Richtlinienmodul |
| gui | Grafische Benutzeroberfläche für die SELinux-Richtlinie |
| interface | Auflistung der SELinux-Richtlinien-Schnittstellen |
| manpage | SELinux-Manpages generieren |
| network | Netzwerkinformationen der SELinux-Richtlinie abfragen |
| transition | SELinux-Richtlinie abfragen und einen Prozessübergangsbericht generieren |
sepolicy-Python-Bindings
In früheren Linux-Versionen enthielt das setools-Paket die Dienstprogramme sesearch und seinfo
- Das Dienstprogramm sesearch dient zum Suchen von Regeln in einer SELinux-Richtlinie, während das Dienstprogramm seinfo es ermöglicht, verschiedene andere Komponenten der Richtlinie abzufragen
In Linux wurden Python-Bindings für sesearch und seinfo hinzugefügt, sodass Sie die Funktionalität dieser Dienstprogramme über die sepolicy-Suite nutzen können
- Beispiel
‚‘> python >>> import sepolicy >>> sepolicy.info(sepolicy.ATTRIBUTE) Gibt ein Wörterbuch mit allen Informationen zu SELinux-Attributen zurück >>>sepolicy.search([sepolicy.ALLOW]) Gibt ein Wörterbuch mit allen Zulassungsregeln in der Richtlinie zurück.‚‘
Generieren von SELinux-Richtlinienmodulen: sepolicy generate
In früheren Linux-Versionen wurden die Dienstprogramme „sepolgen“ oder „selinux-polgengui“ zum Generieren einer SELinux-Richtlinie verwendet
- Diese Tools wurden in die „sepolicy“-Suite integriert
- Unter Linux wird der Befehl „sepolicy generate“ verwendet, um eine erste Vorlage für ein SELinux-Richtlinienmodul zu generieren
Im Gegensatz zu sepolgen ist es nicht erforderlich, sepolicy generate als Root-Benutzer auszuführen
- Dieses Dienstprogramm erstellt außerdem eine RPM-Spec-Datei, mit der ein RPM-Paket erstellt werden kann, das die Policy-Paketdatei (‚NAME'‚.pp) und die Schnittstellendatei (‚NAME'‚.if) am richtigen Ort installiert, die SELinux-Policy in den Kernel integriert und die Labeling-Einstellungen anpasst
- Das Setup-Skript installiert anschließend die SELinux-Policy und richtet das Labeling ein
- Darüber hinaus wird mit dem Befehl sepolicy manpage eine Handbuchseite basierend auf der installierten Richtlinie generiert. [7] Schließlich erstellt und kompiliert sepolicy generate die SELinux-Richtlinie und die Handbuchseite zu einem RPM-Paket, das zur Installation auf anderen Systemen bereit ist
Wenn sepolicy generate ausgeführt wird, werden die folgenden Dateien erzeugt:
- ‚'NAME'‚.te – Typ-Enforcing-Datei
- Diese Datei definiert alle Typen und Regeln für eine bestimmte Domäne
- ‚'NAME'‚.if – Schnittstellendatei
- Diese Datei definiert den Standard-Dateikontext für das System
- Sie übernimmt die in der Datei NAME.te erstellten Dateitypen und ordnet den Typen Dateipfade zu
- Dienstprogramme wie restorecon und rpm verwenden diese Pfade, um Labels zu schreiben
- ‚'NAME'‚_selinux.spec – RPM-Spezifikationsdatei
- Diese Datei ist eine RPM-Spezifikationsdatei, die die SELinux-Richtlinie installiert und die Labeling-Einstellungen vornimmt
- Diese Datei installiert außerdem die Schnittstellendatei und eine Man-Seite, die die Richtlinie beschreibt
- Sie können den Befehl sepolicy manpage -d NAME'‚ verwenden, um die Man-Seite zu generieren
- ‚'NAME'‚.sh – Hilfs-Shell-Skript
- Dieses Skript hilft beim Kompilieren, Installieren und Korrigieren der Kennzeichnung auf dem System
- Es generiert außerdem eine Man-Seite basierend auf der installierten Richtlinie, kompiliert und erstellt ein RPM-Paket, das für die Installation auf anderen Systemen geeignet ist
Wenn es möglich ist, ein SELinux-Richtlinienmodul zu generieren, gibt sepolicy generate alle generierten Pfade von der Quelldomäne zur Zieldomäne aus
- Weitere Informationen zu sepolicy generate finden Sie auf der Man-Seite sepolicy-generate(8)
Domänenübergänge verstehen: sepolicy transition
Früher wurde das Dienstprogramm setrans verwendet, um zu prüfen, ob ein Übergang zwischen zwei Domänen- oder Prozesstypen möglich ist, und es gab alle Zwischentypen aus, die für den Übergang zwischen diesen Domänen oder Prozessen verwendet werden
- Unter Linux ist setrans als Teil der sepolicy-Suite verfügbar, und stattdessen wird nun der Befehl sepolicy transition verwendet
Der Befehl sepolicy transition fragt eine SELinux-Richtlinie ab und erstellt einen Prozessübergangsbericht
- Der Befehl sepolicy transition benötigt zwei Befehlszeilenargumente – eine Quelldomäne (angegeben mit der Option ‚‘-s'‚) und eine Zieldomäne (angegeben mit der Option -t)
- Wenn nur die Quelldomäne angegeben wird, listet „sepolicy transition“ alle möglichen Domänen auf, zu denen die Quelldomäne wechseln kann
- Die folgende Ausgabe enthält nicht alle Einträge
- Das Zeichen „@“ bedeutet „ausführen“:
‚‘~]$ sepolicy transition -s httpd_t httpd_t @ httpd_suexec_exec_t --> httpd_suexec_t
httpd_t @ mailman_cgi_exec_t --> mailman_cgi_t
httpd_t @ abrt_retrace_worker_exec_t --> abrt_retrace_worker_t httpd_t @ dirsrvadmin_unconfined_script_exec_t --> dirsrvadmin_unconfined_script_t
httpd_t @ httpd_unconfined_script_exec_t --> httpd_unconfined_script_t Wenn die Zieldomäne angegeben ist, untersucht „sepolicy transition“ die SELinux-Richtlinie auf alle Übergangspfade von der Quelldomäne zur Zieldomäne und listet diese Pfade auf
Die folgende Ausgabe ist unvollständig:
sepolicy transition -s httpd_t -t system_mail_t httpd_t @ exim_exec_t --> system_mail_t httpd_t @ courier_exec_t --> system_mail_t httpd_t @ sendmail_exec_t --> system_mail_t httpd_t ..
- httpd_suexec_t @ sendmail_exec_t --> system_mail_t
httpd_t ..
- httpd_suexec_t @ exim_exec_t --> system_mail_t
httpd_t ..
- httpd_suexec_t @ courier_exec_t --> system_mail_t
httpd_t ..
- httpd_suexec_t ..
- httpd_mojomojo_script_t @ sendmail_exec_t --> system_mail_t
Weitere Informationen zum „sepolicy-transition“ finden Sie in der sepolicy-transition(8)-Handbuchseite
Erstellen von Handbuchseiten: sepolicy manpage
Der Befehl „sepolicy manpage“ generiert Handbuchseiten auf Basis der SELinux-Richtlinie, die Prozessdomänen dokumentieren
- Dadurch ist diese Dokumentation stets auf dem neuesten Stand
- Jeder Name der automatisch generierten Handbuchseiten besteht aus dem Namen der Prozessdomäne und dem Suffix _selinux, zum Beispiel httpd_selinux
Die Handbuchseiten enthalten mehrere Abschnitte, die Informationen zu verschiedenen Teilen der SELinux-Richtlinie für eingeschränkte Domänen bereitstellen:
- Der Abschnitt Entrypoints enthält alle ausführbaren Dateien, die während eines Domänenübergangs ausgeführt werden müssen
- Der Abschnitt „Process Types“ listet alle Prozesstypen auf, die mit demselben Präfix wie die Zieldomäne beginnen
- Der Abschnitt „Booleans“ listet die mit der Domäne verbundenen Booleschen Werte auf
- Der Abschnitt „Port Types“ enthält die Porttypen, die mit demselben Präfix wie die Domäne übereinstimmen, und beschreibt die diesen Porttypen zugewiesenen Standardportnummern
- Der Abschnitt „Managed Files“ beschreibt die Typen, in die die Domäne schreiben darf, sowie die diesen Typen zugeordneten Standardpfade
- Der Abschnitt „File Contexts“ enthält alle mit der Domäne verbundenen Dateitypen und beschreibt, wie diese Dateitypen zusammen mit der Standard-Pfadkennzeichnung auf einem System verwendet werden
- Der Abschnitt „Sharing Files“ erläutert die Verwendung der Domänen-Freigabetypen, wie z. B. „public_content_t“
Weitere Informationen zu „sepolicy manpage“ finden Sie auf der sepolicy-manpage(8)-Handbuchseite
[7] Weitere Informationen zu „sepolicy manpage“ finden Sie in Abschnitt 5.4, „Erstellen von Handbuchseiten: „sepolicy manpage““