SELinux-cheat-sheet: Unterschied zwischen den Versionen
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…“) |
|||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Allgemeines == | == Allgemeines == | ||
| − | SELinux (Security-Enhanced Linux) implementiert | + | 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 == | ||
| − | |||
;Wechsel zu Permissive | ;Wechsel zu Permissive | ||
| Zeile 16: | Zeile 15: | ||
== Modus dauerhaft setzen == | == Modus dauerhaft setzen == | ||
| − | + | Konfiguration in der Datei: /etc/selinux/config | |
* SELINUX=enforcing | * SELINUX=enforcing | ||
* SELINUX=permissive | * SELINUX=permissive | ||
== Dateikontexte verwalten == | == Dateikontexte verwalten == | ||
| − | |||
;Kontexte anzeigen | ;Kontexte anzeigen | ||
| + | zeigt alle Prozesse mit Kontexten | ||
| + | * ps -eZ | ||
* ls -Z /pfad/zur/datei | * ls -Z /pfad/zur/datei | ||
| − | |||
;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 35: | Zeile 35: | ||
== Booleans verwenden == | == Booleans verwenden == | ||
| − | |||
;Alle Booleans anzeigen | ;Alle Booleans anzeigen | ||
| Zeile 47: | Zeile 46: | ||
== Ports verwalten == | == Ports verwalten == | ||
| − | |||
;Erlaubte Ports für einen Typ anzeigen | ;Erlaubte Ports für einen Typ anzeigen | ||
| Zeile 54: | 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 == | ||
| − | |||
| − | ;Logs nach aktuellen Blockaden 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 | ||
== Best Practices == | == Best Practices == | ||
| − | * | + | * Betrieb im Modus 'enforcing' sicherstellen. |
| − | * | + | * Modus 'permissive' nur zur Fehlersuche nutzen. |
| − | * | + | * 'semanage fcontext' gegenüber 'chcon' bevorzugen. |
| − | * Vor | + | * Vor Erstellung eigener Module prüfen, ob ein passender Boolean existiert. |
| − | * | + | * Relabeling des Dateisystems bei Bedarf: touch /.autorelabel |
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