Warakorn - Fotolia

Problembehebung und Zugriffssteuerung: SELinux-Richtlinien im Griff behalten

SELinux ist eine mächtige Sicherheitsfunktion, kann aber auch Probleme verursachen. Diese Tipps helfen beim Troubleshooting mit SELinux-Richtlinien.

Dieser Artikel behandelt

Desktop-Management

ÄHNLICHE THEMEN

Security-Enhanced Linux (SELinux) ist ein erweiterter Zugriffs-Kontrollmechanismus, der in den meisten Linux-Distributionen zu finden ist. Mit Security-Enhanced Linux können Administratoren die Sicherheit über Richtlinien verwalten.

Diese Richtlinien dienen aber nicht nur der Sicherheit des Systems, sondern auch seiner Funktionalität. Security-Enhanced Linux ermöglicht zum Beispiel Anwendungen die Abfrage von Richtlinien, Administratoren die Steuerung der Prozessinitialisierung, -vererbung und Programmausführung, die Verwaltung von Dateien, von Dateisystemen, Verzeichnissen, Sockets, Open File Deskriptoren, Messaging-Schnittstellen oder Netzwerkschnittstellen. Überdies können Richtlinien während des Betriebs verändert werden, SELinux-Richtlinien können also ohne einen Neustart des Systems angepasst werden.

SELinux implementiert dafür die Mandatory Access Control (MAC) auf Basis der Discretionary Access Control (DAC), um Systeme vor Eindringlingen zu schützen. Die DAC kontrolliert den Zugriff auf Objekte (oder Ressourcen wie Dateien, Sockets, Pipes oder Netzwerkschnittstellen) auf Basis der spezifischen Identität der Subjekte, sowie auch die Prozesse und/oder Gruppen, zu denen die Subjekte gehören. MAC schränkt die Zugriffsmöglichkeit eines Subjekts auf andere Objekte ein oder führt eine bestimmte Aktion auf ein Objekt oder Ziel aus.

Die drei Modi von SELinux

SELinux kann in drei verschiedenen Modi betrieben werden:

  • Enforcing (erzwingend): SELinux verweigert den Zugriff auf Basis der Regeln, die durch die SELinux-Richtlinien definiert sind;
  • Permissive (zulassend): SELinux verweigert keine Zugriffe, protokolliert aber Zugriffe, die im erzwungenen Modus verweigert würden und
  • Disabled (deaktiviert): SELinux ist deaktiviert.

Der deaktivierte Modus von SELinux wird nicht empfohlen. Manchmal neigen Administratoren allerdings zu diesem Modus, weil ein SELinux-System kompliziert ist und bei mangelhafter Verwaltung durchaus der Funktionalität von Anwendungen im Wege stehen kann. Zum Beispiel könnte ein Administrator eine Anwendung als SaaS-Dienst (Software as a Service) ausrollen und dann feststellen, dass diese nicht ordnungsgemäß funktioniert. Nach einem kurzen Blick in die Protokolldateien stellt der Administrator dann SELinux als den Schuldigen fest und beendet es – damit aber auch ein mächtiges Sicherheitswerkzeug.

Problembehebung mit SELinux

Wenn eine frisch verteilte SaaS-Anwendung – oder welcher Dienst auch immer entwickelt wurde und verteilt werden soll – wegen SELinux scheitert, so bietet es sich am besten an, die Fehleranalyse und -behebung im Modus Permissive vorzunehmen.

SELinux bietet mit dem Protokollieren von Ereignissen eine gute Grundlage für die Fehlersuche. Hier sollte die Suche nach einer Problemursache also immer beginnen. Standardmäßig protokolliert SELinux alles in die Datei /var/log/audit/audit.log. Wird die Funktionalität einer Anwendung beeinträchtigt und der Programmcode wird als Ursache hierfür definitiv ausgeschlossen, so sollte der erste Schritt zu dieser Protokolldatei führen. Standardbenutzer müssen mit su zum Root wechseln, um das SELinux-Protokoll einsehen zu können (vgl. Abbildung 1).

SELinux-Protokolldatei auf einem CentOS7-Server.
Abbildung 1: SELinux-Protokolldatei auf einem CentOS7-Server.

Es kann ziemlich umständlich werden, das gesamte Prüfprotokoll zu durchkämmen, aber diese Mühe kann gleichzeitig einen tiefen Einblick in die genauen Abläufe vermitteln. Dabei sollte speziell nach Einträgen mit denied (abgelehnt) gesucht werden. Diese Einträge umfassen Informationen wie Prozess-ID, Benutzer-ID, angefragte Genehmigung, Kommandozeile des Prozesses und Name des Ziels. Anhand dieser Informationen kann nachvollzogen werden, warum SELinux und die fragliche Anwendung nicht miteinander auskommen.

