Freitag, 5. November 2021

SELinux Modi

SELinux Teil I

Security Enhanced Linux (SELinux) ist eine weitere Schicht in der Systemsicherheit und erweitert die Sicherheitsmechanismen in RHEL basierten Linux Systemen. 

SELinux beantwortet in erster Linie die Frage:

Kann ein SUBJEKT etwas AUSFÜHREN auf diesem OBJEKT (engl.: May subject do action to object?)?

Beispiel: Darf der Webserver auf direkt auf die Datenbank zugreifen oder hat der Prozess der Datenbank Zugriff auf das Verzeichnis des Webservers? Nein. Der Webserver darf nur Dateien aus dem Verzeichnis /var/www/html lesen, während die Datenbank nur auf /data/mysql Zugriff bekommt. Sollte es einem Angreifer gelingen Prozessowner vom Webserver oder der Datenbank zu werden, so sind seine Zugriffsrechte dennoch stark eingeschränkt, auch wenn die Elementare Rechtevergabe des Linux-Systems (Datei-/Ordner-Berechtigungen) den Zugriff zulassen würde.

Quelle: Redhat.com

SELinux kennt drei Modi:

  1. Enforcing ist der Defaultmodus und überwacht das ganze System
  2. Der Permissive-Modus arbeitet wie der Enforcing-Modus, verbietet aber keine Zugriffe. Dieser Modus wird für Debugging-Aufgaben genutzt und ist nicht für Produktivsysteme geeignet.
  3. Ausgeschaltet (DISABLED). SELinux macht gar nichts.

Einstellen des SELinux-Modus permanent (bleibt auch nach einem Reboot gesetzt)


In der Konfigdatei /etc/selinux/config



Änderungen in dieser Konfigdatei sind nach dem nächsten Reboot des Systems aktiv.

Den aktuellen Status von SELinux prüft man mit den beiden Kommandos
sestatus oder
getenforce

Beide liefern die gewünschte Information zurück, jedoch ist sestatus dabei etwas detaillierter:


SELinux Modus während des Bootvorgangs einstellen

Während des Bootvorgangs können im Bootmenü Kernelparameter übergeben werden, welche die SELinux Modi beeinflussen:


enforcing=0 --> Startet das System im Permissiv-Modus
 
selinux=0 --> Veranlasst den Kernel keine SELinux-Komponenten zu laden
 
autorelabel=1 --> SELinux wird das ganze System (Ordner, Dateien, Ports ..) durchlaufen und mit den SELinux-Content aus der SELinux Datenbank relabeln. 

Das "relabeln" hat folgenden Hintergrund. SELinux merkt natürlich, wenn ein Linux-System nicht in einem anderen Modus gebootet worden ist, als es eigentlich vorgesehen war. Hat man den Bootvorgang zum Beispiel durch ein rd.break als Bootparameter unterbrochen und das root-Passwort neu gesetzt, so wird SELinux davon in Kenntnis gesetzt.
 
Das kann aber auch bedeuten, dass ein Angreifer sich Zugriff auf das System ermöglicht und Dateien manipuliert hat, indem er SELinux Berechtigungen auf den Daten ändert.

Für jeden Ordner, jede Datei hält SELinux einen Eintrag in einer Datenbank vor, woraus hervorgeht wie die SELinux-Rechte auszusehen haben. Beim relabeln werden diese Rechte auf allen Ordnern und Dateien wieder gesetzt, sodass sämtliche manuellen Änderungen unwirksam werden.

ACHTUNG: Wenn man selbst SELinux-Rechte auf Dateien ändert, kann es passieren, dass diese Rechte wieder zurück gesetzt werden, wenn ein relabel durchgeführt wird!!! Daher müssen Änderungen auch in der SELinux-DB bekannt gemacht werden.

Weiter geht es im SELinux Teil II


          



Keine Kommentare:

Kommentar veröffentlichen

Proxmox Memory Problem mit WIN2012 und SQL Server

 In meinen Kundenumgebungen beobachte ich eine sehr hohe Speicherauslastung bei Microsoft SQL Servern. Der Durchschnitt liegt bei >90% Sp...