SELinux-cheat-sheet: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 22: Zeile 22:
  
 
;Kontexte anzeigen
 
;Kontexte anzeigen
 +
zeigt alle Prozesse mit Kontexten
 +
* ps -eZ
 
* ls -Z /pfad/zur/datei
 
* ls -Z /pfad/zur/datei
* ps -Z
 
  
 
;Kontext temporär ändern
 
;Kontext temporär ändern
 +
wird durch restorecon oder Relabel überschrieben
 
* chcon -t httpd_sys_content_t /var/www/html/index.html
 
* chcon -t httpd_sys_content_t /var/www/html/index.html
  
Zeile 50: Zeile 52:
 
;Port zu einem Typ hinzufügen
 
;Port zu einem Typ hinzufügen
 
* semanage port -a -t http_port_t -p tcp 8080
 
* semanage port -a -t http_port_t -p tcp 8080
 +
falls bereits vorhanden:
 +
* semanage port -m -t http_port_t -p tcp 8080
  
 
== Fehlersuche und Analyse ==
 
== Fehlersuche und Analyse ==
Zeile 55: Zeile 59:
 
;Logs nach aktuellen Blockaden (AVC) durchsuchen
 
;Logs nach aktuellen Blockaden (AVC) durchsuchen
 
* ausearch -m avc -ts recent
 
* ausearch -m avc -ts recent
 +
zeigt die Ursache der Blockade verständlich
 +
* ausearch -m avc -ts recent | audit2why
 
* journalctl -t setroubleshoot
 
* journalctl -t setroubleshoot
  
 
;Analyse der Log-Einträge
 
;Analyse der Log-Einträge
 +
Paket ggf. erforderlich: setroubleshoot-server
 
* sealert -a /var/log/audit/audit.log
 
* sealert -a /var/log/audit/audit.log
  
 
;Eigene Policy-Module aus Logs erstellen
 
;Eigene Policy-Module aus Logs erstellen
 +
nur nach Prüfung verwenden – kann Sicherheitsregeln aufweichen
 
* grep "denied" /var/log/audit/audit.log | audit2allow -M mycustommodule
 
* grep "denied" /var/log/audit/audit.log | audit2allow -M mycustommodule
 
* semodule -i mycustommodule.pp
 
* semodule -i mycustommodule.pp

Aktuelle Version vom 27. März 2026, 06:40 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

zeigt alle Prozesse mit Kontexten

  • ps -eZ
  • ls -Z /pfad/zur/datei
Kontext temporär ändern

wird durch restorecon oder Relabel überschrieben

  • 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

falls bereits vorhanden:

  • semanage port -m -t http_port_t -p tcp 8080

Fehlersuche und Analyse

Logs nach aktuellen Blockaden (AVC) durchsuchen
  • ausearch -m avc -ts recent

zeigt die Ursache der Blockade verständlich

  • ausearch -m avc -ts recent | audit2why
  • journalctl -t setroubleshoot
Analyse der Log-Einträge

Paket ggf. erforderlich: setroubleshoot-server

  • sealert -a /var/log/audit/audit.log
Eigene Policy-Module aus Logs erstellen

nur nach Prüfung verwenden – kann Sicherheitsregeln aufweichen

  • 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