Seminarinhalt
Dieses Training wird auf einem aktuellen RHEL/Rocky System durchgeführt.
Programm
- Interpretation des SELinux Context Types
- Standardverhalten beim verschieben einer Datei mit mv
- Standardverhalten beim kopieren einer Datei mit cp
- Einfluss des restorecond auf unsere Label
- SELinux Optionen bei mv, cp, mkdir, tar, rsync
Extended (File) Attributes (xattr)
- Verfügbare Namespaces (security, system, trusted, user)
- Verwaltung mit getfattr, setfattr
- Syscall Analyse mit strace (stat, fstat, statx, getxattr, lgetxattr, fgetxattr, ...)
- Sichern und wiederherstellen der Extended Attributes mit tar
- Kopieren der Extended Attributes mit rsync
Security Context Verwaltung
- Context setzen mit chcon
- Category und Sensitivity Label setzen mit chcat
File Context Verwaltung
- Verhalten bei Dateisystemen mit und ohne xattr Unterstützung
- Mount Optionen für SELinux (context=, defcontext=, fs,context=, rootcontext=)
Context Expressions
- File Contexte anzeigen
- Aufbau der File Context Regeln (regex, class, label)
- Context Expressions Prioritätsregeln
- Context Analyse mit matchpathcon
Security Context (fcontext) einer Datei ändern
- chcon vs. semanage
- Definieren von neuen Regeln in der Policy
- Reparieren von falsch gesetzten Labeln
- Äquivalenz Regeln definieren
- restorecon und SHA256 digests
- Hash Überprüfung mit restorecon_xattr
- Restorecon Aussnahmen bei customizable types
- /etc/selinux/targeted/contexts/files/
- Lokale Änderungen exportieren/importieren mit semanage
- Setzen und Reparieren von Kontexten mit setfiles
- Reparieren von Kontexten mit fixfiles (check, restore, relabel, onboot)
Named File Transitions Rules
- Problematik von manuell gesetzen Kontexten
- File vs. Named File Transitions Rules
- /etc/selinux/restorecond.conf
- /etc/selinux/restorecond_user.conf
Systemd und Temporäre Verzeichnisse
- Datei und Verzeichnis Erstellung durch Systemd
- SELinux Context setzen via systemd-tmpfiles
strace und SELinux Context Printing
- Context Abfrage bei Prozessen analysieren
SELinux und Benutzer Login
- SELinux Context von Benutzern
- SELinux User und SELinux Role Mapping im Detail
- Analyse mit seinfo
- SELinux Roles in der Targeted Policy im Detail (Aufgaben, Fähigkeiten, ...)
- Auswirkung der SELinux Role auf die Prozess Domain
- Linux User <-> SELinux User Mapping
- Service spezifische Role Zuweisung
- Praktische Übungen mit SELinux User und Roles
- Erstellen eines eigenen SELinux Users
- Linux Benutzer mit/ohne SELinux User Zuweisung löschen
Verwalten von Kategorien
- Planen und definieren von eigenen MCS Categories
- Übersetzungen mit setrans und mcstransd erstellen
- chcon vs. chcat
- Kategorien mit chcat auf Dateien, Verzeichnissen und Benutzern verwalten
Arbeiten mit SELinux Roles
- Standard Role definieren
- /etc/selinux/targeted/contexts/default_contexts
- Boolean Anpassungen für SELinux Roles
- Wechseln zwischen erlaubten Roles mit newrole
- sudo und SELinux Roles
- SELinux spezifische Parameter bei sudo Regeln
- Benutzer Programme via runcon mit unterschiedlichen Kontexten starten
Pluggable Authentication Modules (PAM)
- Grundlagen PAM Architektur
- pam_selinux.so
- pam_sepermit.so
- pam_namespace.so
- pam_oddjob_mkhomedir.so
Prozess Context im Detail
- Grundlagen allow Rule
- Grundlagen Prozess Context
- Übergang zu einer Domäne
- Memory Protection
- Limitieren von (ungewollten) Domain Transitions
- Policy capabilities
- No New Privilege (NNP)
- Type Attributes
- Abfragen von Domain Permissions
- Constraints
SELinux und Ansible
- Einrichten eines schnellen Ansible Roles Basissetups
- Dateisystem und SELinux Context
- SELinux Custom Policy verteilen
- Überblick Ansible native SELinux Module
SELinux und Salt
- Einrichten eines schnellen Salte State Basissetups
- Dateisystem und SELinux Context
- SELinux Custom Policy verteilen
- Überblick SaltStack native SELinux Module
SELinux und Container
- Podman Container Basis Test
- Podman und SELinux Multi-Category Security (MCS) Verhalten
- Podman Volumes und SELinux MCS Context Probleme
- Shared Volume mit richtigen MCS Context versehen
- Container Domain Transition
- Analyse von erlaubten domain Transition mit sesearch
- Container mit definierten Process Domain anstarten
- Domain Transition unconfined_t vs. spc_t
- Eigene Container Policy mit udica erstellen