SELinux konfigurieren: Linux-Server härten

SELinux konfigurieren: Linux-Server härten
  • SELinux ist ein Sicherheitsmodul im Linux-Kernel, das Zugriffe selbst für Root-Prozesse einschränkt.
  • Der Enforcing-Modus ist das Ziel für maximale Sicherheit, Permissive hilft bei der Fehlersuche.
  • Korrigieren Sie Dateikontexte mit chcon oder semanage fcontext, statt SELinux zu deaktivieren.
  • Prüfen Sie Audit-Logs mit ausearch und sealert, um Probleme systematisch zu lösen.
  • Vermeiden Sie chmod 777 und testen Sie Änderungen zuerst im Permissive-Modus.

Warum SELinux das Rückgrat der Serversicherheit ist

Stellen Sie sich vor, ein Angreifer hat eine Schwachstelle in Ihrer Webanwendung gefunden. Ohne SELinux hat er im schlimmsten Fall sofort Zugriff auf das gesamte System. Mit SELinux hingegen wird der Schaden begrenzt – es handelt sich um eine Mandatory Access Control (MAC), die selbst Root-Prozesse einschränkt. Dieser Leitfaden führt Sie Schritt für Schritt durch die Konfiguration, von der Aktivierung bis zur Fehlerbehebung, um Ihren Linux-Server (ob auf einem französischen Hosting wie OVHcloud oder einem eigenen Rechenzentrum) effektiv zu härten.

Kurz gesagt :

  • SELinux ist ein Linux-Kernel-Sicherheitsmodul, das Zugriffe selbst für Root-Prozesse einschränkt (Mandatory Access Control).
  • Der Enforcing-Modus ist das Ziel für maximale Sicherheit; Permissive dient nur zur Fehlersuche.
  • Dateikontexte werden mit `chcon` oder `semanage fcontext` korrigiert, statt SELinux zu deaktivieren.
  • Audit-Logs mit `ausearch` und `sealert` prüfen, um Probleme systematisch zu lösen; `chmod 777` vermeiden.

Was ist SELinux und wie funktioniert es?

SELinux (Security-Enhanced Linux) ist ein Sicherheitsmodul im Linux-Kernel, das jedem Prozess, jeder Datei und jedem Verzeichnis ein Etikett (Kontext) zuweist. Anhand dieser Etiketten und einer zentralen Richtlinie (Policy) wird entschieden, ob ein Prozess auf eine Ressource zugreifen darf. Es gibt zwei Hauptmodi: Enforcing (strikte Durchsetzung) und Permissive (nur Protokollierung). Für einen gehärteten Server ist das Ziel, dauerhaft im Enforcing-Modus zu laufen.

Den aktuellen Status prüfen und SELinux aktivieren

Der erste Schritt ist die Überprüfung des Ist-Zustands. Verbinden Sie sich per SSH mit Ihrem Server und führen Sie folgenden Befehl aus:

getenforce

Dieser Befehl zeigt Ihnen den aktuellen Modus an (Enforcing, Permissive oder Disabled). Um SELinux zu aktivieren oder den Modus dauerhaft zu ändern, bearbeiten Sie die Hauptkonfigurationsdatei:

sudo nano /etc/selinux/config

Hier setzen Sie den Parameter SELINUX= auf den gewünschten Wert (enforcing oder permissive). Wichtig: Eine Änderung in dieser Datei erfordert einen Neustart des Systems. Um den Modus ohne Neustart sofort zu wechseln, nutzen Sie:

sudo setenforce 1 # Aktiviert den Enforcing-Modus sofort

Die richtige SELinux-Policy auswählen und konfigurieren

In der Datei /etc/selinux/config finden Sie auch den Parameter SELINUXTYPE=. Dieser definiert die verwendete Richtlinie. Für die meisten Server ist targeted die richtige Wahl. Diese Policy schützt kritische Systemdienste (wie httpd, sshd, named), lässt aber den Rest des Systems weitgehend unangetastet, was die Verwaltung erleichtert. Die Alternative mls (Multi-Level Security) ist komplexer und für Hochsicherheitsumgebungen mit strengen Geheimhaltungsstufen gedacht.

  1. Prüfen Sie die aktive Policy: sudo sestatus
  2. Wechseln Sie die Policy: Bearbeiten Sie die Datei /etc/selinux/config und ändern Sie den Wert SELINUXTYPE=targeted.
  3. Starten Sie den Server neu: sudo reboot

Nach dem Neustart können Sie mit sudo sestatus überprüfen, ob die neue Policy aktiv ist.

Praktische Beispiele: Dienste und Anwendungen korrekt konfigurieren

Hier wird es konkret. Oftmals schlägt ein Dienst fehl, weil der SELinux-Kontext für eine Datei oder ein Verzeichnis falsch ist. Hier sind die häufigsten Szenarien:

Beispiel A: Web-Server (Apache/Nginx)

Wenn Ihr Webserver unter /var/www/html auf eine Datei zugreifen soll, die Sie in /home/user/www abgelegt haben, blockiert SELinux den Zugriff. Der Befehl zur Korrektur lautet:

sudo chcon -R -t httpd_sys_content_t /home/user/www

