SELinux (Security-Enhanced Linux) ist ein Mandatory Access Control (MAC)-System, das Linux-Servern eine zusätzliche Sicherheitsebene bietet. Im Gegensatz zu klassischen Discretionary Access Controls (DAC) erzwingt SELinux Richtlinien, die den Zugriff auf Dateien, Prozesse und Netzwerkressourcen strikt regeln. Ein korrekt konfigurierter SELinux-Modus schützt vor Fehlkonfigurationen, Malware und unautorisierten Zugriffen und ist insbesondere in Unternehmens- und Telco-Umgebungen essenziell.
Grundlagen von SELinux
SELinux basiert auf drei zentralen Komponenten: Policies, Contexts und Modes. Policies definieren die Regeln, welche Aktionen erlaubt oder verboten sind. Jeder Prozess und jede Datei besitzt einen Security Context, der aus Benutzer, Rolle und Typ besteht. Der Modus bestimmt, wie SELinux diese Regeln durchsetzt.
- Type Enforcement (TE): Hauptmechanismus zur Zugriffskontrolle auf Dateien und Prozesse
- Role-Based Access Control (RBAC): Zuweisung von Rollen an Benutzer, um deren Rechte einzuschränken
- Multi-Level Security (MLS): Optionale Klassifizierung von Daten mit Sensitivitätsstufen
SELinux-Modi
SELinux kann in drei Modi betrieben werden:
- Enforcing: SELinux-Regeln werden strikt durchgesetzt. Nicht erlaubte Aktionen werden blockiert.
- Permissive: SELinux protokolliert Verstöße, blockiert sie jedoch nicht. Ideal für Test und Debugging.
- Disabled: SELinux ist komplett deaktiviert. Keine Zugriffskontrolle erfolgt.
Prüfen des SELinux-Status
Vor der Aktivierung sollte der aktuelle Status geprüft werden, um sicherzustellen, dass Policies und Tools korrekt installiert sind.
# SELinux-Status prüfen
sestatus
Alternativ
getenforce
SELinux aktivieren
Auf den meisten Enterprise-Linux-Distributionen ist SELinux bereits installiert. Die Aktivierung erfolgt über die Konfigurationsdatei /etc/selinux/config:
sudo nano /etc/selinux/config
Konfiguration
SELINUX=enforcing
SELINUXTYPE=targeted
Speichern und Neustart
sudo reboot
Die Option SELINUXTYPE=targeted aktiviert die Standard-Policy, die kritische Dienste wie SSH, HTTP und Datenbanken absichert.
SELinux-Kontexte verstehen
Jede Datei und jeder Prozess besitzt einen Security Context. Typische Kontextkomponenten:
- user: SELinux-Benutzer (z. B. system_u, unconfined_u)
- role: Rolle des Prozesses (z. B. system_r, object_r)
- type: Typ, der den Zugriff definiert (z. B. sshd_t, httpd_sys_content_t)
Kontext eines Prozesses oder einer Datei anzeigen:
# Datei-Kontext
ls -Z /etc/ssh/sshd_config
Prozess-Kontext
ps -eZ | grep sshd
Typische SELinux-Policies
Die wichtigsten Policies im Serverbetrieb umfassen:
- targeted: Standardpolicy, schützt kritische Dienste
- mls: Mandatory Multi-Level Security, geeignet für hochsensible Daten
- minimum: Minimalinstallation, wenige Regeln
Die Auswahl richtet sich nach Sicherheitsanforderungen und Komplexität der Umgebung.
Fehleranalyse und Troubleshooting
Fehler oder Zugriffsprobleme werden in /var/log/audit/audit.log protokolliert. Tools zum Debuggen:
# Audit Logs analysieren
ausearch -m avc -ts today
Verstöße zusammenfassen
sealert -a /var/log/audit/audit.log
Bei notwendigen Ausnahmen können Booleans aktiviert werden:
# HTTPD darf Netzwerkzugriff erhalten
sudo setsebool -P httpd_can_network_connect 1
Best Practices für SELinux
- Im Enforcing-Modus betreiben, sobald die Umgebung getestet wurde
- Regelmäßig Audit-Logs prüfen und bei Fehlkonfigurationen Booleans anpassen
- Nur notwendige Ausnahmen definieren, um die Angriffsfläche minimal zu halten
- Policies versionieren und dokumentieren
- Neue Dienste zunächst im Permissive-Modus testen
Fazit
SELinux bietet eine robuste Sicherheitsarchitektur für Linux-Server, die über klassische Benutzerrechte hinausgeht. Durch das Verständnis von Modi, Policies und Kontexten lässt sich ein sicherer Betrieb gewährleisten, Fehlkonfigurationen vermeiden und die Angriffsfläche reduzieren. Ein systematisches Vorgehen – prüfen, aktivieren, testen, Auditieren – sorgt dafür, dass SELinux effektiv schützt, ohne den Serverbetrieb zu beeinträchtigen.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











