Linux/SELinux/05 SEPolicy: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
=== | === Die sepolicy-Suite === | ||
Das Dienstprogramm ‚'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 | |||
yum install policycoreutils-devel | yum install policycoreutils-devel | ||
; | ; Die Funktionen von sepolicy | ||
Die ‚'sepolicy‘'-Suite bietet die folgenden Funktionen, die als Befehlszeilenparameter aufgerufen werden: | |||
{| class="wikitable options big" | {| class="wikitable options big" | ||
! | !Funktion | ||
! | !Beschreibung | ||
|- | |- | ||
|booleans | |booleans | ||
| | |Abfrage der SELinux-Richtlinie zur Anzeige der Beschreibung von Booleschen Werten | ||
|- | |- | ||
|communicate | |communicate | ||
| | |Abfrage der SELinux-Richtlinie, um zu prüfen, ob Domänen miteinander kommunizieren können | ||
|- | |- | ||
|generate | |generate | ||
| | |Erstellung einer Vorlage für ein SELinux-Richtlinienmodul | ||
|- | |- | ||
|gui | |gui | ||
| | |Grafische Benutzeroberfläche für die SELinux-Richtlinie | ||
|- | |- | ||
|interface | |interface | ||
| | |Auflistung der SELinux-Richtlinien-Schnittstellen | ||
|- | |- | ||
|manpage | |manpage | ||
| | |SELinux-Manpages generieren | ||
|- | |- | ||
|network | |network | ||
| | |Netzwerkinformationen der SELinux-Richtlinie abfragen | ||
|- | |- | ||
|transition | |transition | ||
| | |SELinux-Richtlinie abfragen und einen Prozessübergangsbericht generieren | ||
|} | |} | ||
=== | === Die sepolicy-Python-Bindings === | ||
In | 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 Python | 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 | ||
Siehe das folgende Beispiel: | |||
‚‘> python | |||
>>> import sepolicy | >>> import sepolicy | ||
>>> sepolicy.info(sepolicy.ATTRIBUTE) | >>> sepolicy.info(sepolicy.ATTRIBUTE) | ||
Gibt ein Wörterbuch mit allen Informationen zu SELinux-Attributen zurück | |||
>>>sepolicy.search([sepolicy.ALLOW]) | >>>sepolicy.search([sepolicy.ALLOW]) | ||
Gibt ein Wörterbuch mit allen Zulassungsregeln in der Richtlinie zurück.‚‘ | |||
=== | === Generieren von SELinux-Richtlinienmodulen: sepolicy generate === | ||
In | 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 @ httpd_suexec_exec_t --> httpd_suexec_t | ||
httpd_t @ mailman_cgi_exec_t --> mailman_cgi_t | |||
httpd_t @ mailman_cgi_exec_t --> mailman_cgi_t | |||
httpd_t @ abrt_retrace_worker_exec_t --> abrt_retrace_worker_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 @ dirsrvadmin_unconfined_script_exec_t --> dirsrvadmin_unconfined_script_t | ||
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 | ||
* 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 114: | Zeile 118: | ||
* httpd_mojomojo_script_t @ sendmail_exec_t --> system_mail_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““ | ||
[[Kategorie:SELinux/DOC]] | [[Kategorie:SELinux/DOC]] | ||
Version vom 24. März 2026, 09:40 Uhr
Die sepolicy-Suite
Das Dienstprogramm ‚'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
yum install policycoreutils-devel
- Die 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 |
Die 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
Siehe das folgende 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““