GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

10 Best Practices für die Docker-Sicherheit

Einführung

Docker-Container und Kubernetes sind die treibende Kraft eines modernen Softwareentwicklungslebenszyklus. Obwohl Docker eine sicherere Option ist, als direkt auf dem Hostcomputer zu arbeiten, können viele potenzielle Sicherheitsprobleme beim Arbeiten mit Containern auftreten.

Dieser Artikel enthält zehn Best Practices für die Containersicherheit, mit denen Sie Angriffe und Sicherheitsverletzungen verhindern können.

1. Docker und Host regelmäßig aktualisieren

Stellen Sie sicher, dass Ihr Host und Docker auf dem neuesten Stand sind. Verwenden Sie die neueste Betriebssystemversion und Containerisierungssoftware, um Sicherheitslücken zu vermeiden. Jedes Update enthält kritische Sicherheitspatches, die für den Schutz des Hosts und der Daten unerlässlich sind.

Die Aktualisierung von Docker ist nicht auf die Plattform selbst beschränkt. Laufende Container werden nicht automatisch aktualisiert. Sie sollten auch Container und die Bilder, auf denen sie basieren, aktualisieren.

2. Ressourcenkontingente konfigurieren

Um gefährdete Container zu vermeiden, die Ressourcen übermäßig verbrauchen, legen Sie Docker-Speicher- und CPU-Nutzungslimits fest.

Ohne Ressourcenkontingente zu konfigurieren, gewähren Sie dem Container Zugriff auf die vollständigen RAM- und CPU-Ressourcen des Hosts. Da dies die Standardeinstellung ist, wird empfohlen, die Menge an Ressourcen zu begrenzen, die ein Container verwenden kann, damit andere Dienste nicht unterbrochen werden.

Dies verhindert nicht nur, dass ein Container alle Ressourcen verbraucht, sondern trägt auch dazu bei, eine Docker-Umgebung effizient zu halten. Ressourcenkontingente stellen sicher, dass Container mit der erwarteten Geschwindigkeit ausgeführt werden, und erhöhen die Sicherheit.

3. Verwenden Sie Nicht-Root-Benutzer

Docker ermöglicht es, einen Container im privilegierten Modus auszuführen. Auch wenn dies ein schnellerer Weg ist, einige Sicherheitsprotokolle zu umgehen, sollten Sie diese Vorgehensweise immer unterlassen.

Die Gefahr beim Ausführen eines privilegierten Containers besteht darin, dass er potenziellen böswilligen Aktivitäten Tür und Tor öffnet. Ein privilegierter Docker-Benutzer hat die gleichen Rechte wie der Root. Dies bedeutet, dass es Zugriff auf Kernelfunktionen und andere Geräte auf dem Host hat. Ein böswilliger Benutzer kann über den Container in Ihr Hostsystem eindringen und alles darauf gefährden.

Es ist einfach, sich ausschließlich an Nicht-Root-Benutzer zu halten, da dies die Standardeinstellungen von Docker sind. Um die Standardkonfiguration zu ändern, müssten Sie --privileged hinzufügen -Flag zum docker run Befehl. Dies stellt jedoch ein erhebliches Sicherheitsrisiko dar und sollte nicht genutzt werden.

4. Fähigkeiten einschränken

Container haben einen eingeschränkten Satz von Linux-Funktionen. Beispielsweise können sie einem Benutzer erlauben, einen Container mit Root-ähnlicher Effizienz, aber ohne volle Root-Rechte auszuführen.

Die eingeschränkten Fähigkeiten von Docker sind die Standardsicherheitseinstellungen und sie sind für jeden Container gleich. Daher wird empfohlen, die Funktionen so zu ändern, dass sie nur das enthalten, was benötigt wird. Der Administrator verwaltet sie mit --cap-add und --cap-drop Optionen.

Die sicherste Methode zum Konfigurieren von Containerfunktionen besteht darin, alle zu entfernen (mithilfe der --cap-drop=ALL Option) und fügen Sie dann die erforderlichen hinzu.

Eine Liste aller Fähigkeiten und Abkürzungen finden Sie im Abschnitt Fähigkeiten der Linux-Manpage.

5. Neue Privilegien verbieten

Wie im obigen Beispiel zu sehen ist, erlaubt Docker, die Fähigkeiten und Berechtigungen von Containern zu ändern, nachdem sie gestartet wurden. Um Privilegien-Eskalationsangriffe zu verhindern, ist es eine gute Idee, Container-Privilegien zu definieren.

Um zu verhindern, dass Containerprozesse neue Berechtigungen erhalten, verwenden Sie --security-opt Flag mit dem Wert no-new-privileges:true . Hinzufügen des Flags zum docker run Der Befehl überschreibt alle Regeln, die Sie mit --cap-add festgelegt haben und --cap-drop Optionen..

