Zum Inhalt springen

Seminar/Linux/SELinux: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(55 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Übersicht ==
== Inhalte ==
{| class="wikitable gnu options big col1center col3center"
{| class="wikitable gnu options big col1center col3center"
! Nr !! Thema !! Gewichtung
! Kapitel !! Thema !! Gewichtung
|-
|-
| 1 || [[#Security Context auf Dateien und Verzeichnissen|Security Context auf Dateien und Verzeichnissen]] || 1
| 01 || [[Linux/SELinux/Grundlagen|Einführung]] || 1  
|-
|-
| 2 || [[#Extended (File) Attributes (xattr)|Extended (File) Attributes (xattr)]] || 1
| 02 || [[Linux/SELinux/Dateien|Security Context auf Dateien und Verzeichnissen]] || 1
|-
|-
| 3 || [[#Security Context Verwaltung|Security Context Verwaltung]] || 1
| 03 || [[Linux/SELinux/Extended File Attributes|Extended File Attributes]] || 1
|-
|-
| 4 || [[#File Context Verwaltung|File Context Verwaltung]] || 1
| 04 || [[Linux/SELinux/Security Context|Security Context]] || 1
|-
|-
| 5 || [[#Context Expressions|Context Expressions]] || 1
| 05 || [[Linux/SELinux/File Context|File Context]] || 1
|-
|-
| 6 || [[#Security Context (fcontext) einer Datei ändern|Security Context (fcontext) einer Datei ändern]] || 1
| 06 || [[Linux/SELinux/Context Expressions|Context Expressions]] || 1
|-
|-
| 7 || [[#Named File Transitions Rules|Named File Transitions Rules]] || 1
| 07 || [[Linux/SELinux/Security Context von Datei|Security Context von Datei]] || 1
|-
|-
| 8 || [[#Systemd und Temporäre Verzeichnisse|Systemd und Temporäre Verzeichnisse]] || 1
| 08 || [[Linux/SELinux/Named File Transitions Rules|Named File Transitions Rules]] || 1
|-
|-
| 9 || [[#strace und SELinux Context Printing|strace und SELinux Context Printing]] || 1
| 09 || [[Linux/SELinux/Systemd und Temporäre Verzeichnisse|Systemd und Temporäre Verzeichnisse]] || 1
|-
|-
| 10 || [[#SELinux und Benutzer Login|SELinux und Benutzer Login]] || 1
| 10 || [[Linux/SELinux/strace context printing|strace context printing]] || 1
|-
|-
| 11 || [[#Verwalten von Kategorien|Verwalten von Kategorien]] || 1
| 11 || [[Linux/SELinux/Benutzer Login|Benutzer Login]] || 1
|-
|-
| 12 || [[#Arbeiten mit SELinux Roles|Arbeiten mit SELinux Roles]] || 1
| 12 || [[Linux/SELinux/Kategorien|Kategorien]] || 1
|-
|-
| 13 || [[#Pluggable Authentication Modules (PAM)|Pluggable Authentication Modules (PAM)]] || 1
| 13 || [[Linux/SELinux/Rollen|Rollen]] || 1
|-
|-
| 14 || [[#Prozess Context im Detail|Prozess Context im Detail]] || 1
| 14 || [[Linux/SELinux/Pluggable Authentication Modules|PAM]] || 1
|-
|-
| 15 || [[#SELinux und Ansible|SELinux und Ansible]] || 1
| 15 || [[Linux/SELinux/Prozess Context|Prozess Context]] || 1
|-
|-
| 16 || [[#SELinux und Salt|SELinux und Salt]] || 1
| 16 || [[Linux/SELinux/Ansible|SELinux und Ansible]] || 1
|-
|-
| 17 || [[#SELinux und Container|SELinux und Container]] || 1
| 17 || [[Linux/SELinux/Salt|SELinux und Salt]] || 1
|-
| 18 || [[Linux/SELinux/Container|SELinux und Container]] || 1
|}
|}


== Security Context auf Dateien und Verzeichnissen ==
* 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) ==
{{DISPLAYTITLE:Seminar/SELinux}}


* Verfügbare Namespaces (security, system, trusted, user)
[[Kategorie:Seminar/Linux]]
* Verwaltung mit getfattr, setfattr
[[Kategorie:Seminar/Sicherheit]]
* Syscall Analyse mit strace (stat, fstat, statx, getxattr, lgetxattr, fgetxattr, ...)
[[Kategorie:Linux/SELinux]]
* Sichern und wiederherstellen der Extended Attributes mit tar
* Kopieren der Extended Attributes mit rsync


== Security Context Verwaltung ==
= Seminartage =
== Tag 1 ==
; Grundlagen
Grundlagen & Security Context


* Context setzen mit chcon
=== Ziel ===
* Category und Sensitivity Label setzen mit chcat
Verstehen, wie SELinux funktioniert und wie Kontexte aufgebaut sind


== File Context Verwaltung ==
=== Ergebnis ===
Aufbau von SELinux-Kontexten verstehen , lesen und interpretieren


* Verhalten bei Dateisystemen mit und ohne xattr Unterstützung
=== Inhalte ===
* Mount Optionen für SELinux (context=, defcontext=, fs,context=, rootcontext=)
* Einführung in SELinux – Nutzen und typische Einsatzszenarien
* Security Context auf Dateien und Verzeichnissen
* Interpretation des SELinux Context Types
* Extended (File) Attributes (xattr) – Namespaces, Verwaltung mit getfattr/setfattr
* Syscall-Analyse mit strace (stat, fstat, getxattr, )
* Standardverhalten bei mv und cp
* Einfluss von restorecond auf Labels
* SELinux Optionen bei mv, cp, mkdir, tar, rsync


== Context Expressions ==
== Tag 2 ==
; Context und Policies
File Context Verwaltung & Security Context Policies


* File Contexte anzeigen
=== Ziel ===
* Aufbau der File Context Regeln (regex, class, label)
Kontexte gezielt setzen, verwalten und reparieren
* Context Expressions Prioritätsregeln
* Context Analyse mit matchpathcon


== Security Context (fcontext) einer Datei ändern ==
=== Ergebnis ===
File Contexts korrekt setzen, Policies anpassen und fehlerhafte Labels systematisch reparieren.


* chcon vs. semanage
=== Inhalte ===
* Definieren von neuen Regeln in der Policy
* Context setzen mit chcon, semanage, setfiles, fixfiles
* Reparieren von falsch gesetzten Labeln
* File Context Regeln – Aufbau, Regex, Prioritätsregeln
* Äquivalenz Regeln definieren
* Context Expressions und matchpathcon
* restorecon und SHA256 digests
* Reparieren von falsch gesetzten Labels mit restorecon (inkl. SHA256 digests)
* Hash Überprüfung mit restorecon_xattr
* Äquivalenzregeln definieren
* Restorecon Aussnahmen bei customizable types
* Named File Transition Rules
* /etc/selinux/targeted/contexts/files/
* Mount-Optionen für SELinux (context=, defcontext=, fscontext=, rootcontext=)
* Systemd und temporäre Verzeichnisse – Context via systemd-tmpfiles
* Lokale Änderungen exportieren/importieren mit semanage
* 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 ==
== Tag 3 ==
; Benutzer, Rollen, Container und Automatisierung


* Problematik von manuell gesetzen Kontexten
=== Ziel ===
* File vs. Named File Transitions Rules
SELinux in realen Betriebsumgebungen professionell einsetzen
* /etc/selinux/restorecond.conf
* /etc/selinux/restorecond_user.conf


== Systemd und Temporäre Verzeichnisse ==
=== Ergebnis ===


* Datei und Verzeichnis Erstellung durch Systemd
=== Inhalte ===
* SELinux Context setzen via systemd-tmpfiles
* SELinux User & Role Mapping im Detail
* Linux User - SELinux User Zuordnung
* Erstellen eigener SELinux User
* Arbeiten mit SELinux Roles (newrole, sudo, runcon)
* Verwalten von MCS Categories (chcat, setrans, mcstransd)
* Pluggable Authentication Modules (PAM): pam_selinux, pam_sepermit, pam_namespace
* Prozess Context, Domain Transitions, Memory Protection, NNP
* SELinux & Ansible – native Module, Custom Policy verteilen
* SELinux & Salt – native Module, Custom Policy verteilen
* SELinux & Container – Podman, MCS, Volumes, udica
* Eigene Container Policy mit udica erstellen


== strace und SELinux Context Printing ==
== Blocks ==
=== Tag 1 ===
Grundlagen, Security Context und Dateikontexte


* Context Abfrage bei Prozessen analysieren
; Block 1. Grundlagen und Kontextmodell


== SELinux und Benutzer Login ==
* 01 - [[Linux/SELinux/Grundlagen|Einführung]]
:* Nutzen und typische Einsatzszenarien
:* Grundprinzipien von SELinux


* SELinux Context von Benutzern
* 02 - [[Linux/SELinux/Security Context|Security Context]]
* SELinux User und SELinux Role Mapping im Detail
:* Aufbau des Security Context
* Analyse mit seinfo
:* SELinux User, Role, Type und Level
* SELinux Roles in der Targeted Policy im Detail (Aufgaben, Fähigkeiten, ...)
:* Lesen und Interpretieren von Context-Komponenten
* 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 ==
; Block 2. Dateien, Verzeichnisse und Kontextspeicherung
* 03 - [[Linux/SELinux/Dateien|Security Context auf Dateien und Verzeichnissen]]
:* Context auf Dateien, Verzeichnissen und Symlinks
:* Unterschiede bei Objektklassen


* Planen und definieren von eigenen MCS Categories
* 04 - [[Linux/SELinux/Extended File Attributes|Extended File Attributes]]
* Übersetzungen mit setrans und mcstransd erstellen
:* Speicherung von Labels in xattr
* chcon vs. chcat
:* Namespaces und Werkzeuge
* Kategorien mit chcat auf Dateien, Verzeichnissen und Benutzern verwalten


== Arbeiten mit SELinux Roles ==
* 05 - [[Linux/SELinux/Security Context von Datei|Security Context von Datei]]
:* Kontext eines konkreten Objekts prüfen
:* Zusammenhang zwischen Objekt und Label


* Standard Role definieren
* 06 - [[Linux/SELinux/strace context printing|strace context printing]]
* /etc/selinux/targeted/contexts/default_contexts
:* Relevante Syscalls
* Boolean Anpassungen für SELinux Roles
:* Sicht auf Context-Zugriffe im Laufzeitverhalten
* 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) ==
=== Tag 2 ===
;
'''File Contexts, Regeln und Label-Management'''
;
; Block 1. File Context Regeln und Ausdrücke
* 07 - [[Linux/SELinux/File Context|File Context]]
:* Unterschied zwischen Label und File-Context-Regel
:* Standardzuweisung und persistente Regeln
* 08 - [[Linux/SELinux/Context Expressions|Context Expressions]]
:* Regex-basierte Regeln
:* Auswertung und Priorität
* 09 - [[Linux/SELinux/Named File Transitions Rules|Named File Transitions Rules]]
:* Benannte Übergangsregeln
:* Context-Vergabe bei der Objekterzeugung


* Grundlagen PAM Architektur
; Block 2. Verwaltung, Reparatur und temporäre Verzeichnisse
* pam_selinux.so
* 10 - [[Linux/SELinux/Systemd und Temporäre Verzeichnisse|Systemd und Temporäre Verzeichnisse]]
* pam_sepermit.so
:* Context-Vorgaben mit ''systemd-tmpfiles''
* pam_namespace.so
:* Temporäre Verzeichnisse und Laufzeitobjekte
* pam_oddjob_mkhomedir.so
:* Zusammenhang mit persistenter Label-Verwaltung


== Prozess Context im Detail ==
=== Tag 3 ===
;
'''Benutzer, Rollen, Laufzeitverhalten und Integration'''
;
; Block 1: Benutzer, Rollen und Anmeldung
* 11 - [[Linux/SELinux/Benutzer Login|Benutzer Login]]
:* Login-Kontext
:* Zuordnung Linux User zu SELinux User
* 12 - [[Linux/SELinux/Kategorien|Kategorien]]
:* MCS-Kategorien
:* Bereichs- und Kategoriezuordnung
* 13 - [[Linux/SELinux/Rollen|Rollen]]
:* Rollenmodell
:* Rollenwechsel und Rechteabgrenzung
* 14 - [[Linux/SELinux/Pluggable Authentication Modules|PAM]]
:* ''pam_selinux''
:* ''pam_sepermit''
:* ''pam_namespace''


* Grundlagen allow Rule
; Block 2. Prozesse, Automatisierung und Container
* Grundlagen Prozess Context
* 15 - [[Linux/SELinux/Prozess Context|Prozess Context]]
* Übergang zu einer Domäne
:* Prozess-Context und Domains
* Memory Protection
:* Domain Transitions
* Limitieren von (ungewollten) Domain Transitions
:* Laufzeitverhalten und Schutzmechanismen
* Policy capabilities
* No New Privilege (NNP)
* Type Attributes
* Abfragen von Domain Permissions
* Constraints


== SELinux und Ansible ==
* 16 - [[Linux/SELinux/Ansible|SELinux und Ansible]]
:* Native Module
:* Verteilen von SELinux-Konfiguration


* Einrichten eines schnellen Ansible Roles Basissetups
* 17 - [[Linux/SELinux/Salt|SELinux und Salt]]
* Dateisystem und SELinux Context
:* Native Module
* SELinux Custom Policy verteilen
:* Verteilen von SELinux-Konfiguration
* Überblick Ansible native SELinux Module


== SELinux und Salt ==
* 18 - [[Linux/SELinux/Container|SELinux und Container]]
 
:* Podman, MCS und Volumes
* Einrichten eines schnellen Salte State Basissetups
:* Eigene Container-Policy mit ''udica''
* 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

Aktuelle Version vom 27. März 2026, 10:22 Uhr

Inhalte

Kapitel Thema Gewichtung
01 Einführung 1
02 Security Context auf Dateien und Verzeichnissen 1
03 Extended File Attributes 1
04 Security Context 1
05 File Context 1
06 Context Expressions 1
07 Security Context von Datei 1
08 Named File Transitions Rules 1
09 Systemd und Temporäre Verzeichnisse 1
10 strace context printing 1
11 Benutzer Login 1
12 Kategorien 1
13 Rollen 1
14 PAM 1
15 Prozess Context 1
16 SELinux und Ansible 1
17 SELinux und Salt 1
18 SELinux und Container 1

Seminartage

Tag 1

Grundlagen

Grundlagen & Security Context

Ziel

Verstehen, wie SELinux funktioniert und wie Kontexte aufgebaut sind

Ergebnis

Aufbau von SELinux-Kontexten verstehen , lesen und interpretieren

Inhalte

  • Einführung in SELinux – Nutzen und typische Einsatzszenarien
  • Security Context auf Dateien und Verzeichnissen
  • Interpretation des SELinux Context Types
  • Extended (File) Attributes (xattr) – Namespaces, Verwaltung mit getfattr/setfattr
  • Syscall-Analyse mit strace (stat, fstat, getxattr, …)
  • Standardverhalten bei mv und cp
  • Einfluss von restorecond auf Labels
  • SELinux Optionen bei mv, cp, mkdir, tar, rsync

Tag 2

Context und Policies

File Context Verwaltung & Security Context Policies

Ziel

Kontexte gezielt setzen, verwalten und reparieren

Ergebnis

File Contexts korrekt setzen, Policies anpassen und fehlerhafte Labels systematisch reparieren.

Inhalte

  • Context setzen mit chcon, semanage, setfiles, fixfiles
  • File Context Regeln – Aufbau, Regex, Prioritätsregeln
  • Context Expressions und matchpathcon
  • Reparieren von falsch gesetzten Labels mit restorecon (inkl. SHA256 digests)
  • Äquivalenzregeln definieren
  • Named File Transition Rules
  • Mount-Optionen für SELinux (context=, defcontext=, fscontext=, rootcontext=)
  • Systemd und temporäre Verzeichnisse – Context via systemd-tmpfiles
  • Lokale Änderungen exportieren/importieren mit semanage

Tag 3

Benutzer, Rollen, Container und Automatisierung

Ziel

SELinux in realen Betriebsumgebungen professionell einsetzen

Ergebnis

Inhalte

  • SELinux User & Role Mapping im Detail
  • Linux User - SELinux User Zuordnung
  • Erstellen eigener SELinux User
  • Arbeiten mit SELinux Roles (newrole, sudo, runcon)
  • Verwalten von MCS Categories (chcat, setrans, mcstransd)
  • Pluggable Authentication Modules (PAM): pam_selinux, pam_sepermit, pam_namespace
  • Prozess Context, Domain Transitions, Memory Protection, NNP
  • SELinux & Ansible – native Module, Custom Policy verteilen
  • SELinux & Salt – native Module, Custom Policy verteilen
  • SELinux & Container – Podman, MCS, Volumes, udica
  • Eigene Container Policy mit udica erstellen

Blocks

Tag 1

Grundlagen, Security Context und Dateikontexte

Block 1. Grundlagen und Kontextmodell
  • Nutzen und typische Einsatzszenarien
  • Grundprinzipien von SELinux
  • Aufbau des Security Context
  • SELinux User, Role, Type und Level
  • Lesen und Interpretieren von Context-Komponenten
Block 2. Dateien, Verzeichnisse und Kontextspeicherung
  • Context auf Dateien, Verzeichnissen und Symlinks
  • Unterschiede bei Objektklassen
  • Speicherung von Labels in xattr
  • Namespaces und Werkzeuge
  • Kontext eines konkreten Objekts prüfen
  • Zusammenhang zwischen Objekt und Label
  • Relevante Syscalls
  • Sicht auf Context-Zugriffe im Laufzeitverhalten

Tag 2

File Contexts, Regeln und Label-Management

Block 1. File Context Regeln und Ausdrücke
  • Unterschied zwischen Label und File-Context-Regel
  • Standardzuweisung und persistente Regeln
  • Regex-basierte Regeln
  • Auswertung und Priorität
  • Benannte Übergangsregeln
  • Context-Vergabe bei der Objekterzeugung
Block 2. Verwaltung, Reparatur und temporäre Verzeichnisse
  • Context-Vorgaben mit systemd-tmpfiles
  • Temporäre Verzeichnisse und Laufzeitobjekte
  • Zusammenhang mit persistenter Label-Verwaltung

Tag 3

Benutzer, Rollen, Laufzeitverhalten und Integration

Block 1
Benutzer, Rollen und Anmeldung
  • Login-Kontext
  • Zuordnung Linux User zu SELinux User
  • MCS-Kategorien
  • Bereichs- und Kategoriezuordnung
  • Rollenmodell
  • Rollenwechsel und Rechteabgrenzung
  • pam_selinux
  • pam_sepermit
  • pam_namespace
Block 2. Prozesse, Automatisierung und Container
  • Prozess-Context und Domains
  • Domain Transitions
  • Laufzeitverhalten und Schutzmechanismen
  • Native Module
  • Verteilen von SELinux-Konfiguration
  • Native Module
  • Verteilen von SELinux-Konfiguration
  • Podman, MCS und Volumes
  • Eigene Container-Policy mit udica