Hardening Maßnahmen
Neben der Mount-Strategie werden die Container zusätzlich durch verschiedene Docker- und Linux-Sicherheitsoptionen eingeschränkt.
Diese Maßnahmen reduzieren die Angriffsfläche und begrenzen die Auswirkungen fehlerhafter oder kompromittierter Container.
Reduzierte Linux Capabilities
Abschnitt betitelt „Reduzierte Linux Capabilities“Container erhalten standardmäßig alle Linux Capabilities. Diese werden bewusst entfernt, um unnötige Kernel-Zugriffe zu verhindern.
compose.yml
cap_drop: - ALLDamit stehen dem Container nur noch die minimal notwendigen Rechte zur Verfügung.
Verhindern von Privilege Escalation
Abschnitt betitelt „Verhindern von Privilege Escalation“Die Option no-new-privileges verhindert, dass Prozesse innerhalb des Containers zusätzliche Rechte erhalten.
compose.yml
security_opt: - no-new-privileges=trueDies schützt vor Mechanismen zur Rechteausweitung und ist unabhängig von der Vermeidung privilegierter Container.
Read-only Root Filesystem
Abschnitt betitelt „Read-only Root Filesystem“Ein read-only Root Filesystem verhindert Änderungen am Container-Dateisystem.
compose.yml
read_only: trueDadurch sind Schreibzugriffe nur noch über explizite Mounts möglich. Diese Maßnahme reduziert persistente Seiteneffekte und erhöht die Isolation.
Begrenzung der Prozessanzahl
Abschnitt betitelt „Begrenzung der Prozessanzahl“Die maximale Anzahl gleichzeitig laufender Prozesse kann begrenzt werden.
compose.yml
pids_limit: 512Dies schützt vor unkontrollierter Prozess-Erzeugung.
Nutzung eines Init-Prozesses
Abschnitt betitelt „Nutzung eines Init-Prozesses“Ein Init-Prozess innerhalb des Containers sorgt für korrektes Prozesshandling.
compose.yml
init: trueDadurch werden Zombie-Prozesse vermieden und Signale korrekt weitergeleitet.
Netzwerk-Einschränkungen
Abschnitt betitelt „Netzwerk-Einschränkungen“Einzelne Container können vollständig ohne Netzwerk betrieben werden.
compose.yml
network_mode: noneDies wird beispielsweise für Initialisierungs-Container verwendet, die keinen Netzwerkzugriff benötigen.
Nicht-root Benutzer
Abschnitt betitelt „Nicht-root Benutzer“Container laufen nach Möglichkeit nicht als root Benutzer.
compose.yml
user: nodeDies reduziert die Auswirkungen möglicher Sicherheitsprobleme innerhalb des Containers.