Container härten: So bekommst du Docker und Podman sicher in den Griff
Die größte Angriffsfläche schleppt dein Basis-Image mit, nicht die Anwendung. Ein schlankes Image, ein nicht-privilegierter Benutzer und regelmäßige Scans erledigen den Großteil, lange bevor du an Laufzeit-Policies denkst.
Warum Härtung beim Container an anderer Stelle ansetzt als beim Host
Auf einem klassischen Server weißt du, wo du ansetzt: Dienste abschalten, nftables konfigurieren, SELinux im Enforcing-Modus betreiben, Updates einspielen. Bei Containern verschiebt sich ein großer Teil dieser Verantwortung nach vorne in das Image und nach hinten in die Runtime. Ein Image, das vor acht Monaten gebaut wurde, enthält den Patch-Stand von vor acht Monaten, unabhängig davon, wie gut der Host gepflegt ist. Und ein Container, der mit --privileged oder mit gemountetem Docker-Socket startet, hebelt die Isolation weitgehend aus, egal wie sauber das Image war.
Typisch sind immer wieder dieselben Muster. Der Prozess im Container läuft als root, weil das Basis-Image keinen USER setzt und niemand es nachgeholt hat. Als Basis dient ein vollständiges Distributionsimage mit Paketmanager, Shell und Build-Werkzeugen, obwohl die Anwendung ein statisches Binary ist. Secrets landen als ARG oder als Umgebungsvariable im Layer und lassen sich später aus dem Image herauslesen. Container hängen alle im Default-Bridge-Netz und können sich gegenseitig erreichen. Das Rootfs ist beschreibbar, Capabilities werden nicht reduziert, und ob ein Prozess zur Laufzeit plötzlich eine Shell startet, merkt niemand.
Der Druck kommt inzwischen nicht mehr nur aus dem Betrieb. NIS2 und der Cyber Resilience Act stellen Anforderungen an Schwachstellenmanagement und an die Nachvollziehbarkeit der Software-Lieferkette. Damit wird die Frage, welche Komponenten in welcher Version in einem ausgelieferten Image stecken, von einer Fleißaufgabe zu einer Nachweispflicht. Eine SBOM pro Build und ein reproduzierbarer Scan-Bericht sind dann keine Kür mehr.
Härtungskette vom Image bis zur Laufzeit
- 01 Basis-Image minimieren und pinnen
- 02 Build ohne Secrets, Multi-Stage
- 03 Scan und SBOM als Gate
- 04 Rootless und Capabilities reduziert
- 05 Admission-Policies im Cluster
- 06 Runtime-Erkennung und Alarme
Die Kette vom Basis-Image bis zur Laufzeit
Container-Härtung funktioniert nur als durchgehende Kette. Jede Stufe entfernt einen Teil der Angriffsfläche, und keine einzelne Stufe ersetzt die anderen. Die folgenden Schritte kannst du unabhängig voneinander einführen und schrittweise verschärfen.
Basis-Image klein und nachvollziehbar halten
Wähle ein minimales Basis-Image, distroless oder Alpine für kompilierte Anwendungen, ein schlankes Distributionsimage dort, wo du wirklich Systempakete brauchst. Baue mit Multi-Stage-Builds, damit Compiler und Build-Abhängigkeiten nicht im Endergebnis landen, und pinne Basis-Images per Digest statt per beweglichem Tag. Rebuilds gehören in einen regelmäßigen Rhythmus, sonst veraltet der Patch-Stand im Image still vor sich hin.
Nicht als root laufen und rootless betreiben
Setze im Dockerfile ein explizites USER mit einer festen UID und stelle sicher, dass die Anwendung ohne Schreibrechte im Systemverzeichnis auskommt. Auf Hostseite ist der rootless Betrieb der größere Hebel: Podman läuft rootless von Haus aus über User-Namespaces, Docker bietet den Rootless Mode an. Damit endet ein Ausbruch aus dem Container nicht direkt bei root auf dem Host.
Runtime-Optionen restriktiv setzen
Read-Only-Rootfs mit gezielten tmpfs-Mounts für Schreibpfade, alle Capabilities per --cap-drop ALL entfernen und nur die wirklich benötigten zurückgeben, no-new-privileges setzen, seccomp- und AppArmor- beziehungsweise SELinux-Profile aktiv lassen statt sie mit unconfined abzuschalten. Dedizierte Netze pro Anwendungsgruppe verhindern, dass jeder Container jeden anderen erreicht. Den Docker-Socket in einen Container zu mounten ist praktisch gleichbedeutend mit root auf dem Host.
Schwachstellen und SBOM in der Pipeline
Ein Scan im Build-Job liefert dir CVEs zu Betriebssystempaketen und Anwendungsabhängigkeiten, bevor das Image überhaupt in die Registry kommt. Trivy erzeugt in einem Durchlauf Scan-Ergebnis und SBOM im CycloneDX- oder SPDX-Format, prüft zusätzlich IaC-Dateien und Kubernetes-Manifeste und lässt sich über Exit-Codes und Schweregrad-Schwellen als Gate einsetzen. Wichtig ist eine bewusste Regel für unfixed CVEs, sonst gewöhnt sich das Team an rote Builds.
Policies statt Absprachen im Cluster
In Kubernetes hältst du die Härtung über Pod Security Admission und einen Policy-Engine wie Kyverno durch: kein privilegierter Pod, kein hostPath, kein hostNetwork, runAsNonRoot erzwungen, nur Images aus der eigenen Registry, idealerweise mit Signaturprüfung. Der Vorteil gegenüber Review-Absprachen ist, dass die Regel auch dann greift, wenn nachts jemand ein Manifest anpasst.
Erkennung zur Laufzeit
Statische Prüfungen sehen nicht, was im laufenden Betrieb passiert. Falco wertet Syscalls über ein Kernel-Modul oder eBPF aus und schlägt an, wenn in einem Container eine Shell gestartet wird, sensible Dateien gelesen werden oder unerwartete ausgehende Verbindungen entstehen. Entscheidend ist das Tuning der Regeln auf die eigenen Workloads, sonst ertrinkt das Team in Fehlalarmen und schaltet die Alarme irgendwann stumm.
Kurse zu Container-Härtung bei cmt
Diese Kurse vertiefen genau das, an echten Systemen statt nur an Folien. Als Präsenz oder Live-Online, auf Wunsch auch Inhouse für dein Team.
Teste dich und finde deinen Weg
Bevor du einen Kurs buchst, lohnt sich eine ehrliche Standortbestimmung. Die Tests sind kostenlos und ohne Anmeldung.
Häufige Fragen zu Container-Härtung
Noch etwas offen? Wir sind ohne Warteschleife für dich da.
Frag uns direktIst Podman rootless sicherer als Docker?
Reicht ein Image-Scan aus, um Container abzusichern?
Was bringt eine SBOM konkret?
Wie viele Alarme erzeugt Falco am Anfang?
Brauche ich SELinux oder AppArmor noch, wenn ich Container nutze?
Quellen
Zuletzt geprüft am 26. Juli 2026.
Verwandte Linux-Themen
Alle Linux-Themen im ÜberblickPasst dazu: KI-Kompetenzcenter: Einstieg, Beratung und Kurse
Echte Stimmen aus unseren IT-Kursen
Es war eine sehr gute Lernatmosphäre und der Trainer verstand sein Thema sehr gut.
Sehr kompetenter Dozent der gut auf alle Fragen eingegangen ist.
Deine Ansprechpartner
Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.
Yves Hoppe
Weiterbildung & Beratung
Hilft dir, aus dem Linux-Programm den passenden Kurs oder Lernpfad zu finden.
Norbert Jansen
Beratung & Inhouse
Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.
Container-Härtung mit uns durchgehen
Wenn du die Kette im eigenen Umfeld aufbauen willst, findest du bei cmt die passenden Bausteine: der Linux Container Workshop mit Docker und Podman für Grundlagen und Runtime-Optionen, die Trivy Schulung für Scans, SBOM und Pipeline-Gates, die Kyverno Schulung für Policies im Cluster und die Falco-Schulung für Runtime Security. Wer den Zertifizierungsweg gehen möchte, ist mit CKS oder LFS460 Kubernetes Security Fundamentals richtig. Alle Kurse gibt es als Präsenztermin, Live-Online oder als Inhouse-Variante mit deinen eigenen Images. Sag uns kurz, wo ihr heute steht, dann schlagen wir dir eine sinnvolle Reihenfolge vor.