Linux/SELinux/Tools
Beschreibung
setenforce / getenforce seinfo chcon restorecon semanage (fcontext / login / boolean ... ) setsebool / getsebool
Werkzeuge
Neben den offiziellen SELinux-Werkzeugen existieren zahlreiche nützliche Werkzeuge, die das Arbeiten mit SELinux erleichtern
| Tool | Beschreibung |
|---|---|
| setroubleshoot | benachrichtigt über ein Task-Symbol über durchgesetzte Beschränkungen von Programmen und stellt auf Anfrage zusätzliche Informationen wie auch mögliche Lösungsvorschläge bereit, um das Problem zu beheben |
| SLIDE | ist eine IDE für die Entwicklung der Richtlinie, die in Form einer Eclipse-Erweiterung veröffentlicht wird |
| apol | ist für die Analyse von Richtlinien zuständig |
Aufruf
Optionen
| Unix | GNU | Parameter | Beschreibung |
|---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
| Wert | Beschreibung |
|---|---|
| 0 | Erfolg |
| >0 | Fehler |
Werkzeuge
Analyse
Analysewerkzeuge dienen in erster Linie dazu, die Kernel-Richtlinie (entweder die auf der Festplatte gespeicherte Richtliniendatei oder die im Arbeitsspeicher des Kernels befindliche Richtlinie über /sys/fs/selinux/policy) auf bestimmte Kriterien hin zu analysieren, beispielsweise den Informationsfluss. Diese Werkzeuge bilden die Grundlage, auf der wir Aussagen über die Sicherheitseigenschaften eines SELinux-Systems treffen können. Sie werden auf Entwicklungssystemen benötigt, die zur Analyse einer Zielrichtlinie verwendet werden, und sind auf Produktionssystemen selten installiert.
| Name des Tools | Beschreibung | Paket |
|---|---|---|
| apol | führt zahlreiche Analysen der Zielrichtlinie durch, darunter Domänenübergänge, Informationsfluss, Standardabfragen, Dateisystemanalyse und so weiter | setools-gui |
| sechecker | konfigurationsgesteuerte automatisierte Richtlinienanalyse | setools-console |
| sediff | führt eine semantische Differenzanalyse zwischen zwei Richtlinien durch | setools-console |
| sedta | führt eine Domänenübergangsanalyse für eine Richtlinie durch | setools-console-analyses |
| seinfo | abfragt die Komponenten einer SELinux-Richtlinie | setools-console |
| seinfoflow | Durchführung einer Informationsflussanalyse für eine Richtlinie | setools-console-analyses |
| sesearch | Durchsuchen einer Richtliniendatei nach verschiedenen Richtlinienregeln oder Komponenten wie Zulassungsregeln, Symbolen usw. | setools-console |
Erstellungszeit
Werkzeuge für die Erstellungszeit werden beim Erstellen einer Richtlinie aus dem Quellcode in Module oder eine monolithische Kernel-Richtlinie verwendet. Sie sind auf Systemen erforderlich, die Richtlinien aus dem Quellcode erstellen sollen, einschließlich Produktionssystemen, die Tools wie audit2allow verwenden, um zur Laufzeit neue Richtlinienregeln hinzuzufügen. Auf typischen Endsystemen, die nicht von Entwicklern genutzt werden, sind sie nicht erforderlich.
| Tool-Name | Beschreibung | Paket |
|---|---|---|
| checkmodule | Kompilieren eines binären Richtlinienmoduls aus einer Modul-Quelldatei | checkpolicy |
| checkpolicy | Kompiliert eine Kernel-Richtlinie aus einer Richtlinien-Quelldatei | checkpolicy |
| semodule_package | Erstellt ein binäres Richtlinienpaket aus einem binären Modul und optional null oder mehr der Dateien file contexts, seusers, user_extra und/oder netfilter_contexts | semodule-utils (Upstream) oder policycoreutils (Fedora) |
| semodule_unpackage | Extrahieren des binären Policy-Moduls und optional der Datei „file contexts“ aus einem binären Policy-Paket | semodule-utils (Upstream) oder policycoreutils (Fedora) |
| secilc | Kompilieren einer binären Kernel-Policy aus einem Common Intermediate Language (CIL)-Policy-Modul | secilc |
Entwicklung
Entwicklungswerkzeuge werden beim Schreiben oder Debuggen von SELinux-Richtlinien verwendet und werden in der Regel während der Entwicklung und des Testens auf Entwicklungs- oder Endsystemen installiert. Einige Werkzeuge richten sich eher an typische Endbenutzer, während andere eher für erfahrene Kernel- oder Richtlinienentwickler gedacht sind. Beispielsweise kann audit2allow von typischen Endbenutzern verwendet werden, um Richtlinien aus Audit-Meldungen zu erstellen, während sedispol im Allgemeinen nur von Kernel- oder Richtlinienentwicklern genutzt wird, um bestimmte Komponenten einer Kernel-Richtlinie zu untersuchen.
| Werkzeugname | Beschreibung | Paket |
|---|---|---|
| audit2allow | Erzeugt Zulassungsregeln aus SELinux-AVC-Audit-Meldungen | selinux-python (Upstream) oder policycoreutils-python-utils (Fedora) |
| audit2why | Diagnose der Ursache von SELinux-AVC-Audit-Meldungen mittels Richtlinienanalyse | selinux-python (Upstream) oder policycoreutils-python-utils (Fedora) |
| dismod | Abfrage verschiedener Teile eines kompilierten Richtlinienmoduls oder Richtlinienpakets | checkpolicy (als sedismod in Fedora) |
| dispol | Abfrage verschiedener Teile einer kompilierten Kernel-Richtlinie | checkpolicy (als sedispol in Fedora) |
| getconlist | Auflistung aller SELinux-Kontexte, die für den angegebenen Benutzer vom aktuellen oder angegebenen Kontext aus erreichbar sind | libselinux-utils (als selinuxconlist in Fedora) |
| getdefaultcon | Anzeige des Standard-SELinux-Kontexts für den angegebenen Benutzer vom angegebenen Kontext aus | libselinux-utils (als selinuxdefcon in Fedora) |
| getpolicyload | Zeigt die maximale vom Kernel zum Laden unterstützte Richtlinienversion an | libselinux-utils |
| matchpathcon | Abfrage der aktiven Datei „file_contexts“, um zu ermitteln, wie ein bestimmter Pfad gekennzeichnet werden soll | libselinux-utils |
| selabel_compare | vergleicht zwei Label-Konfigurationsdateien | libselinux-utils |
| selabel_digest | berechnet Digests für eine Label-Konfiguration | libselinux-utils |
| selabel_get_digests_all_partial_matches | vergleicht das Verzeichnis-Digest-xattr mit dem Digest aus der Label-Konfiguration | libselinux-utils |
| selabel_lookup | Nachschlagen des Labels für einen bestimmten Schlüssel in einer Label-Konfiguration | libselinux-utils |
| selabel_lookup_best_match | Nachschlagen des am besten passenden Kontexts für einen Pfad mit mehreren Verknüpfungen | libselinux-utils |
| selabel_partial_match | Feststellen, ob eine Teilübereinstimmung für einen Pfad möglich ist | libselinux-utils |
| selinuxexeccon | Anzeige des SELinux-Kontexts, der für eine ausführbare Datei aus dem aktuellen oder angegebenen Kontext verwendet würde | libselinux-utils |
| selinux-polgengui | GUI zur Erzeugung von Richtlinien | selinux-gui (Upstream) oder policycoreutils-gui (Fedora) |
| selinux_check_access | prüft, ob die angegebene Berechtigung zulässig ist | libselinux-utils |
| semodule_expand | erweitert ein Basis-Policy-Modul zu einer Kernel-Policy | semodule-utils (Upstream) oder policycoreutils (Fedora) |
| semodule_link | eine Liste von Richtlinienmodulen miteinander verknüpfen | semodule-utils (Upstream) oder policycoreutils (Fedora) |
| sepolgen | ein Richtlinienmodul generieren | selinux-python (Upstream) oder policycoreutils-devel (Fedora) |
| sepolgen-ifgen | Erzeugt die Schnittstellendatei, die audit2allow verwendet, um Schnittstellen bei der Generierung von Policy-Modulen im refpolicy-Stil mit Regeln abzugleichen | selinux-python (Upstream) oder policycoreutils-devel (Fedora) |
| sepolicy | Frontend zum Überprüfen oder Generieren von Policies | selinux-python (Upstream) oder policycoreutils-devel (Fedora) |
| validatetrans | Überprüft einen Kontextwechsel auf Übereinstimmung mit der Richtlinie | libselinux-utils |
Neulabelung
Neulabelungs-Tools werden verwendet, um Dateien anhand verschiedener Arten von Eingaben neu zu labeln. Einige Tools nehmen einfach einen Kontext entgegen, während andere die aktive Datei „file_contexts“ auf dem System abfragen. Einige sind in der Lage, die Paketdaten der verwendeten Distribution zu überprüfen, um eine Liste der neu zu labelnenden Dateien zu erhalten. Nicht in dieser Liste enthalten ist das Init-Skript oder die systemd-Unit-Datei, die auf einigen Systemen verwendet wird, um ein Dateisystem bei Bedarf automatisch beim Systemstart neu zu kennzeichnen.
| Tool-Name | Beschreibung | Paket |
|---|---|---|
| chcon | Ändert den Kontext oder einen Teil eines Kontexts einer Datei | coreutils |
| chcat | Ändert die Kategorien einer Datei oder die autorisierten Kategorien für einen Benutzer | selinux-python (Upstream) oder policycoreutils-python-utils (Fedora) |
| fixfiles | Korrigiert Dateikennzeichnungen basierend auf aktiven policy file_contexts-Dateien | policycoreutils |
| rlpkg | Kennzeichnet Dateien neu basierend auf Gentoo-Paketen (Gentoo-spezifisch) | gentoo |
| restorecon | Stellt Dateien in den durch die file_contexts-Dateien festgelegten Kontexten wieder her | policycoreutils |
| restorecond | Daemon, der auf neu erstellte Dateien achtet und diese zur Laufzeit kennzeichnet | restorecond (Upstream) oder policycoreutils-restorecond (Fedora) |
| setfiles | Dateien basierend auf der file_contexts-Konfiguration neu kennzeichnen oder die Gültigkeit von file_contexts anhand der Binärrichtlinie überprüfen | policycoreutils |
Laufzeit
Laufzeit-Tools werden zur Laufzeit auf Endsystemen verwendet, um das Laufverhalten von SELinux zu ändern oder anzuzeigen. Einige sind möglicherweise nicht auf Endsystemen installiert, wie z. B. setroubleshootd (nur erforderlich, wenn Endbenutzer Benachrichtigungen über und Hilfe bei Richtlinienverweigerungen benötigen), system-config-selinux (nur erforderlich, wenn eine GUI zur Verwaltung von SELinux benötigt wird) und mctransd (nur erforderlich auf Systemen, die MCS/MLS-Konfigurationen zur Übersetzung von Labels in lesbare Form benötigen). Diese drei Werkzeuge sollten auf Systemen, die sie nicht benötigen, weggelassen werden.
| Tool-Name | Beschreibung | Paket |
|---|---|---|
| avcstat | liefert Statistiken zum Zugriffsvektor-Cache im Kernel, wie z. B. Anzahl der Suchvorgänge, Treffer und Fehltreffer | libselinux-utils |
| genhomedircon | Erzeugt Dateikontexte für Benutzer-Home-Verzeichnisse basierend auf Vorlagen-Dateikontexten (HOMEDIR, HOMEROOT usw.) | policycoreutils |
| getenforce | Ruft den Durchsetzungsstatus des Kernel-Zugriffsvektor-Caches ab | libselinux-utils |
| getsebool | Ruft den aktuellen Status eines SELinux-Booles im SELinux-Sicherheitsserver ab | libselinux-utils |
| load_policy | Lädt die aktive Kernel-Richtlinie | policycoreutils |
| mcstransd | Daemon, der Übersetzungen für Ebenen und Kategorien bereitstellt | mcstrans |
| newrole | Ändert Ihre Rolle, Ihren Typ oder Ihre Stufe; erfordert eine erneute Authentifizierung; geeignet für die Verwendung durch Benutzerdomänen | policycoreutils |
| runcon | Führt einen Befehl mit einem angegebenen SELinux-Kontext aus; führt keine erneute Authentifizierung durch; geeignet für die Verwendung in Skripten, um einen Dienst in einer anderen Domäne auszuführen | coreutils |
| secon | Zeigt den vollständigen Kontext oder dessen Komponenten für ein angegebenes Objekt (Datei, Prozess, Schlüssel) an | policycoreutils |
| sefcontext_compile | Kompiliert Dateikontxtkonfigurationen zu einer Binärversion für eine schnellere Suche | libselinux-utils |
| selinuxenabled | Prüft, ob SELinux derzeit aktiviert ist | libselinux-utils |
| semanage | Verwaltet verschiedene Aspekte von SELinux, darunter Port-, Schnittstellen- und Knoten-Labeling, persistente Dateikontexte und boolesche Einstellungen, autorisierte Rollen und Ebenen für SELinux-Benutzer, autorisierte SELinux-Benutzer und Ebenen für Seusers (Login- oder Linux-Benutzer), MLS-Übersetzungen und permissive Typen | selinux-python (Upstream) oder policycoreutils-python-utils (Fedora) |
| semodule | Einfügen, Löschen und Auflisten von SELinux-Richtlinienmodulen auf dem laufenden System | policycoreutils |
| sestatus | Abrufen verschiedener Informationen zum Laufzustand von SELinux, einschließlich Aktivierungsstatus, Enforcing/Permissive, Richtlinienname und Kontexte verschiedener wichtiger Prozesse und Dateien | policycoreutils |
| setenforce | den Enforcing-Status des Kernel-Access-Vector-Caches festlegen | libselinux-utils |
| setroubleshoot | ein Daemon, der auf Zugriffsverweigerungen achtet und Vorschläge zu deren Behebung anbietet (verfügt über mehrere Frontends, darunter eine Gnome-Tray-Schnittstelle) | setroubleshoot-server (Fedora) |
| setsebool | Setzt einen oder mehrere SELinux-Booleans | policycoreutils |
| system-config-selinux | GUI zur Verwaltung von SELinux | selinux-gui (Upstream) oder policycoreutils-gui (Fedora) |