Sparen Sie 15% bei allen Hosting-Diensten

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code: Skills Anfangen
Abschnitte
Linux Sicherheit

Was ist SELinux und wie kann es die Sicherheit auf Linux-Servern verbessern?

Wenn die meisten Systemadministratoren über die Härtung eines Linux-Servers nachdenken, konzentrieren sie sich auf die Grundlagen: Pakete auf dem neuesten Stand halten, Firewall-Regeln konfigurieren und SSH-Zugriff einschränken. Dies sind alles gültige und notwendige Schritte — aber sie lassen eine erhebliche Lücke. Einer der leistungsstärksten und am häufigsten untergenutzten Sicherheitsmechanismen auf Linux ist SELinux (Security-Enhanced Linux), ein Kernel-Level-Framework für obligatorische Zugriffskontrolle, das entwickelt wurde, um Bedrohungen einzudämmen, bevor sie sich zu vollständigen Systemkompromittierungen entwickeln.

Egal ob Sie eine VPS Hosting-Umgebung, eine hochfrequente Anwendung auf Dedicated Servers oder eine Multi-Tenant-Shared Web Hosting-Plattform betreiben, SELinux kann die entscheidende Schicht sein, die einen ernsthaften Verstoß in einen eingedämmten, wiederherstellbaren Incident verwandelt.

Was ist SELinux?

SELinux ist ein Linux-Kernel-Sicherheitsmodul, das Mandatory Access Control (MAC) implementiert. Um zu verstehen, warum dies wichtig ist, müssen Sie zunächst verstehen, was es ersetzt – oder besser gesagt, was es ergänzt.

Das traditionelle Linux-Sicherheitsmodell basiert auf Discretionary Access Control (DAC). Unter DAC werden Zugriffsberechtigung durch Dateieigentum und Gruppenmitgliedschaft bestimmt. Der Root-Benutzer hat uneingeschränkte Macht über das gesamte System. Wenn ein Angreifer Root erhält, erhält er alles.

Unter SELinux’ MAC-Modell wird der Zugriff durch systemweite Sicherheitsrichtlinien geregelt, die auf Kernel-Ebene durchgesetzt werden. Entscheidend ist, dass selbst der Root-Benutzer diesen Einschränkungen unterliegt. Ein Prozess, der als Root läuft, kann keine Aktionen ausführen, die seine SELinux-Richtlinie nicht ausdrücklich erlaubt.

SELinux wurde ursprünglich von der National Security Agency (NSA) in Zusammenarbeit mit Red Hat entwickelt und in den frühen 2000er Jahren in den Mainline-Linux-Kernel integriert. Heute ist es eine Standardkomponente von Enterprise-Linux-Distributionen wie RHEL, CentOS, Fedora, AlmaLinux und Rocky Linux.

Wo traditionelle Linux-Sicherheit zu kurz kommt

Das klassische UNIX-Berechtigungsmodell hat Linux Jahrzehnte lang gut gedient, trägt aber strukturelle Schwächen mit sich, die moderne Angreifer routinemäßig ausnutzen:

  • Root ist allmächtig. Jeder Exploit, der erfolgreich zu Root eskaliert, gibt dem Angreifer uneingeschränkten Zugriff auf das gesamte System — Dateien, Datenbanken, Netzwerk-Sockets und alles andere.
  • Service-Kompromittierung bedeutet System-Kompromittierung. Ein anfälliges Apache-Modul, ein schlecht geschriebenes PHP-Skript oder eine falsch konfigurierte Anwendung können genutzt werden, um sich über den gesamten Server auszubreiten.
  • Moderne Angriffsvektoren umgehen DAC vollständig. Web Shells, Privilege-Escalation-Exploits, Container-Escapes und Supply-Chain-Angriffe sind so konzipiert, dass sie innerhalb der Grenzen traditioneller Berechtigungen operieren und dennoch katastrophale Schäden verursachen.

Szenario eines realen Angriffs

Betrachten Sie eine häufige CMS-Anfälligkeit, die es einem Angreifer ermöglicht, eine Web Shell hochzuladen und auszuführen.

