SELinux-cheat-sheet: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== Allgemeines == SELinux (Security-Enhanced Linux) implementiert mit hoher Wahrscheinlichkeit Mandatory Access Control (MAC). Es ist anzunehmen, dass dieses M…“)
 
Zeile 1: Zeile 1:
 
== Allgemeines ==
 
== Allgemeines ==
SELinux (Security-Enhanced Linux) implementiert mit hoher Wahrscheinlichkeit Mandatory Access Control (MAC). Es ist anzunehmen, dass dieses Modul Prozesse in spezifischen Sicherheitskontexten isoliert, um das Schadenspotenzial bei Kompromittierungen zu minimieren.
+
SELinux (Security-Enhanced Linux) implementiert Mandatory Access Control (MAC). Es isoliert Prozesse in Sicherheitskontexten, um das Schadenspotenzial bei Kompromittierungen zu minimieren.
  
 
== Status und Modi prüfen ==
 
== Status und Modi prüfen ==
Zeile 7: Zeile 7:
  
 
== Modi temporär umschalten ==
 
== Modi temporär umschalten ==
Es besteht die Wahrscheinlichkeit, dass ein Wechsel in den Permissive-Modus notwendig ist, um Blockaden zu diagnostizieren, ohne den Schutz vollständig zu deaktivieren.
 
  
 
;Wechsel zu Permissive
 
;Wechsel zu Permissive
Zeile 16: Zeile 15:
  
 
== Modus dauerhaft setzen ==
 
== Modus dauerhaft setzen ==
Änderungen werden wahrscheinlich in der Konfigurationsdatei /etc/selinux/config vorgenommen.
+
Konfiguration in der Datei: /etc/selinux/config
 
* SELINUX=enforcing
 
* SELINUX=enforcing
 
* SELINUX=permissive
 
* SELINUX=permissive
  
 
== Dateikontexte verwalten ==
 
== Dateikontexte verwalten ==
Es ist zu vermuten, dass Dateien korrekte Typ-Labels (_t) benötigen, damit darauf zugegreifende Dienste autorisiert werden.
 
  
 
;Kontexte anzeigen
 
;Kontexte anzeigen
Zeile 35: Zeile 33:
  
 
== Booleans verwenden ==
 
== Booleans verwenden ==
Booleans ermöglichen es wahrscheinlich, vordefinierte Richtlinien zur Laufzeit ein- oder auszuschalten.
 
  
 
;Alle Booleans anzeigen
 
;Alle Booleans anzeigen
Zeile 47: Zeile 44:
  
 
== Ports verwalten ==
 
== Ports verwalten ==
Wenn Dienste auf Nicht-Standard-Ports betrieben werden, müssen diese vermutlich im SELinux-Regelwerk registriert sein.
 
  
 
;Erlaubte Ports für einen Typ anzeigen
 
;Erlaubte Ports für einen Typ anzeigen
Zeile 56: Zeile 52:
  
 
== Fehlersuche und Analyse ==
 
== Fehlersuche und Analyse ==
Es ist anzunehmen, dass Blockaden (AVC denials) im Audit-Log des Systems verzeichnet werden.
 
  
;Logs nach aktuellen Blockaden durchsuchen
+
;Logs nach aktuellen Blockaden (AVC) durchsuchen
 
* ausearch -m avc -ts recent
 
* ausearch -m avc -ts recent
 
* journalctl -t setroubleshoot
 
* journalctl -t setroubleshoot
  
;Analyse der Log-Einträge (setroubleshoot erforderlich)
+
;Analyse der Log-Einträge
 
* sealert -a /var/log/audit/audit.log
 
* sealert -a /var/log/audit/audit.log
  
Zeile 70: Zeile 65:
  
 
== Best Practices ==
 
== Best Practices ==
* Es ist ratsam, SELinux im Modus 'enforcing' zu betreiben, um die Systemsicherheit zu gewährleisten.
+
* Betrieb im Modus 'enforcing' sicherstellen.
* Der Modus 'permissive' sollte mit hoher Wahrscheinlichkeit nur kurzzeitig zur Fehlersuche genutzt werden.
+
* Modus 'permissive' nur zur Fehlersuche nutzen.
* Die Verwendung von 'semanage fcontext' ist gegenüber 'chcon' zu bevorzugen, damit Labels bei einem Dateisystem-Relabeling erhalten bleiben.
+
* 'semanage fcontext' gegenüber 'chcon' bevorzugen.
* Vor der Erstellung eigener Module sollte geprüft werden, ob ein passender Boolean existiert.
+
* Vor Erstellung eigener Module prüfen, ob ein passender Boolean existiert.
* Ein vollständiges Relabeling des Dateisystems kann bei Bedarf über 'touch /.autorelabel' beim nächsten Systemstart initiiert werden.
+
* Relabeling des Dateisystems bei Bedarf: touch /.autorelabel

Version vom 27. März 2026, 06:16 Uhr

Allgemeines

SELinux (Security-Enhanced Linux) implementiert Mandatory Access Control (MAC). Es isoliert Prozesse in Sicherheitskontexten, um das Schadenspotenzial bei Kompromittierungen zu minimieren.

Status und Modi prüfen

  • sestatus
  • getenforce

Modi temporär umschalten

Wechsel zu Permissive
  • setenforce 0
Wechsel zu Enforcing
  • setenforce 1

Modus dauerhaft setzen

Konfiguration in der Datei: /etc/selinux/config

  • SELINUX=enforcing
  • SELINUX=permissive

Dateikontexte verwalten

Kontexte anzeigen
  • ls -Z /pfad/zur/datei
  • ps -Z
Kontext temporär ändern
  • chcon -t httpd_sys_content_t /var/www/html/index.html
Kontext dauerhaft definieren und anwenden
  • semanage fcontext -a -t httpd_sys_content_t "/custom/www(/.*)?"
  • restorecon -Rv /custom/www

Booleans verwenden

Alle Booleans anzeigen
  • getsebool -a
Spezifischen Wert prüfen
  • getsebool httpd_can_network_connect
Boolean dauerhaft aktivieren
  • setsebool -P httpd_can_network_connect on

Ports verwalten

Erlaubte Ports für einen Typ anzeigen
  • semanage port -l | grep http_port_t
Port zu einem Typ hinzufügen
  • semanage port -a -t http_port_t -p tcp 8080

Fehlersuche und Analyse

Logs nach aktuellen Blockaden (AVC) durchsuchen
  • ausearch -m avc -ts recent
  • journalctl -t setroubleshoot
Analyse der Log-Einträge
  • sealert -a /var/log/audit/audit.log
Eigene Policy-Module aus Logs erstellen
  • grep "denied" /var/log/audit/audit.log | audit2allow -M mycustommodule
  • semodule -i mycustommodule.pp

Best Practices

  • Betrieb im Modus 'enforcing' sicherstellen.
  • Modus 'permissive' nur zur Fehlersuche nutzen.
  • 'semanage fcontext' gegenüber 'chcon' bevorzugen.
  • Vor Erstellung eigener Module prüfen, ob ein passender Boolean existiert.
  • Relabeling des Dateisystems bei Bedarf: touch /.autorelabel