Einführung in SELinux: Status prüfen, aktivieren, grundlegende Befehle
1. Was ist SELinux und wozu braucht man es?
SELinux (Security-Enhanced Linux) — ist ein Sicherheitsmodul, das das traditionelle Berechtigungsmodell erweitert, indem es das Konzept der obligatorischen Kontrolle hinzufügt. Es erlaubt Administratoren, strengere Einschränkungen für Benutzer und sogar Prozesse festzulegen, um potenzielle Schäden durch mögliche Angriffe zu minimieren.
Was macht es so einzigartig?
Stell dir vor, dein System wäre ein Haus. Traditionelle Berechtigungen (rwx für Benutzer, Gruppen und andere) sind wie Schlüssel für die Schlösser an den Türen. Aber was, wenn jemand die Tür aufbricht? SELinux wird zur zweiten Verteidigungslinie und verstärkt den Schutz mit Verhaltensregeln: "Hey, selbst wenn du drinnen bist, darfst du nicht ins Badezimmer!"
Die Hauptaufgaben von SELinux:
- Schutz vor unbefugtem Zugriff für Prozesse und Dateien.
- Schadensbegrenzung bei Angriffen, selbst wenn ein Prozess kompromittiert wurde.
- Prinzipien der "Default-Deny-Policy" (alles ist verboten, außer es ist ausdrücklich erlaubt).
Betriebsmodi von SELinux
SELinux kann in drei Modi arbeiten:
- Enforcing — aktiv, erzwingt Sicherheitsrichtlinien und blockiert Verstöße.
- Permissive — protokolliert nur Verstöße, blockiert jedoch keine Aktionen.
- Disabled — vollständig deaktiviert
SELinux im Enforcing-Modus ist wie ein strenger älterer Bruder für dein System. Permissive ist wie der jüngere Bruder, der sich zwar beschwert, aber nichts dagegen tut.
2. Überprüfung des SELinux-Status
Schauen wir uns zunächst an, ob SELinux aktiv ist und in welchem Modus es läuft. Dafür gibt es ein paar praktische Befehle.
Befehl getenforce
Dieser Befehl zeigt dir einfach, welcher Modus momentan verwendet wird: Enforcing, Permissive oder Disabled.
$ getenforce
Enforcing
Wenn die Ausgabe Disabled lautet, dann ist SELinux deaktiviert – das bedeutet, dass du ein bisschen Arbeit investieren musst, um es zu aktivieren, aber dazu später mehr.
Befehl sestatus
Einen detaillierteren Bericht über den Status von SELinux bekommst du mit diesem Befehl. Er zeigt den aktuellen Zustand, den aktiven Modus und die verwendete Policy.
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Hier kannst du sehen:
- enabled/disabled – ob SELinux aktiviert ist.
- current mode – der aktive Modus (enforcing, permissive).
- loaded policy name – welche Policy geladen ist. Zum Beispiel bedeutet "targeted", dass SELinux nur wichtige Prozesse kontrolliert.
3. Modi von SELinux umschalten
Um den aktuellen Betriebsmodus von SELinux zu ändern, benutzt man den Befehl setenforce
.
Wechsel in den permissive-Modus
Wenn du SELinux "die Zügel etwas lockern" willst, kannst du den permissive-Modus aktivieren.
$ sudo setenforce 0
Jetzt wird SELinux nur Verstöße aufzeichnen, aber nicht blockieren. Du kannst die neue Einstellung mit dem Befehl getenforce
überprüfen:
$ getenforce
Permissive
Zurückschalten in den enforcing-Modus
Wenn du wieder strenge Kontrolle aktivieren möchtest, führst du aus:
$ sudo setenforce 1
Und natürlich überprüfst du das Ergebnis:
$ getenforce
Enforcing
Diese Änderung wird sofort wirksam, bleibt aber nur bis zum nächsten Systemneustart bestehen.
4. SELinux aktivieren
Falls SELinux deaktiviert wurde, müssen Änderungen in der Konfigurationsdatei vorgenommen werden. SELinux wird über die Datei /etc/selinux/config
verwaltet.
Aktuelle Konfigurationsdatei prüfen
Schauen wir uns an, was dort eingestellt ist. Nutze einen beliebigen Texteditor, zum Beispiel nano
:
$ sudo nano /etc/selinux/config
Du wirst etwas in der Art sehen:
# Diese Datei kontrolliert den Status von SELinux auf dem System.
SELINUX=disabled
SELINUXTYPE=targeted
SELinux in den aktiven Zustand versetzen
Um SELinux zu aktivieren, ändere die Zeile SELINUX=disabled
in SELINUX=enforcing
oder SELINUX=permissive
.
Hier ein Beispiel der Datei nach den Änderungen:
# Diese Datei kontrolliert den Status von SELinux auf dem System.
SELINUX=enforcing
SELINUXTYPE=targeted
Nach dem Bearbeiten speichere die Datei und starte das System neu:
$ sudo reboot
Nach dem Neustart kannst du mit sestatus
den Status überprüfen, um sicherzustellen, dass SELinux aktiv ist.
5. Analyse von SELinux-Kontexten
Was sind Kontexte?
Kontexte sind Labels, die SELinux zur Zugriffssteuerung verwendet. Jede Datei, jeder Prozess und jeder Benutzer hat seinen eigenen Kontext.
Du kannst die Kontexte von Dateien mit dem Befehl ls -Z
ansehen. Hier ein Beispiel:
$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
Was bedeutet das?
- unconfinedu — der SELinux-Benutzer.
- objectr — der Objekttyp.
- httpdsyscontent_t — der Zugriffstyp (in diesem Fall im Zusammenhang mit dem Webserver).
- s0 — die Sicherheitsstufe.
Ändern des Kontexts
Falls SELinux den Betrieb deiner Anwendung blockiert, kann es sein, dass du den Kontext der Datei ändern musst. Verwende den Befehl chcon
:
$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html
Dieser Befehl ändert den Dateikontext vorübergehend. Nach einem Neustart können die Änderungen jedoch verschwinden. Für dauerhafte Einstellungen solltest du besser die SELinux-Politik modifizieren (mehr dazu später).
6. Beispiel für die Arbeit mit SELinux
Lass uns ein Beispiel durchgehen. Du bist der Serveradministrator, der einen Webserver aufsetzen möchte, aber SELinux blockiert den Zugriff auf Dateien im Verzeichnis /var/www/html
.
Schritte:
Überprüfe den Status von SELinux:
$ sestatus
Stelle sicher, dass SELinux aktiviert ist und im enforcing-Modus läuft.
Schau dir die Kontexte der Dateien an:
$ ls -Z /var/www/html
Wenn der Kontext falsch ist, ändere ihn:
$ sudo chcon -t httpd_sys_content_t /var/www/html/*
Überprüfe den Betrieb des Webservers.
7. Typische Fehler und Probleme
SELinux ist deaktiviert, und du merkst es nicht. Prüfe immer den Status mit
sestatus
. Viele Administratoren vergessen, SELinux nach der Installation des Systems zu aktivieren."Warum funktioniert mein Service nicht?" SELinux blockiert den Zugriff. Verwende
audit.log
zur Analyse:$ sudo cat /var/log/audit/audit.log | grep denied
Änderungen des Kontextes werden nicht gespeichert. Verwende nicht
chcon
, sondern Befehle für permanente Änderungen wiesemanage
.
Das Lernen von SELinux ist wie die Vorbereitung auf einen Marathon: Am Anfang kann es schwierig sein, aber mit der Zeit wirst du verstehen, wie dieses Tool die Systemsicherheit erheblich verbessern kann. Nutze dieses Wissen, um der Admin zu sein, den nicht mal der fortschrittlichste Hacker knacken kann.
GO TO FULL VERSION