Verwalten von SELinux in Oracle Linux
Beschreibt SELinux und bietet Anleitungen zur Administration von SELinux in Oracle Linux.
Die herkömmliche Linux-Sicherheit basiert auf einer DAC-Richtlinie (Discretionary Access Control). Im DAC-Modell der Systemsicherheit basiert der Zugriff auf Ressourcen wie Dateien und Prozesse ausschließlich auf Benutzeridentität und -eigentum. Wenn Malware oder beschädigte Software auf dem System vorhanden ist, kann sie alles mit Dateien und Ressourcen tun, zu denen der Benutzer, der den Prozess gestartet hat, berechtigt ist. Wenn der Benutzer root ist oder die Anwendung mit erhöhten Berechtigungen (setuid oder setgid bis root) ausgeführt wird, hat der Prozess die root-Zugriffskontrolle über das gesamte Dateisystem.
Um dieses Problem zu beheben, hat die National Security Agency Security Enhanced Linux (SELinux) entwickelt, um eine größere Kontrolle über Dateien, Prozesse, Benutzer und Anwendungen im Linux-Betriebssystem zu bieten. Die SELinux-Erweiterung für den Linux-Kernel implementiert die Mandatory Access Control (MAC)-Richtlinie, mit der Sie eine Sicherheitsrichtlinie definieren können, die granulare Berechtigungen für alle Benutzer, Programme, Prozesse, Dateien und Geräte konfiguriert. Die Zugriffskontrollentscheidungen des Kernels basieren darauf, wie sensibel die Ressourcen aus Sicherheitsgründen sind, und nicht nur auf der authentifizierten Benutzeridentität.
Wenn ein sicherheitsrelevanter Zugriff erfolgt, z. B. wenn ein Prozess eine Datei öffnet, fängt SELinux den Vorgang im Kernel ab. Wenn eine MAC-Richtlinienregel den Vorgang zulässt, wird der Vorgang fortgesetzt. Andernfalls blockiert SELinux den Vorgang und gibt einen Fehler an den Prozess zurück. Der Kernel prüft und erzwingt DAC-Richtlinienregeln vor MAC-Regeln, sodass er die SELinux-Richtlinienregeln nicht überprüft, wenn DAC-Regeln den Zugriff auf eine Ressource bereits verweigert haben.
SELinux-Packagebeschreibungen
SELinux enthält mehrere Packages, von denen jedes bestimmte Utilitys enthält, mit denen Sie SELinux auf Oracle Linux-Systemen verwalten können. Einige Pakete werden standardmäßig installiert, während andere Pakete optional sind.
In der folgenden Tabelle werden die SELinux-Packages aufgeführt, die standardmäßig mit Oracle Linux installiert sind.
|
Paket |
Beschreibung |
|---|---|
|
|
Stellt Utilitys wie |
|
|
Stellt die API bereit, mit der SELinux-Anwendungen Prozess- und Dateisicherheitskontexte abrufen und festlegen sowie Sicherheits-Policy-Entscheidungen abrufen. |
|
|
Enthält Python-Bindings zur Entwicklung von SELinux-Anwendungen. |
|
|
Stellt die SELinux-Referenzrichtlinie bereit, die als Grundlage für andere Policys verwendet wird, wie z. B. die SELinux-Zielrichtlinie. |
|
|
Stellt die SELinux-Zielrichtlinie bereit, in der Objekte außerhalb der Zieldomains unter DAC ausgeführt werden. |
|
|
Stellt die Utilitys |
In der folgenden Tabelle sind nützliche SELinux-Packages aufgeführt, die nicht standardmäßig installiert sind. Installieren Sie alle erforderlichen Packages mit dem Befehl dnf.
|
Paket |
Beschreibung |
|---|---|
|
|
Übersetzt SELinux-Ebenen wie |
|
|
Stellt Python-Utilitys für den Betrieb von SELinux bereit, wie |
|
|
Bietet das Sandbox-Utility zum Erstellen von SELinux-Sandboxes, um Befehle in einer eng begrenzten SELinux-Domain auszuführen. |
|
|
Bietet eine strenge Multi-Level Security-(MLS-)Policy als Alternative zur SELinux-Ziel-Policy. |
selinux-policy-doc
|
Stellt manuelle Seiten für viele SELinux-Richtlinienelemente bereit. |
|
|
Ermöglicht die Anzeige von |
|
|
Übersetzt Zugriffsverweigerungsmeldungen aus SELinux in detaillierte Beschreibungen, die Sie mit dem Befehl |
|
|
Bietet die Verteilung von Tools und Librarys von Tresys Technology SETools, mit denen Sie Policys analysieren und abfragen, Auditlogs überwachen und melden sowie Dateikontext verwalten können. |
Weitere Informationen finden Sie im SELinux Project Wiki für die Community-Dokumentation und auf den Handbuchseiten selinux(8) und anderen SELinux-Befehlen.
SELinux-Dienstprogramme
In der folgenden Tabelle werden die wichtigsten Serviceprogramme beschrieben, mit denen Sie SELinux verwalten können, sowie die darin enthaltenen Packages.
|
Versorgungsunternehmen |
Paket |
Beschreibung |
|---|---|---|
|
|
|
Generiert |
|
|
|
Analysiert Denial Logs, um zu erklären, warum der Zugriff blockiert wurde, und empfiehlt relevante SELinux-Anpassungen. |
|
|
|
Zeigt Statistiken für den SELinux Access Vector Cache (AVC) an. |
|
|
|
Ändert oder entfernt die Sicherheitskategorie für eine Datei oder einen Benutzer. |
|
|
|
Ändert den SELinux-Kontext der Dateien und Verzeichnisse. |
|
|
|
Behebt den Sicherheitskontext für Dateisysteme. |
|
|
|
Meldet den aktuellen SELinux-Modus. |
|
|
|
Meldet boolesche SELinux-Werte. |
|
|
|
Lädt eine neue SELinux-Richtlinie in den Kernel. |
|
|
|
Fragt die Systemrichtlinie ab und zeigt den Standardsicherheitskontext an, der mit dem Dateipfad verknüpft ist. |
|
|
|
Setzt den Sicherheitskontext für eine oder mehrere Dateien zurück. |
|
|
|
Daemon, der das Erstellen von Datei überwacht und den Standarddateikontext festlegt. |
|
|
|
Führt einen Befehl im angegebenen Kontext aus. |
|
|
|
Führt einen Befehl in einer SELinux-Sandbox aus. |
|
|
|
fungiert als Benutzeroberfläche für das |
|
|
|
Prüft die SELinux-Policys. |
|
|
|
Zeigt den SELinux-Kontext aus einer Datei, einem Programm oder der Benutzereingabe an. |
|
|
|
Vergleicht SELinux-Policys. |
|
|
|
Fragt SELinux-Policys ab. |
|
|
|
Zeigt alle SELinux-Kontexte an, die von einem Benutzer erreichbar sind. |
|
|
|
Zeigt den SELinux-Standardkontext für einen Benutzer an. |
|
|
|
Gibt an, ob SELinux aktiviert ist. |
|
|
|
Verwaltet SELinux-Policys. |
|
|
|
Verwaltet SELinux-Policy-Module. |
|
|
|
Zeigt die Abhängigkeiten zwischen SELinux-Policy-Packages an. |
|
|
|
Erweitert ein SELinux Policy-Modulpackage. |
|
|
|
Verknüpft SELinux Policy Module-Packages. |
|
|
|
Erstellt ein SELinux Policy-Modulpackage. |
|
|
|
Fragt SELinux-Policys ab. |
|
|
|
Zeigt den SELinux-Modus und die verwendete SELinux-Policy an. |
|
|
|
Ändert den SELinux-Modus. |
|
|
|
Legt boolesche SELinux-Werte fest. |
|
|
|
Legt den Sicherheitskontext für eine oder mehrere Dateien fest. |
SELinux-Modi festlegen
SELinux wird im enforcing- oder permissive-Modus ausgeführt:
-
enforcing -
Der Kernel verweigert den Zugriff auf Benutzer und Programme, wenn ihnen keine Berechtigungen durch SELinux-Sicherheitsrichtlinienregeln erteilt wurden. Alle Ablehnungsmeldungen werden als Ablehnungen von AVC (Access Vector Cache) protokolliert. Dies ist der Standardmodus.
-
permissive -
Der Kernel erzwingt keine Sicherheitsrichtlinienregeln, aber SELinux sendet Denial-Meldungen an eine Logdatei. Auf diese Weise können Sie sehen, welche Aktionen abgelehnt werden, wenn SELinux im
enforcing-Modus ausgeführt wird. In diesem Modus können Sie SELinux effektiv in einem System implementieren.
Um den aktuellen SELinux-Modus anzuzeigen, führen Sie den folgenden Befehl aus:
getenforce
Um den aktuellen Modus auf enforcing zu setzen, führen Sie den folgenden Befehl aus:
sudo setenforce enforcing
Um den aktuellen Modus auf permissive zu setzen, führen Sie den folgenden Befehl aus:
sudo setenforce permissive
Der Wert, den Sie für einen Modus mit setenforce festlegen, wird nach einem Neustart nicht beibehalten. Um den SELinux-Standardmodus zu konfigurieren, bearbeiten Sie die Konfigurationsdatei für SELinux, /etc/selinux/config, und setzen Sie den Wert der Direktive SELINUX auf enforcing oder permissive.
SELinux deaktivieren
Sie können SELinux vollständig deaktivieren, indem Sie den Kernel-Parameter selinux auf null setzen.
Oracle empfiehlt nicht, SELinux in Produktionssystemen zu deaktivieren. Verwenden Sie stattdessen den Modus permissive.
Policy-Dokumentation installieren
SELinux ist komplex, mit vielen Optionen für die Konfiguration des Zugriffs mithilfe von Policys. Ausführliche Informationen zu den verfügbaren Policys erhalten Sie auf den manuellen Seiten des Packages selinux-policy-doc. Diese Aufgabe zeigt Ihnen, wie Sie auf diese Informationen zugreifen.
Die Richtliniendokumentation enthält auch Informationen zu Benutzern und Rollen. Beispiel: Sie können mehr über den nicht privilegierten user_u-Benutzer von SELinux und die Rolle user_r auf der Manpage user_selinux(8) lesen. In der Policy-Dokumentation werden die Einschränkungen beschrieben, die für verschiedene Sicherheitskontexte gelten, und welche booleschen Optionen zur Anpassung der Policy für eine Umgebung verfügbar sind.