Außerdem können Sie die setuid entfernen oder deaktivieren und setgid Binärdateien in den Bildern. Dadurch wird sichergestellt, dass die Funktion nicht für Path Traversal/Injection, Buffer Overruns und Privilege Escalation Attacks verwendet wird.

6. Vertrauenswürdige Bilder verwenden

Stellen Sie beim Abrufen eines Bildes aus Online-Registern sicher, dass es aus einer sicheren, vertrauenswürdigen Quelle stammt. Die sicherste Option ist das Festhalten am offiziellen Docker-Hub. Vermeiden Sie öffentliche Registrierungen von Drittanbietern, die keine Kontrollrichtlinien haben.

Wenn Sie Online-Bibliotheken verwenden, überprüfen Sie immer den Inhalt innerhalb des Bildes. Verwenden Sie außerdem Image-Scanning-Tools, um nach Schwachstellen zu suchen, bevor Sie etwas auf das Hostsystem herunterladen.

Schau am besten mal im Docker Hub vorbei und schaue, ob du dort das gewünschte Image findest. Es ist die weltweit größte Bibliothek und Community für Docker mit über 100.000 Container-Images.

7. Halten Sie Bilder und Container leicht

Minimieren Sie die Angriffsfläche von Docker-Containern, indem Sie ein minimales Basis-Image verwenden und die Anzahl der Containerkomponenten reduzieren. Eine kleine Bildgröße hilft, Sicherheitsverletzungen zu vermeiden und die Containerleistung zu beschleunigen.

Tipps zum Reduzieren der Bildgröße finden Sie unter How to Keep Docker Images Small.

8. Sichere Registrierungen

Eine Docker-Registrierung ist ein System zur Bereitstellung von Inhalten, das zum Speichern und Bereitstellen von Bildern für Ihre Container verwendet wird. Sie können die offizielle Online-Registrierung von Docker verwenden oder eine private Registrierung auf Ihrem Host einrichten.

Für eine Bildspeicherlösung auf Unternehmensebene sollten Sie die Docker Trusted Registry (DTR) verwenden . Sie können die Registrierung hinter Ihrer Firewall installieren, um potenzielle Sicherheitsverletzungen zu verhindern.

9. Machen Sie den Docker-Daemon-Socket nicht verfügbar

Docker kommuniziert mit einem UNIX-Domain-Socket namens /var/run/docker.sock . Dies ist der Haupteinstiegspunkt für die Docker-API. Jeder, der Zugriff auf den Docker-Daemon-Socket hat, hat auch uneingeschränkten Root-Zugriff.

Einem Benutzer erlauben, in /var/run/docker.sock zu schreiben oder die Buchse einem Behälter auszusetzen, ist ein großes Sicherheitsrisiko für den Rest des Systems. Dadurch erhält es im Wesentlichen Root-Rechte.

Das Mounten des Docker-Sockets in einem Container schränkt ihn nicht auf privilegierten Zugriff innerhalb des Containers ein. Es ermöglicht dem Container die vollständige Kontrolle über den Host und alle anderen Container. Daher ist dies keine empfohlene Vorgehensweise.

10. Überwachen Sie APIs und Netzwerkaktivitäten

APIs und Netzwerke spielen eine entscheidende Rolle bei der Docker-Sicherheit. Docker-Container kommunizieren über APIs und Netzwerke. Um ein Eindringen zu vermeiden, muss die Architektur daher sicher konfiguriert sein.

Sicherheitsadministratoren haben kürzlich einen neuen Angriffstyp entdeckt, der falsch konfigurierte Docker-APIs ausnutzt. Hacker nutzen schlecht konfigurierte APIs und Netzwerksicherheit, verwenden sie, um ein Image bereitzustellen, und führen einen schädlichen Container auf dem Hostsystem aus.

Neben der sicheren Einrichtung der Netzwerke und APIs müssen Sie auch Aktivitäten überwachen, um potenzielle Anomalien zu erkennen.


Docker
  1. Eine Einführung in Docker

  2. So führen Sie MySQL in einem Docker-Container aus

  3. Wie man SSH in einen Docker-Container einfügt

  4. Best Practices für die Sicherheit von Windows-Servern

  5. Best Practices für WordPress-Sicherheit unter Linux

10 Best Practices für die Datenbanksicherheit

Docker lernen:So erstellen Sie einen Docker-Container

So führen Sie PHPMyAdmin in einem Docker-Container aus

So führen Sie Grafana in einem Docker-Container aus

So richten Sie einen Apache Docker-Container ein

Ubuntu Server Setup – Best Practices für die Sicherheit