Ohne SELinux: Der Angreifer liest config.php, extrahiert Datenbank-Anmeldedaten, dumpt die Datenbank, bewegt sich lateral zu anderen gehosteten Websites und erreicht möglicherweise vollständigen Root-Zugriff. Der gesamte Stack wird von einem einzigen Einstiegspunkt aus kompromittiert.

Mit SELinux: Der Apache-Webserver-Prozess läuft in der httpd_t Domain. Die Policy beschränkt streng, worauf httpd_t zugreifen kann. Die Web Shell kann keine Dateien außerhalb der designierten Content Domain lesen, kann keine nicht autorisierten Netzwerkverbindungen öffnen und kann Systemkonfigurationsdateien nicht anfassen. Der Verstoß wird auf der Anwendungsebene eingedämmt.

Dies ist die Kernwertproposition von SELinux: Schadenseindämmung durch Prozess-Isolierung.

Wie SELinux funktioniert: Sicherheitskontexte und Richtliniendurchsetzung

SELinux funktioniert, indem es jedem Prozess, jeder Datei, jedem Port und jedem Netzwerk-Socket auf dem System einen Sicherheitskontext (Label) zuweist. Richtlinien definieren dann, welche Kontexte miteinander interagieren dürfen. Der Kernel erzwingt diese Regeln bei jedem Zugriffversuch.

Ein konkretes Beispiel

ObjektSicherheitskontext
Apache-Prozesshttpd_t
Website-Dateienhttpd_sys_content_t
Shadow-Passwortdateishadow_t

Die SELinux-Richtlinie erlaubt httpd_t, Dateien mit dem Label httpd_sys_content_t zu lesen. Sie erlaubt httpd_t nicht, shadow_t zu lesen.

Wenn Apache — ob berechtigt oder aufgrund einer Ausnutzung — versucht, /etc/shadow zu lesen, lehnt der Kernel die Anfrage ab und schreibt einen detaillierten Verstoßeintrag in /var/log/audit/audit.log. Der Angriff wird blockiert und gleichzeitig dokumentiert.

SELinux-Betriebsmodi

SELinux arbeitet in drei verschiedenen Modi:

ModusVerhalten
EnforcingRichtlinien werden aktiv durchgesetzt. Verstöße werden blockiert und protokolliert.
PermissiveVerstöße werden protokolliert, aber nicht blockiert. Nützlich für Audits und Richtlinienentwicklung.
DisabledSELinux ist vollständig deaktiviert. Nicht empfohlen für Produktionsumgebungen.

Überprüfung und Einstellung des aktuellen Modus

# Check current SELinux status
getenforce
sestatus

# Temporarily switch to permissive mode (no reboot required)
setenforce 0

# Switch back to enforcing mode
setenforce 1

Um den Modus dauerhaft zu ändern, bearbeiten Sie /etc/selinux/config und setzen Sie SELINUX=enforcing (oder permissive), dann starten Sie neu.

> Best Practice: Stellen Sie neue Server zunächst im Permissive-Modus bereit. Überprüfen Sie die Audit-Protokolle, identifizieren Sie alle legitimen Prozesse, die gekennzeichnet werden, optimieren Sie Ihre Richtlinien und wechseln Sie dann zum Enforcing-Modus für die Produktion. Dieser Ansatz verhindert Betriebsstörungen und stellt gleichzeitig sicher, dass Ihre Richtlinien korrekt sind.

SELinux-Richtlinientypen

SELinux wird mit mehreren Richtlinientypen ausgeliefert, die für verschiedene Umgebungen geeignet sind:

Targeted Policy (Standard und empfohlen)

Wendet MAC-Einschränkungen nur auf netzwerkfähige Dienste wie Apache, Nginx, Postfix, Dovecot und DNS an. Alle anderen Prozesse werden in einer unkontrollierten Domäne ausgeführt. Dies ist das beste Gleichgewicht zwischen Sicherheit und Benutzerfreundlichkeit für die überwiegende Mehrheit der VPS- und Dedicated-Server-Workloads.

