Zum Inhalt springen

Linux/SELinux/05 SEPolicy

Aus Foxwiki

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““