Seminarinhalt
Aufbauend auf dem Training SELinux 1 beschäftigen wir uns in diesem Training mit der praktischen Umsetzung von SELinux. Neben einem viel tieferen Verständnis der Arbeitsweise von SELinux erlernen wir auch den täglichen Umgang auf einem mit SELinux abgesicherten System. Die Teilnehmer*innen erlernen dabei intensiv den praktischen Einsatz von vielen SELinux Diagnose Werkzeugen, um das komplette Policy Regelwerk besser zu verstehen bzw. an die eigenen Bedürfnisse anzupassen.
Dieses Training wird auf einem aktuellen RHEL/Rocky System durchgeführt.
Dieses Training wird auf einem aktuellen RHEL/Rocky System durchgeführt.
Programm
Security Context auf Dateien und Verzeichnissen
Extended (File) Attributes (xattr)
Security Context Verwaltung
File Context Verwaltung
Context Expressions
Security Context (fcontext) einer Datei ändern
Named File Transitions Rules
Systemd und Temporäre Verzeichnisse
strace und SELinux Context Printing
SELinux und Benutzer Login
Verwalten von Kategorien
Arbeiten mit SELinux Roles
Pluggable Authentication Modules (PAM)
Prozess Context im Detail
SELinux und Ansible
SELinux und Salt
SELinux und Container
- 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
Zielgruppen
Linux Adminstrator*innen
Vorkenntnisse
Dieses Training richtet sich an alle Teilnehmer*innen mit Administrationserfahrungen im SELinux Bereich, wie sie in unserem Kurs "SELinux 1 - Grundlagen und Administration" vermittelt werden.