Beispiel B: Ändern des SSH-Ports

Wenn Sie SSH auf einen nicht standardmäßigen Port (z.B. 2222) umstellen, müssen Sie SELinux dies mitteilen:

sudo semanage port -a -t ssh_port_t -p tcp 2222

Beispiel C: Datenbank-Verzeichnis verschieben

Um das Datenverzeichnis von MySQL/MariaDB zu verschieben, müssen Sie sowohl den Kontext als auch die Policy anpassen:

sudo semanage fcontext -a -t mysqld_db_t "/pfad/zum/neuen/verzeichnis(/.*)?"
sudo restorecon -Rv /pfad/zum/neuen/verzeichnis

Wie behebe ich SELinux-Probleme? Die Audit-Logs lesen und verstehen

Wenn etwas nicht funktioniert, ist die erste Anlaufstelle das Audit-Log. Hier finden Sie die genauen Gründe für blockierte Aktionen. Die Logs befinden sich in der Regel unter /var/log/audit/audit.log. Für eine benutzerfreundlichere Ausgabe verwenden Sie das Tool ausearch:

sudo ausearch -m avc -ts recent

Dieser Befehl zeigt die letzten Ablehnungen (AVC – Access Vector Cache) an. Ein weiteres unverzichtbares Werkzeug ist sealert. Dieses Tool analysiert die Logs und gibt verständliche Hinweise zur Lösung des Problems:

sudo sealert -a /var/log/audit/audit.log

Es schlägt oft direkt den korrekten Befehl vor, um das Problem zu beheben.

Die häufigsten Fehler vermeiden: Ein Leitfaden für den reibungslosen Betrieb

Um Frustration zu vermeiden, sollten Sie diese typischen Stolperfallen kennen:

  • SELinux einfach deaktivieren: Der größte Fehler ist, SELinux zu deaktivieren, sobald ein Problem auftritt. Das hebelt die gesamte Sicherheitsarchitektur aus.
  • chmod 777 verwenden: Das Setzen von offenen Berechtigungen umgeht SELinux, ist aber ein massives Sicherheitsrisiko. Korrigieren Sie stattdessen den SELinux-Kontext.
  • Änderungen an der Konfiguration nicht testen: Wechseln Sie bei größeren Änderungen zuerst in den Permissive-Modus und überwachen Sie die Logs, bevor Sie in den Enforcing-Modus zurückkehren.
  • restorecon vergessen: Nach dem manuellen Ändern von Kontexten mit chcon kann ein restorecon die Änderungen beim nächsten Neustart überschreiben. Nutzen Sie für dauerhafte Änderungen semanage fcontext.

Häufig gestellte Fragen (FAQ)

Was ist der Unterschied zwischen chcon und semanage fcontext?

chcon ändert den Kontext einer Datei sofort, aber vorübergehend. semanage fcontext fügt eine Regel zur Datenbank hinzu, die dauerhaft ist und durch restorecon angewendet wird. Für die dauerhafte Konfiguration ist semanage fcontext die richtige Wahl.

Mein Dienst startet nicht mehr. Liegt es an SELinux?

Sehr wahrscheinlich. Prüfen Sie die Audit-Logs mit sudo ausearch -m avc -ts recent. Wenn dort Einträge auftauchen, liegt das Problem an SELinux. Der Befehl sudo sealert -a /var/log/audit/audit.log gibt Ihnen oft eine konkrete Lösung.

Ist SELinux auch auf einem Container-System wie Docker relevant?

Ja, absolut. SELinux kann auch die Container-Isolation verstärken. Es ist jedoch wichtig, die Interaktion zwischen Docker und SELinux zu verstehen, um Konflikte zu vermeiden. Oftmals müssen Sie die SELinux-Integration in der Docker-Konfiguration explizit aktivieren.

Gibt es spezielle Anforderungen an SELinux auf Servern in Frankreich (z.B. bei OVHcloud)?

Die Grundlagen sind identisch. Wichtig ist, dass Sie die Sicherheitsgruppen und Firewall-Regeln Ihres Hosters (wie OVHcloud oder Scaleway) nicht mit SELinux verwechseln. SELinux arbeitet auf Betriebssystemebene, während die Cloud-Firewall auf Netzwerkebene arbeitet. Beide müssen korrekt konfiguriert sein, um die gesetzlichen Anforderungen an den Datenschutz (DSGVO) zu erfüllen.

Vergleich der SELinux-Modi
ModusVerhaltenEmpfehlung
EnforcingBlockiert und protokolliert VerstößeFür Produktionsserver
PermissiveProtokolliert nur, blockiert nichtFür Tests und Fehlersuche
DisabledKeine DurchsetzungNicht empfohlen
Anna Berger
Anna Berger
IT-Sicherheitsanalystin und Tech-Journalistin

Schon als Kind war ich fasziniert von der Logik hinter Computern und der unendlichen Welt der Daten. Was als spielerische Neugier mit dem Zerlegen alter PCs begann, entwickelte sich schnell zu einer tiefen Leidenschaft für die Informatik. Heute sehe ich es als meine Berufung, komplexe digitale Themen greifbar zu …

Tous les articles de Anna Berger →

Laisser un commentaire