CodeGym /Kurse /Docker SELF /Einführung in SELinux: Status prüfen, aktivieren, grundle...

Einführung in SELinux: Status prüfen, aktivieren, grundlegende Befehle

Docker SELF
Level 5 , Lektion 2
Verfügbar

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:

  1. Schutz vor unbefugtem Zugriff für Prozesse und Dateien.
  2. Schadensbegrenzung bei Angriffen, selbst wenn ein Prozess kompromittiert wurde.
  3. Prinzipien der "Default-Deny-Policy" (alles ist verboten, außer es ist ausdrücklich erlaubt).

Betriebsmodi von SELinux

SELinux kann in drei Modi arbeiten:

  1. Enforcing — aktiv, erzwingt Sicherheitsrichtlinien und blockiert Verstöße.
  2. Permissive — protokolliert nur Verstöße, blockiert jedoch keine Aktionen.
  3. 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?

  1. unconfinedu — der SELinux-Benutzer.
  2. objectr — der Objekttyp.
  3. httpdsyscontent_t — der Zugriffstyp (in diesem Fall im Zusammenhang mit dem Webserver).
  4. 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:

  1. Überprüfe den Status von SELinux:

    $ sestatus
    

    Stelle sicher, dass SELinux aktiviert ist und im enforcing-Modus läuft.

  2. Schau dir die Kontexte der Dateien an:

    $ ls -Z /var/www/html
    
  3. Wenn der Kontext falsch ist, ändere ihn:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. Überprüfe den Betrieb des Webservers.


7. Typische Fehler und Probleme

  1. 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.

  2. "Warum funktioniert mein Service nicht?" SELinux blockiert den Zugriff. Verwende audit.log zur Analyse:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. Änderungen des Kontextes werden nicht gespeichert. Verwende nicht chcon, sondern Befehle für permanente Änderungen wie semanage.

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.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION