Zum Inhalt springen

Linux/SELinux/05 SEPolicy

Aus Foxwiki

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