Docker-Sicherheit: 14 Best Practices zur Sicherung von Docker-Containern

Docker-Sicherheit: 14 Best Practices zur Sicherung von Docker-Containern

  • Sicherheit
6 Minuten Lesezeit Aktualisiert Feb 19, 2021

Auf einen Blick: Die Sicherung von Docker-Containern ist unerlässlich, um eine resiliente IT-Umgebung aufrechtzuerhalten. Empfohlene Praktiken umfassen die Verwendung vertrauenswürdiger Minimalbasis-Images, regelmäßige Aktualisierung von Docker-Versionen und die Implementierung von Least-Privilegd-Nutzerzugriffen, um Schwachstellen zu verringern.

  • Halte magere Behälter aufrecht, indem du ungenutzte Komponenten entfernst.
  • Scanne regelmäßig Docker-Images nach Schwachstellen und Updates.

Die Containerisierung von Anwendungen beinhaltet das Paketieren von Anwendungscode in einem virtuellen Container mit seinen Abhängigkeiten – den erforderlichen Bibliotheken, Frameworks und Konfigurationsdateien. Dieser Ansatz unterstützt Portabilität und arbeitet konsistent über verschiedene Rechenumgebungen und Infrastrukturen hinweg, ohne an Effizienz zu verlieren.

Eine besonders beliebte Containerplattform ist Docker. Organisationen nutzen Docker zur Entwicklung von Anwendungen, die sind:

  • Effizient optimiert
  • Hochskalierbar
  • Tragbar
  • Agile

Durch seine leichtgewichtigen Laufzeitumgebungen teilen Docker-Container zugrundeliegende Betriebssysteme, um Anwendungen zu hosten, die eine DevOps-Umgebung unterstützen. Als entscheidendes Element des Cloud-Native-Frameworks bringt Docker zahlreiche Vorteile für Ihren Softwareentwicklungszyklus (SDLC). Doch diese Vorteile sind nicht ohne Risiko. Sie werden wahrscheinlich mit Komplexitäten konfrontiert sein, insbesondere bei der Sicherung des Docker-Frameworks.

Standardmäßig sind Docker-Container sicher. Es ist jedoch unerlässlich, mögliche Schwachstellen zu kennen, um einen Ansatz zu verfolgen, der potenzielle Sicherheitsrisiken schützt.

In diesem Artikel betrachten wir daher die Best Practices zur Sicherung einer Docker-basierten Architektur in drei Schlüsselbereichen:

  • Infrastruktur
  • Bilder
  • Zugriff und Authentifizierung

Fangen wir an.