Von Haus aus arbeitet SELinux im Modus Enforcing. Stellt SELinux ein Problem mit einer Anwendung oder einem Dienst fest, so wird dessen Ausführung unterbunden. Diese Standardvorgabe kann von Enforcing zu Permissive geändert werden, damit SELinux die Anwendung oder den Dienst starten lässt und lediglich Protokolleinträge für die Suche nach der Problemursache vornimmt. Wenn ein solcher Fall auftritt, kann der Wechsel folgendermaßen durchgeführt werden:

  1. Öffnen Sie ein Terminal-Fenster.
  2. Verwenden Sie den Befehl sudo nano /etc/sysconfig/selinux
  3. Ändern Sie SELINUX=enforcing zu SELINUX=permissive
  4. Speichern und schließen Sie die Datei.
  5. Starten Sie den Server neu.

Prüfen Sie die Änderung der Einstellung anschließend sicherheitshalber mit dem Befehl sestatus. Dieser Befehl informiert Sie über alles, was Sie über den gegenwärtigen Zustand von SELinux wissen müssen (vgl. Abbildung 2).

SELinux ist aktiviert und befindet sich im Modus Permissive.
Abbildung 2: SELinux ist aktiviert und befindet sich im Modus Permissive.

Mit dieser Einstellung funktioniert die Anwendung und SElinux protokolliert alle potenziellen Probleme.

Änderung der SELinux-Richtlinien

Nehmen wir an, eine nicht ordnungsgemäß funktionierende SaaS-Anwendung wird über einen Apache-Server ausgespielt. Nehmen wir weiter an, dass der Apache Server seine Webseiten und Dienste von einem alternativen Document Root aus anbietet, was dann vermutlich der Grund wäre, warum SELinux Probleme sieht. Wir nehmen weiter an, das alternative Document Root wäre /srv/www/.

Apache wurde komplett sauber aufgesetzt, aber die Webseiten werden trotzdem nicht vom Document Root geliefert. Daher quält man sich durch die Protokolldatei /var/log/audit/audit.log und macht SELinux als den Schuldigen aus. Das Problem liegt schlicht daran, dass SELinux von dem alternativen Document Root gar nichts weiß.

Zur Lösung des Problems muss nun zunächst herausgefunden werden, wie eine funktionierende Datei, beispielsweise /var/www/html/index.html, auf dem standardmäßigen Document Root ausgestaltet ist, um mit diesem Wissen das alternative Document Root entsprechend anpassen zu können. Um diese Information abzurufen, wird der folgende Befehl genutzt:

ls -lZ /var/www/html/index.html

Die Ausgabe dieses Befehls sieht vermutlich in etwa so aus wie in Abbildung 3.

Ausgabe des Befehls ls -lZ /var/www/html/index.html.
Abbildung 3: Ausgabe des Befehls ls -lZ /var/www/html/index.html.

Anschließend wird der Befehl semanage fcontext -l | grep '/var/www' verwendet, um alle fcontext-Einträge aufzulisten, oder aber Dateizusammenhänge im Ordner /var/www/, die denselben Kontexttyp zurückliefern, nämlich in diesem Beispiel httpd_sys_content_t. Nun muss SELinux darauf hingewiesen werden, dass dieser Dateityp von der Quelle /srv/www/service.com/html aus angeliefert werden darf. Dies erreicht man über die Änderung der Richtlinie mit dem Kommando semanage:

semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?'

Die obige Befehlszeile weist semanage an, den neuen fcontext des Typs httpd_sys_content_t anzunehmen und ihn dem Verzeichnis /srv/www/ zuzuweisen, einschließlich dessen Unterverzeichnissen und Dateien. An diesem Punkt wird der Befehl semanage fcontext -l | grep '/srv/www' ausgeführt, um die Dateien in /srv/www/ zu sehen und bestätigt zu finden, dass der Kontext httpd_sys_content_t angewendet wurde. Nun wird der Befehl restorecon -Rv /srv/www ausgeführt, der dem Verzeichnis /srv/www/ eine neue Bezeichnung und den passenden Sicherheitskontext zuweist. Außerdem erhalten auch alle Unterverzeichnisse und Dateien die geänderten SELinux-Richtlinien.

Apache kann jetzt Inhalte aus dem Verzeichnis /srv/www/ ausliefern, ohne mit SELinux in Konflikt zu geraten. Nachdem das ursprüngliche Problem auf diese Weise gelöst wurde, kann SELinux wieder vom Modus Permissive in den Modus Enforcing geschaltet werden.

Alternative mit Benutzeroberfläche

Betreiben Sie einen Server mit einer Benutzeroberfläche, so verwenden Sie unbedingt den SELinux Alert Browser. Stellt SELinux ein Problem fest, so erscheint eine Meldung. Klicken Sie die Meldung an und geben Sie Ihr Root-Kennwort ein, so erscheint der SELinux Alert Browser.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Artikel wurde zuletzt im Mai 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Desktop-Management

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close