In this article
Docker-Sicherheit – Herausforderungen und Best Practices
Docker-Sicherheit erklärt
Was ist Docker-Sicherheit?
Docker-Sicherheit umfasst den Schutz von Containern, Anwendungen, Host-Systemen und allem, was sonst mit Docker zusammenhängt. Containerisierung kann zwar die Anwendungssicherheit verbessern, doch besteht auch das Risiko von Fehlkonfigurationen, die Sicherheitslücken verursachen können. Mit bewährten Docker-Sicherheitspraktiken und automatisierten Sicherheitstools können Entwicklungsteams die Risiken von Docker-Containern reduzieren.
Warum ist Docker-Sicherheit wichtig?
Docker-Sicherheit ist entscheidend, da die meisten Unternehmen inzwischen Container zum Entwickeln und Bereitstellen von Anwendungen verwenden. Bei der großen Zahl von Containern in Produktionsumgebungen kann eine Schwachstelle in nur einem Container die Sicherheitslage der Anwendungen und Infrastruktur eines Unternehmens insgesamt beeinträchtigen. Deshalb ist es wichtig, Images auf Schwachstellen zu prüfen – sowohl die ursprünglichen Basis-Images als auch die hinzugefügten Pakete und Software –, potenzielle Fehlkonfigurationen zu erkennen, wirksame Runtime-Sicherheit umzusetzen und weitere Best Practices für die Docker-Sicherheit zu befolgen.
Container-Sicherheit für DevSecOps
Finden und beheben Sie Container-Schwachstellen kostenlos mit Snyk.
Herausforderungen bei der Docker-Sicherheit
Bei der Docker-Sicherheit gibt es fünf wichtige Bereiche, die berücksichtigt werden müssen:
Kernel-Funktionen
Der Kernel ist das Herzstück jedes Host-Systems: Er verwaltet die Interaktionen zwischen Hardware und Software. Da der Kernel weitreichende Kontrolle hat, beschränkt Docker die Funktionen, die jedem Container zugewiesen werden, auf das Notwendige. Dennoch besteht das Risiko, dass die einem Container zugewiesenen Funktionen und Volume-Mounts keine vollständige Isolation gewährleisten und dadurch die Angriffsfläche erheblich vergrößern.
Namespaces
Ein weiterer Aspekt der Docker- und Kernel-Sicherheit ist die Verwendung von Kernel-Namespaces, um Prozesse in Docker-Containern von anderen Containern und dem Host zu isolieren. Dies ist entscheidend, um Container-Ausbrüche zu verhindern und den möglichen Schaden zu begrenzen, den ein kompromittierter Container für die übrige Infrastruktur anrichten kann.
Angriffsfläche des Docker-Daemons
Der Docker-Daemon ist ein Hintergrundprozess, der alle Container auf einem einzelnen Host verwaltet. Da der Daemon Root-Rechte benötigt – sofern Sie nicht den Rootless-Modus verwenden –, sollte nur vertrauenswürdigen Benutzer:innen die Kontrolle über den Docker-Daemon selbst gestattet werden. So wird verhindert, dass Angreifer:innen beliebige Container mit erweiterten Berechtigungen auf dem Host-System starten.
Schwachstellen in der Container-Konfiguration
Docker-Container-Konfigurationen wie Dockerfiles zählen zu den häufigsten Ursachen für Sicherheitslücken, bieten aber zugleich eine der einfachsten Möglichkeiten, Risiken zu verringern. Mit automatisierten Scan-Tools können Entwicklungsteams Docker-Sicherheitsprobleme und Fehlkonfigurationen erkennen und beheben, bevor sie in die Produktionsumgebung gelangen.
Funktionen zur Kernel-Härtung
Neben der Konfiguration von Kernel-Funktionen und Namespaces gibt es weitere Kernel-Sicherheitsfunktionen, mit denen Sie einen Host härten und die Docker-Sicherheit verbessern können. So lässt sich ein Kernel beispielsweise mit grsecurity und PaX ausführen, um eine zusätzliche Sicherheitsebene einzuziehen. Die zusätzlichen Sicherheitsprüfungen dieser Lösungen können vor vielen Exploits schützen, ohne dass Änderungen an der Docker-Konfiguration erforderlich sind.
Tools zur Härtung der Docker-Sicherheit
Mit diesen vier Tools können Sie Ihre Docker-Deployments noch heute härten.
1. Snyk
Snyk ist ein Scan-Tool, das potenzielle Schwachstellen nicht nur in Ihren Container-Images, sondern auch im Anwendungscode und den Abhängigkeiten in Ihren Containern sowie in der Infrastructure as Code (IaC) für deren Bereitstellung automatisch erkennen kann. So können Entwicklungsteams die Docker-Sicherheit durchgängig mit einem einzigen Tool umsetzen.
2. AppArmor
AppArmor ist ein Linux-Anwendungssicherheitssystem, das das Betriebssystem und Anwendungen vor Bedrohungen schützt. Indem AppArmor anfällige Prozesse einschränkt, kann es den möglichen Schaden eines Exploits begrenzen.
3. SELinux
SELinux, kurz für Security-Enhanced Linux, ist eine Sicherheitsarchitektur für das Linux-Betriebssystem, die Administrator:innen mehr Kontrolle über Zugriffsrechte gibt. Mithilfe von Sicherheitsrichtlinien kann SELinux unbefugten Zugriff auf Anwendungen, Prozesse und Dateien auf einem Host-System verhindern.
4. grsecurity
grsecurity ist eine umfangreiche Sammlung von Patches für den Linux-Kernel. Sie erhöhen die Sicherheit, indem sie mithilfe intelligenter Zugriffskontrollen, Schutz vor Speicherbeschädigung und weiterer Techniken zur Systemhärtung vor Bedrohungen schützen. Im Gegensatz zu anderen Lösungen zur Kernel-Härtung ist grsecurity auf Zero-Day-Schwachstellen spezialisiert.
Best Practices für die Docker-Sicherheit
Best Practices für die Docker-Sicherheit lassen sich in vier Hauptbereiche einteilen:
Dockerfile-Sicherheit
Da Dockerfiles häufig Basis-Images aus öffentlichen Repositories verwenden, gehört die Auswahl sicherer Basis-Images von Anfang an dazu, die Docker-Sicherheit frühzeitig in den Entwicklungsprozess zu integrieren. Neben einem sicheren Basis-Image sollten Sie auch alle anderen Image-Abhängigkeiten kontinuierlich auf Schwachstellen prüfen. Sehen Sie sich unsere mit Docker erstellte Anleitung zu den 3 Schritten zur Container-Sicherheit an.
Docker-Runtime-Sicherheit
Während der Laufzeit ist es für die Sicherheit besonders wichtig, Container ausreichend zu isolieren und den Kernel des Hosts gegen potenzielle Bedrohungen zu härten. So lassen sich Container-Ausbrüche und Berechtigungsausweitungen verhindern, durch die Angreifer:innen die Kontrolle über den Host erlangen könnten.
Supply-Chain-Sicherheit
Wie bereits erwähnt, stammen viele Images aus öffentlichen Quellen wie Docker Hub oder anderen Container-Registries. Diese Images sollten vor ihrer Verwendung auf ausreichende Sicherheit und Vertrauenswürdigkeit geprüft werden. Das Signieren und Verifizieren von Images ist ebenfalls eine gute Möglichkeit, Man-in-the-Middle-Angriffe beim Pushen und Pullen von Registry-Images zu verhindern.
Sicherheit der Container-Orchestrierung
Die meisten containerisierten Anwendungen werden über eine Orchestrierungsplattform wie Kubernetes ausgeführt, die das Deployment einzelner Container verwaltet. Auch die Konfigurationsdateien für die Container-Orchestrierung sollten auf potenzielle Schwachstellen geprüft werden. Eine der wichtigsten Konfigurations-APIs für Pods und Container ist SecurityContext. Weitere Informationen dazu finden Sie in unserem Spickzettel: 10 Kubernetes-SecurityContext-Einstellungen, die Sie kennen sollten.
Weitere konkrete Tipps finden Sie in unserem Spickzettel zur Docker-Sicherheit: 10 Best Practices für die Docker-Sicherheit
Container-Sicherheit für DevSecOps
Finden und beheben Sie Container-Schwachstellen kostenlos mit Snyk.
Snyk für Docker-Sicherheit
Die umfassende Schwachstellen-Scan-Plattform von Snyk schützt alle Komponenten containerisierter Workloads – vom Anwendungscode und seinen Abhängigkeiten bis hin zu Containern und IaC-Konfigurationen. Tatsächlich wird der Befehl `docker scan` in der Docker CLI dank der ausgebauten Partnerschaft und den Integrationen zwischen beiden Ökosystemen von Snyk unterstützt.
Da die Softwarebranche zunehmend auf containerisierte Anwendungen setzt, arbeiten Snyk und Docker gemeinsam daran, die Entwicklung und Bereitstellung sicherer Container schneller und einfacher zu machen. Besuchen Sie https://snyk.co/SignUp, um mit der Absicherung Ihrer Container-Images zu beginnen: https://snyk.co/SignUp
Häufig gestellte Fragen zur Docker-Sicherheit
Stellt Docker ein Sicherheitsrisiko dar?
Docker selbst stellt kein Sicherheitsrisiko dar. Unternehmen sollten jedoch Vorsichtsmaßnahmen treffen, um sicherzustellen, dass ihre Container, Hosts und alle weiteren Komponenten im Zusammenhang mit Docker sicher konfiguriert sind. Dazu gehört, Dockerfiles beim Erstellen von Images abzusichern und während der Laufzeit die Sicherheit aller Komponenten zu gewährleisten, etwa von Netzwerk-Ports, Benutzerberechtigungen und dem Zugriff auf eingebundene Dateisysteme.
Wie sichern Sie Docker ab?
Die Absicherung von Docker erfordert einen ganzheitlichen Ansatz, der nicht nur den Container selbst, sondern auch dessen Inhalte (Quellcode und Abhängigkeiten), die für den Betrieb verwendeten Konfigurationen und vieles mehr umfasst. Mit wirksamen Sicherheitsmaßnahmen für jeden dieser Risikobereiche können Entwicklungsteams Docker sicher für die Bereitstellung geschäftskritischer Anwendungen nutzen.