(

Best Practices für Docker-Sicherheit

Sicherung der Docker-Infrastruktur

Container sind virtualisierte Einheiten, die Anwendungen hosten können. Dazu enthalten Container:

  • Code-Binärdateien
  • Konfigurationsdateien
  • Verwandte Abhängigkeiten

Da Container die Grundlage eines cloudnativen Setups bilden, ist deren Schutz vor potenziellen Angriffsvektoren eine entscheidende Aktivität während des gesamten Containerlebenszyklus. Ein ganzheitlicher Ansatz zur Absicherung eines solchen Frameworks besteht darin, nicht nur den Docker-Container, sondern auch seine zugrundeliegende Infrastruktur zu schützen.

Lassen Sie uns den besten Ansatz zur Sicherung der Infrastruktur analysieren und sehen, wie sie funktioniert.

Aktualisieren Sie Ihre Docker-Version regelmäßig

Zuerst einmal: Stellen Sie sicher, dass Ihre Docker-Version auf dem neuesten Stand ist. Veraltete Versionen sind anfällig für Sicherheitsangriffe. Neue Versionen enthalten oft Patches und Fehlerbehebungen , die Schwachstellen älterer Versionen beheben.

Dasselbe gilt für die Host-Umgebung: Stellen Sie sicher, dass unterstützende Anwendungen aktuell und frei von bekannten Fehlern oder Sicherheitslücken sind.

Halte magere und saubere Behälter

Eine erweiterte Containerumgebung erweitert die Angriffsfläche und ist vergleichsweise anfälliger für Sicherheitsverletzungen als Lean-Setups. Um dies zu vermeiden, konfigurieren Sie Ihre Container so, dass sie nur die notwendigen Komponenten enthalten, die sie so funktionieren, wie Sie es beabsichtigt haben:

  • Softwarepakete
  • Bibliotheken
  • Konfigurationsdateien

Außerdem überprüfen Sie routinemäßig Host-Instanzen auf ungenutzte Container und Basisimages und verwerfen Sie diejenigen, die nicht genutzt werden.

APIs und Netzwerk konfigurieren

Docker Engine verwendet HTTP-APIs , um über ein Netzwerk zu kommunizieren. Schlecht konfigurierte APIs bergen Sicherheitslücken, die Hacker ausnutzen können.

Um dies zu vermeiden, schützen Sie Ihre Container, indem Sie die API sicher konfigurieren, sodass sie nicht öffentlich zugänglich gemacht werden. Ein Ansatz besteht darin, die verschlüsselte Kommunikation durch Zertifikatsbasierte Authentifizierung zu erzwingen.

(Erfahren Sie mehr Informationen zur Sicherung von Docker-APIs.)

Begrenzung der Nutzung von Systemressourcen

Setzen Sie eine Begrenzung für den Anteil der Infrastrukturressourcen, die jeder Container nutzen kann. Diese Infrastrukturressourcen umfassen:

  • CPU
  • Erinnerung
  • Netzwerkbandbreite

Docker verwendet Kontrollgruppen, die die Zuteilung und Verteilung von Ressourcen zwischen den verschiedenen Prozessen einschränken. Dieser Ansatz verhindert, dass ein kompromittierter Container übermäßige Ressourcen verbraucht, die im Falle einer Sicherheitsverletzung die Serviceerbringung stören könnten.

Isolierung des Wirts aufrechterhalten

Führen Sie Container mit unterschiedlichen Sicherheitsanforderungen auf verschiedenen Hosts aus.

Die Aufrechterhaltung der Isolierung von Containern über verschiedene Namespaces dient dazu, kritische Daten vor einem ausgewachsenen Angriff zu schützen. Dieser Ansatz verhindert auch, dass verrauschte Nachbarn übermäßige Ressourcen durch poolbasierte Isolierung verbrauchen, was die Dienste anderer Container beeinträchtigt.

Containerfähigkeiten einschränken

Standardmäßig können Docker-Container zusätzliche Rechte verwalten und erwerben, die möglicherweise nicht notwendig sind, um die Kerndienste auszuführen.

Als Best Practice sollten Sie die Berechtigungen eines Containers auf das beschränken, was für die Ausführung seiner Anwendungen erforderlich ist. Dazu verwenden Sie den Befehl, um alle Rechte des Docker-Containers zu entfernen:

    $ docker run --cap-drop ALL

Anschließend fügen Sie dem Container mit dem --cap-add-Flag spezifische Rechte hinzu. Dieser Ansatz schränkt Docker-Container darin ein, unnötige Rechte zu erhalten, die bei Sicherheitsverletzungen ausgenutzt werden.

Filtersystemaufrufe

Wenden Sie Systemaufruffilter an, die es Ihnen ermöglichen, zu entscheiden, welche Aufrufe von Containern auf den Linux-Kernel ausgeführt werden können.

Dieser Ansatz ermöglicht einen sicheren Rechenmodus und reduziert so mögliche Expositionspunkte, um Sicherheitsmissgeschicke zu vermeiden – insbesondere um die Ausnutzung von Kernel-Schwachstellen zu verhindern.

Sicherung von Docker-Images

Kommen wir nun zu Sicherheits-Best Practices jenseits der Infrastruktur.

Docker-Images sind Vorlagen mit ausführbarem Code, die zur Erstellung von Containern und zum Hosten von Anwendungen verwendet werden. Ein Docker-Image besteht aus Laufzeitbibliotheken und dem Root-Dateisystem – was das Image zu einer der wichtigsten Grundlagen eines Docker-Containers macht.

Hier sind einige Best Practices, die Sie bei der Sicherung von Docker-Images beachten sollten.

Verwenden Sie ein vertrauenswürdiges Image

Holen Sie sich Docker-Base-Images nur von vertrauenswürdigen Quellen , die aktuell und korrekt konfiguriert sind.

Stellen Sie außerdem sicher, dass Docker-Bilder korrekt signiert sind, indem Sie die Funktion Docker Content Trust aktivieren, um ungesicherte fragwürdige Quellen herauszufiltern.

Scannen Sie die Bilder regelmäßig

Es ist entscheidend, ein robustes Sicherheitsprofil von Docker-Images aufrechtzuerhalten und sie regelmäßig auf Schwachstellen zu scannen. Tun Sie dies zusätzlich zum ersten Scan, bevor Sie ein Image herunterladen, um sicherzustellen, dass es sicher zu verwenden ist.

Mit regelmäßigen Bildscans können Sie die Belichtung auch minimieren, indem Sie Folgendes tun:

  • Prüfung kritischer Dateien und Verzeichnisse
  • Sie halten sie mit den neuesten Sicherheitspatches auf dem neuesten Stand

Bevorzuge minimale Basisabbildungen

Vermeiden Sie die Verwendung größerer , generischer Docker-Bilder gegenüber kleineren, um Sicherheitslücken zu minimieren. Dies bietet zwei wertvolle Ergebnisse:

  • Verringert die Angriffsfläche
  • Beseitigt Standardkonfigurationen, die anfälliger für Hacks sind

Zugriffs- und Authentifizierungsmanagement

Die letzte Kategorie für Docker-Sicherheit umfasst Zugriff und Authentifizierung.

Die Sicherung von Docker Daemon durch Access Control wird oft als Anwendung der ersten Sicherheitsschicht bezeichnet. Ohne Docker Daemon zu sichern, ist alles immer verwundbar:

  • Die zugrunde liegenden Operationen
  • Anwendungen
  • Geschäftstätigkeiten

Implementierung des am wenigsten privilegierten Benutzers

Standardmäßig haben Prozesse innerhalb von Docker-Containern Root-Rechte , die ihnen administrativen Zugriff sowohl auf den Container als auch auf den Host gewähren. Dadurch werden Container und der zugrundeliegende Host Sicherheitslücken ausgesetzt, die Hacker ausnutzen könnten.

Um diese Schwachstellen zu vermeiden, richten Sie einen am wenigsten privilegierten Benutzer ein, der nur die notwendigen Rechte zum Betrieb von Containern gewährt. Alternativ sollten Laufzeitkonfigurationen eingeschränkt werden, die die Nutzung eines privilegierten Benutzers verbieten.

Verwenden Sie ein Secrets-Management-Tool

Speichere niemals Geheimnisse in einer Dockerfile, die es einem Benutzer mit Zugriff auf die Dockerfile ermöglichen könnten, die Sicherheit eines gesamten Frameworks zu verlegen, zu missbrauchen oder zu gefährden.

Standardbewährte Vorgehensweise ist es, Schlüsselgeheimnisse sicher in Drittanbieter-Tools wie dem Hashicorp Vault zu verschlüsseln. Denselben Ansatz können Sie auch für andere Containergeheimnisse über Zugriffszugangsdaten hinaus verwenden.

Begrenze den direkten Zugriff auf Containerdateien

Transiente Container erfordern konsistente Upgrades und Fehlerbehebungen. Daher werden solche Containerdateien bei jedem Zugriff eines Benutzers offengelegt.

Als Best Practice sollten Sie Containerprotokolle außerhalb des Containers führen. Dies reduziert die konstante direkte Nutzung von Containerdateien drastisch. Es ermöglicht Ihrem Team außerdem, Probleme zu beheben, ohne auf Logs innerhalb eines Containerverzeichnisses zuzugreifen.

Verschlüsselte Kommunikation aktivieren

Beschränken Sie den Zugriff von Docker Daemon auf nur eine Handvoll Schlüsselbenutzer. Zusätzlich sollten Sie den direkten Zugriff auf Containerdateien begrenzen, indem Sie SSH-exklusiven Zugriff für allgemeine Nutzer erzwingen.

Verwenden Sie TLS-Zertifikate zur Verschlüsselung der Kommunikation auf Hostebene. Es ist außerdem wichtig, ungenutzte Ports zu deaktivieren und Standardports nur für den internen Gebrauch freizustellen.

Die Sicherung von Docker sichert Ihre IT-Umgebung

Sicherheit in einer IT-Landschaft ist eine entscheidende Aufgabe, die Sie niemals übersehen sollten.

Um ein cloud-natives Framework zu sichern, besteht der erste Schritt immer darin, die Schwachstellen der wichtigsten Elemente Ihres Frameworks zu berücksichtigen. Daher sollten Organisationen ein robustes Sicherheitsprofil pflegen, das sich auf Container und deren zugrundeliegende Infrastruktur konzentriert.

Obwohl die Ansätze zur Umsetzung von End-to-End-Sicherheit unterschiedlich sein können, besteht das Ziel immer darin, verwundbare Punkte zu berücksichtigen und bewährte Praktiken zu übernehmen, die Risiken mindern.

Verwandte Literatur

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Sicherheit

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.