Strict Policy

Wendet MAC auf alle Prozesse im System an, einschließlich Benutzersitzungen. Bietet maximale Sicherheit, erfordert aber deutlich mehr Richtlinienverwaltung und betriebliche Expertise.

MLS/MCS (Multi-Level Security / Multi-Category Security)

Erweiterte Richtlinientypen, die für Umgebungen auf Regierungsebene, klassifizierte oder stark regulierte Umgebungen konzipiert sind, in denen Daten gleichzeitig über mehrere Sensitivitätsstufen isoliert werden müssen.

Für die meisten produktiven Server-Bereitstellungen ist Targeted Policy die richtige Wahl.

Warum SELinux für Hosting, DevOps und Compliance wichtig ist

SELinux bietet greifbare Sicherheitsvorteile in einer Vielzahl von Betriebskontexten:

Prozessisolation

Jeder begrenzte Service läuft in seiner eigenen Sicherheitsdomäne. Das Kompromittieren eines Service — beispielsweise einer Webanwendung — gewährt keinen Zugriff auf andere Services, die auf demselben Host laufen. Dies ist besonders wertvoll in Multi-Anwendungs-Server-Umgebungen.

Durchsetzung des Prinzips der minimalen Berechtigung

SELinux erzwingt das Prinzip der minimalen Berechtigung auf Kernel-Ebene. Prozesse können nur auf die Ressourcen zugreifen, die sie explizit benötigen. Selbst wenn ein Angreifer Root innerhalb eines begrenzten Prozesses erhält, können sie die durch die Richtlinie definierten Berechtigungen nicht überschreiten.

Audit-Protokolle und Forensik

Jeder verweigerte Zugriffversuch wird in /var/log/audit/audit.log mit vollständigem Kontext protokolliert: der beteiligte Prozess, die Ressource, auf die er zugreifen versuchte, die Sicherheitskontexte beider und ein Zeitstempel. Dies macht die Forensik nach Vorfällen erheblich effektiver.

Container-Sicherheit

SELinux verhindert, dass Docker- und Podman-Container ihre Grenzen überschreiten und auf Host-Ressourcen zugreifen. Dies ist eine kritische Verteidigungsschicht für containerisierte Workloads, bei denen Container-Escape-Schwachstellen eine bekannte Angriffsklasse darstellen.

Einhaltung von Vorschriften

SELinux ist ein erforderliches Kontrollelement in mehreren Compliance-Frameworks, einschließlich PCI DSS, HIPAA und militärischen/behördlichen Sicherheitsstandards. Das Ausführen von SELinux im Enforcing-Modus mit einer dokumentierten Richtlinie ist oft eine Voraussetzung für das Bestehen von Sicherheitsprüfungen in regulierten Branchen.

Wesentliche SELinux-Befehle für Systemadministratoren

Hier sind die am häufigsten verwendeten Befehle für die Verwaltung von SELinux im täglichen Betrieb:

SELinux-Status überprüfen

getenforce
sestatus

Dateikontexte nach dem Verschieben von Webdateien wiederherstellen

Wenn Dateien verschoben statt kopiert werden, können sie falsche Sicherheitsbezeichnungen behalten. Verwenden Sie restorecon, um dies zu beheben:

restorecon -Rv /var/www/html

Sicherheitsbezeichnungen von Dateien auflisten

ls -Z /var/www/html

Webdienst-Ausgangsverbindungen zulassen (z. B. für API-Aufrufe oder Proxying)

setsebool -P httpd_can_network_connect 1

Apache die Verbindung zu einer Datenbank erlauben

setsebool -P httpd_can_network_connect_db 1

Kürzlich abgelehnte Aktionen im Audit-Protokoll überprüfen

ausearch -m avc -ts recent

Ein benutzerdefiniertes Richtlinienmodul aus Audit-Ablehnungen generieren

audit2allow -a -M my_custom_policy
semodule -i my_custom_policy.pp

