SELinux-cheat-sheet

Aus Xinux Wiki
Version vom 27. März 2026, 06:14 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Allgemeines == SELinux (Security-Enhanced Linux) implementiert mit hoher Wahrscheinlichkeit Mandatory Access Control (MAC). Es ist anzunehmen, dass dieses M…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.

Status und Modi prüfen

  • sestatus
  • getenforce

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
  • setenforce 0
Wechsel zu Enforcing
  • setenforce 1

Modus dauerhaft setzen

Änderungen werden wahrscheinlich in der Konfigurationsdatei /etc/selinux/config vorgenommen.

  • SELINUX=enforcing
  • SELINUX=permissive

Dateikontexte verwalten

Es ist zu vermuten, dass Dateien korrekte Typ-Labels (_t) benötigen, damit darauf zugegreifende Dienste autorisiert werden.

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

Booleans ermöglichen es wahrscheinlich, vordefinierte Richtlinien zur Laufzeit ein- oder auszuschalten.

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

Wenn Dienste auf Nicht-Standard-Ports betrieben werden, müssen diese vermutlich im SELinux-Regelwerk registriert sein.

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

Es ist anzunehmen, dass Blockaden (AVC denials) im Audit-Log des Systems verzeichnet werden.

Logs nach aktuellen Blockaden durchsuchen
  • ausearch -m avc -ts recent
  • journalctl -t setroubleshoot
Analyse der Log-Einträge (setroubleshoot erforderlich)
  • 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

  • Es ist ratsam, SELinux im Modus 'enforcing' zu betreiben, um die Systemsicherheit zu gewährleisten.
  • Der Modus 'permissive' sollte mit hoher Wahrscheinlichkeit nur kurzzeitig zur Fehlersuche genutzt werden.
  • Die Verwendung von 'semanage fcontext' ist gegenüber 'chcon' zu bevorzugen, damit Labels bei einem Dateisystem-Relabeling erhalten bleiben.
  • Vor der Erstellung eigener Module sollte geprüft werden, ob ein passender Boolean existiert.
  • Ein vollständiges Relabeling des Dateisystems kann bei Bedarf über 'touch /.autorelabel' beim nächsten Systemstart initiiert werden.