Seminarinhalt
SELinux wurde maßgeblich von der NSA und Red Hat entwickelt und steht heute unter fast allen Linux Distributionen und auf Android ab v4.3 zur Verfügung. Zahlreiche Enterprise Distributionen wie Red Hat Enterprise Server werden sogar mit einem aktivierten SELinux ausgeliefert. Daher sollte jede*r Linux und Android Administrator*in gute SELinux Kenntnisse vorweisen können. Dieses Training wird auf einem aktuellen RHEL/Rocky System durchgeführt.
Programm
- Überblick Linux Access Control Systeme
- Discretionary Access Control (DAC)
- Role Based Access Control (RBAC)
- Schwachstellen des Standard DAC Models
Linux Kernel Security Modules (LSM) Framework
- Vorteile eines Mandatory Access Control (MAC) Systems
- Überblick LSM Module (SELinux, AppArmor, BPF, Capabilities, ...)
- LSM - Multi-Level Security (MLS)
- LSM - Multi-Category Security (MCS)
- LSM - Linux Capabilities (CAP_*)
- Aufgaben der wichtigsten Linux Capabilities
- Verwalten der Capabilities (setcap, getcap, pscap, netcap, pam_cap ...)
Security-Enhanced Linux (SELinux) Sicherheitsmodelle
- Sicherheisvorteile durch SELinux
- FLASK Security Architecture (Label, Object Manager, Security Server, AVC)
- Grundlagen SELinux Security Context (user:role:type:level)
- Arbeitsweise des Type Enforcements (TE)
- Probleme des Type Enforcements
- Arbeitsweise des Multi-Category Security (MCS) Enforcements
- Bell-LaPadula Modell
- Arbeitsweise des Multi-Level Security (MLS) Enforcements
- Einsatzgebiete von MLS und MCS
SELinux Grundlagen
- Verfügbare Software Pakete auf RHEL
- Verzeichnisstruktur und Konfigurationsdateien
- SELinux Policy Dokumentation
- Modul Ablagestruktur und Prioritäten
- SELinux Betriebsmodi (enforcing, permissive)
- Gängige Kommandos (seinfo, sestatus, getenforce, setenforce, ...)
- Access Vector Cache (AVC)
- SELinux Users, Roles und Prozess Domains
- Domain Transition und Domain Vererbung
Überblick Grafische Verwaltungswerkzeuge
- system-config-selinux
- sealert -b
- apol
Überblick Kommandozeilen basierende Verwaltung
- semanage (lgin, user, port, fcontext, boolean, ...)
- sestatus
- sesearch
- chcon
- restorecon
- seinfo
- getenforce
SELinux Security Context im Detail
- SELinux User
- SELinux Role
- SELinux Type
- SELinux Level (sensitivity:category)
- Domaintransition
- Security Contexte für Prozesse und Benutzer
- Aufbau von allow Rules (source, destination, class, permission
- Verwalten von MCS Kategorien mit chcat
- Übersetzen von Kategorien mit mcstransd
- Nachträgliches aktivieren von SELinux
Grundlagen Targeted Policy
- Manipulieren des SELinux Status
- Policy Module mit semodule Verwalten
- Lokale Anpassungen mit semanage exportieren und importieren
- Verwalten von Service Einstellungen mit Booleans
- Security Context (fcontext) einer Datei ändern
- Reparieren von falschen Labeln mit restorecon
- Reparieren von falschen Labeln mit fixfiles
- Aufbau und Analyse von Zugriffsverletzungen im Audit Log
- Arbeiten mit dontaudit Rules
- Boolean Regeln analysieren mit sesearch
Praktische Konfigurationsbeispiele
- Beispiel: Targeted Policy Confined Processes
- Beispiel: Targeted Policy Unconfined Processes
- Beispiel: Targeted Policy Permissive Mode einer Domain
- Beispiel: Targeted Policy und erlaubte Ports
- Beispiel: Targeted Policy Confined & Unconfined Users
- Beispiel: Targeted Policy und Apache Einstellungen
- Beispiel: Targeted Policy und vsftpd Einstellungen
- Beispiel: Targeted Policy und rsyslog Einstellungen