> Wichtig: Untersuchen Sie immer Audit-Ablehnungen, bevor Sie Zulassungsregeln erstellen. audit2allow ist ein leistungsstarkes Tool, aber das blinde Zulassen aller Ablehnungen widerlegt den Zweck von SELinux. Verstehen Sie, was jede Regel erlaubt, bevor Sie sie anwenden.

Häufige SELinux-Fallstricke und wie man sie vermeidet

SELinux deaktivieren statt es zu reparieren. Der häufigste Fehler von Administratoren ist die permanente Deaktivierung von SELinux, wenn sie auf eine Ablehnung stoßen. Dies entfernt eine ganze Schutzebene. Verwenden Sie stattdessen audit2allow und setsebool, um spezifische Probleme zu beheben und SELinux aktiv zu halten.

Falsche Dateibezeichnungen nach manuellen Bereitstellungen. Wenn Sie Anwendungsdateien bereitstellen, indem Sie sie von einem nicht standardmäßigen Ort kopieren, können sie falsche Bezeichnungen erben. Führen Sie immer restorecon nach manuellen Dateivorgängen in Web-Roots und Anwendungsverzeichnissen aus.

Protokolle im Permissive-Modus nicht überprüfen. Die Permissive-Phase zu überspringen und direkt zum Enforcing auf einem Produktionsserver zu gehen, ist ein Rezept für unerwartete Ausfallzeiten. Validieren Sie Richtlinien immer gegen echten Datenverkehr, bevor Sie sie erzwingen.

SELinux und AlexHost: Production-Ready Security von Grund auf

AlexHost Server mit Enterprise-Linux-Distributionen (AlmaLinux, Rocky Linux, CentOS) werden mit SELinux ab Werk bereitgestellt. Ob Sie einen Web-Application-Stack, einen Datenbankserver oder eine containerisierte Microservices-Umgebung bereitstellen – SELinux bietet die grundlegende Zugriffskontrollebene, die Ihre Workloads vor Exploits schützt.

Wenn Sie Ihren Server über ein Kontrollpanel verwalten, sind VPS mit cPanel Umgebungen vollständig mit SELinux im Targeted-Modus kompatibel, und cPanel selbst wird mit SELinux-bewussten Konfigurationen für seine verwalteten Services ausgeliefert.

Für Teams, die vollständige Kontrolle über ihre Sicherheitsposition benötigen – einschließlich benutzerdefinierter SELinux-Policy-Module, MLS-Konfigurationen oder Compliance-gesteuerte Härtung – bieten Dedicated Servers die Isolation und Root-Zugriff, die erforderlich sind, um Enterprise-Grade-MAC-Richtlinien ohne die Einschränkungen gemeinsamer Infrastruktur zu implementieren und zu verwalten.

Fazit

SELinux ist nicht einfach ein optionales Sicherheits-Add-on — es ist eine grundlegende architektonische Komponente, die neu definiert, wie Linux die Zugriffskontrolle auf Kernel-Ebene durchsetzt. Durch die Beschränkung von Prozessen auf klar definierte Sicherheitsdomänen, die Durchsetzung von Least-Privilege-Richtlinien, die selbst der Root-Benutzer nicht umgehen kann, und die Generierung detaillierter Audit-Protokolle jedes abgelehnten Zugriffversuchs verwandelt SELinux einen Standard-Linux-Server in ein erheblich widerstandsfähigeres und verteidigungsfähigeres System.

Ja, SELinux erfordert Investitionen: das Verständnis von Sicherheitskontexten, das Schreiben oder Abstimmen von Richtlinien und die Verpflichtung zu einem Workflow, der Ablehnungen als Informationen und nicht als Hindernisse behandelt. Aber für jeden Server, der sensible Daten verarbeitet, öffentlich zugängliche Dienste betreibt oder innerhalb eines regulatorischen Compliance-Rahmens operiert, ist diese Investition nicht optional — sie ist die Grundlage.

Konfigurieren Sie es korrekt, halten Sie es im Enforcing-Modus, und SELinux wird Bedrohungen stillschweigend eindämmen, die sonst Ihre gesamte Infrastruktur kompromittieren würden.