Hinweis perev. : Das Docker-Sicherheitsthema ist möglicherweise eines der ewigen in der heutigen IT-Welt. Daher präsentieren wir ohne weitere Erklärung die Übersetzung der nächsten Auswahl relevanter Empfehlungen. Wenn Sie sich bereits für dieses Problem interessiert haben, sind Ihnen viele davon bekannt. Und wir haben die Auswahl selbst durch eine Liste nützlicher Dienstprogramme und verschiedene Ressourcen zur weiteren Untersuchung des Problems ergänzt.
Hier ist eine Docker-Sicherheitsanleitung. Feedback ist willkommen, da es sich eher um eine Sammlung von Auszügen aus verschiedenen Quellen handelt und nicht alle gründlich geprüft wurden. Die Empfehlungen sind in drei Kategorien unterteilt:
- Notwendige Maßnahmen innerhalb des Host-Betriebssystems bei der Arbeit mit Docker;
- Anweisungen zur Assembly-Konfigurationsdatei und zum Erstellen von Containern;
- Sicherheitstools, die in bestimmte Docker Enterprise-Funktionen integriert werden können.
Eine Vielzahl von Ressourcen ist zur Grundlage für die Führung geworden, von denen viele nachstehend aufgeführt sind. Es kann nicht als erschöpfend bezeichnet werden, deckt jedoch alle Grundlagen ab. Weitere Informationen finden Sie in der Beschreibung der CIS-Tests (der Link befindet sich am Ende dieses Handbuchs) sowie in der Dokumentation zu Docker.
Docker-Sicherheitsbenchmark
Docker Bench for Security überprüft Ihren Docker automatisch auf Übereinstimmung mit den gängigsten Best Practices. Das Skript ist ein guter heuristischer Sicherheitstest, sollte jedoch nicht als umfassendes Analysewerkzeug betrachtet werden.
Host-Betriebssystem
Offensichtlich kann der Docker-Container nicht geschützt werden, wenn das Hostsystem selbst nicht geschützt ist. Daher müssen Sie die Best Practices im Bereich der Betriebssystemsicherheit befolgen. Darüber hinaus wäre es ratsam, zusätzlich zu den folgenden Empfehlungen eine Schwachstellenanalyse durchzuführen.
Prüfungsregeln
Erstellen und Verwenden von
auditctl
für mit Docker
auditctl
Dateien mithilfe von
auditctl
. Sie können beispielsweise
-w /usr/bin/dockerd -k docker
/etc/audit.rules
zu
/etc/audit.rules
und den
/etc/audit.rules
neu starten.
FIPS-Modus
Durch Aktivieren des FIPS-Modus werden kryptografische Tools gezwungen, auf die in FIPS
(American Federal Information Processing Standards - ca. übersetzt) eingeführten Algorithmen umzuschalten,
wodurch die Standards und Anforderungen von Bund und Industrie eingehalten werden. Wenn das Host-Betriebssystem den FIPS-Modus unterstützt, können Sie ihn aktivieren, indem Sie die folgenden Befehle ausführen:
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="fips=1 /g' /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg && reboot
Sie müssen FIPS auch in der Docker Engine aktivieren:
mkdir -p /etc/systemd/system/docker.service.d 2>&1; echo -e "[Service]\n Environment=\"DOCKER_FIPS=1\"" > /etc/systemd/system/docker.service.d/fips-module.conf; systemctl daemon-reload; systemctl restart docker
Weitere Informationen finden Sie in der
Docker- und
Red Hat- Dokumentation.
Docker Geheimnisse
Vertrauliche Daten sollten geheim gehalten werden. Sie können den entsprechenden Dienst mit dem Befehl docker service create starten:
docker service create --label com.docker.ucp.access.label=/prod --name nginx --publish 443 --secret source=orcabank_prod_mobile.ca.pem.v1,target=ca.pem nginx
Einzelheiten finden Sie in der
Dokumentation .
Docker-Konfigurationsdatei
Die folgenden Einstellungen können zur Konfigurationsdatei
/etc/docker/daemon.json
hinzugefügt
/etc/docker/daemon.json
:
Transportsicherheit
Nur Benutzer mit Zugriff auf die TLS-Client-Anmeldeinformationen sollten eine Verbindung zum Docker-Dämon herstellen können (falls Remotezugriff erforderlich ist).
Autorisierungs-Plugins
Entscheiden Sie, welche Benutzer welche Befehle ausführen dürfen, und erstellen Sie das entsprechende Autorisierungs-Plugin für Docker. Führen Sie dann den Docker-Daemon aus und fügen Sie das Plugin hinzu:
dockerd --authorization-plugin=PLUGIN_ID
Weitere Informationen zum Erstellen von Autorisierungs-Plugins finden Sie in der
Dokumentation .
Daemon-Optionen
Der Docker-Daemon arbeitet mit einer Reihe von Standardparametern.
--live-restore
- Diese Option reduziert die Ausfallzeit von Containern während des Herunterfahrens oder Neustarts des Systems. Es wird einfacher, sie mit minimalen Ausfallzeiten zu patchen oder zu aktualisieren.--userland-proxy=false
- Wenn Haarnadel-NATs verfügbar sind oder verwendet werden, wird der Proxy im Benutzerbereich zu einem redundanten Dienst, der nur die Anzahl möglicher Angriffsvektoren erhöht.--no-new-privileges
- verhindert, dass Container mithilfe von suid oder sguid zusätzliche Berechtigungen erhalten.--seccomp-profile /path/to/profile
- Wenn Sie ein eigenes seccomp-Profil haben, können Sie es mit diesem Flag verwenden. Erfahren Sie hier mehr über Seccomp und Docker.
Container und Assembly-Dateien konfigurieren
Benutzererstellung
Stellen Sie sicher, dass ein Benutzer für den Container erstellt wurde, und führen Sie ihn unter diesem Benutzer aus (führen Sie den Container NICHT unter root aus).
Fernzugriff
Verweigern Sie den Remotezugriff auf den Dämon. Wenn es immer noch notwendig ist, schützen Sie es mit Zertifikaten.
Isolieren Sie den Benutzernamenraum
Es ist besonders wichtig sicherzustellen, dass der Benutzernamenbereich in Docker isoliert ist, da er standardmäßig mit dem Hostnamenbereich geteilt wird. In einigen Fällen kann dies verwendet werden, um Berechtigungen zu erhöhen oder sogar um den Container zu verlassen. Sie können einen Benutzernamensraum isolieren, indem Sie die Konfigurationsdatei bearbeiten (wie oben im Abschnitt Docker-Konfigurationsdatei beschrieben). Eine zusätzliche Erwähnung dieses Problems ist auf seine Bedeutung zurückzuführen.
Gesundheitscheck
Healthcheck (Health Check) ist ein leistungsstarkes Tool zur Überprüfung der Containerintegrität. Es wird in der Docker-Datei mit der
HEALTHCHECK
HEALTHCHECK
HEALTHCHECK
. Mit Healthcheck können Sie überprüfen, ob der Container ordnungsgemäß funktioniert. Im folgenden Beispiel endet die Integritätsprüfung mit 0, wenn der Server ausgeführt wird, und 1, wenn er "abgestürzt" ist:
HEALTHCHECK CMD curl --fail http://localhost || exit 1
SELinux
Wenn SELinux vom Host-Betriebssystem unterstützt wird, erstellen oder importieren Sie eine SELinux-Richtlinie und führen Sie Docker im Daemon-Modus mit aktiviertem SELinux aus:
docker daemon --selinux-enable
In diesem Fall können Docker-Container mit Sicherheitseinstellungen gestartet werden, zum Beispiel:
docker run --interactive --tty --security-opt label=level:TopSecret centos /bin/bash
Netzwerkschnittstellen
Standardmäßig überwacht Docker alle Netzwerkschnittstellen. Da in den meisten Fällen nur auf einem von ihnen Verkehr erwartet wird, erhöht ein solcher Ansatz das Risiko eines Angriffs unangemessen. Daher können Sie beim Starten eines Containers seine Ports an bestimmte Schnittstellen auf dem Host binden:
docker run --detach --publish 10.2.3.4:49153:80 nginx
Zwischengespeicherte Bildversionen
Stellen Sie beim Herunterladen von Bildern sicher, dass der lokale Cache mit dem Inhalt des Repositorys übereinstimmt. Andernfalls erhalten Sie möglicherweise eine veraltete Version des Bildes oder ein Bild mit Schwachstellen.
Netzwerkbrücke
Das Standardnetzwerkmodell
docker0
ist anfällig für Angriffe wie ARP-Spoofing und MAC-Flooding. Um dieses Problem zu lösen, erstellen Sie eine Netzwerkbrücke gemäß Ihren Spezifikationen, wie
hier beschrieben.
Docker-Socket-Warnung
Werfen Sie niemals eine Docker-Steckdose in einen Behälter. Andernfalls kann der Container Docker-Befehle ausführen und daher mit dem Host-Betriebssystem kommunizieren und es steuern. Tu das nicht.
Docker Enterprise konfigurieren
Docker Vertrauen
Mit Docker Trust können Sie Schlüssel generieren, mit denen die kryptografische Integrität von Bildern überprüft werden kann. Docker-Vertrauensschlüssel können verwendet werden, um Docker-Images mit privaten Schlüsseln zu signieren, die durch öffentliche Schlüssel auf Notary Server überprüft werden. Weitere Informationen
hier . Das Aktivieren von Docker Trust in Enterprise Engine wird in
diesem Abschnitt der Dokumentation ausführlich beschrieben.
Vulnerability Scan
Docker Enterprise verfügt über einen integrierten Schwachstellenscanner, mit dem die CVE-Datenbank für Schwachstellen beim Offline-Scannen in Bildern heruntergeladen werden kann. Durch regelmäßiges Scannen von Bildern werden sie sicherer: Der Benutzer erhält sofort Warnungen vor gefundenen Sicherheitslücken. Weitere Informationen dazu finden Sie
hier .
Hinweis perev. : Es gibt auch Open Source-Schwachstellenscanner in Docker-Images, siehe Beispiele am Ende des Artikels.LDAP- und UCP-Integration
Universal Control Plane kann in LDAP integriert werden. Das Ergebnis wird ein vereinfachtes Authentifizierungssystem sein, um unnötige Duplikate zu vermeiden. Weitere Informationen hierzu finden Sie im Artikel In
ein LDAP-Verzeichnis integrieren .
Andere Materialien
Weitere Informationen zu den besten Sicherheitspraktiken von Docker finden Sie unter
docs.docker.com . Wir empfehlen außerdem,
Center for Internet Security-Tests für Docker herunterzuladen.
Bonus vom Übersetzer
Als logische Ergänzung zu diesem Artikel veröffentlichen wir eine Liste von
10 beliebten Open Source-Sicherheitstools in Docker . Es wurde aus
einem anderen Artikel entlehnt (verfasst von Bill Doerrfeld von Doerrfeld.io).
NB : Lesen Sie mehr über viele der hier genannten Projekte im Artikel „ 33+ Kubernetes Security Tools “.- Docker Bench for Security ist ein Skript, das bereits ganz am Anfang des Artikels erwähnt wurde und Docker-Container auf Übereinstimmung mit den gängigen Sicherheitspraktiken überprüft.

- Clair ist wahrscheinlich das beliebteste Dienstprogramm zur statischen Analyse von Schwachstellen in einem Container. Es verwendet zahlreiche CVE-Schwachstellendatenbanken (einschließlich Tracker von führenden Linux-Distributionen wie Red Hat, Debian, Ubuntu). Es bietet eine API für Entwickler und eine einfache Möglichkeit, Funktionen zu erweitern (durch Hinzufügen von "Treibern"). Es wird in der beliebten öffentlichen Registrierung von Container-Images (ähnlich dem Docker Hub) - Quay.io verwendet.
- Cilium ist eine Netzwerksicherheitslösung auf Kernel-Ebene, die auf der BPF-Technologie zur Filterung von Netzwerkpaketen basiert.
- Anchore ist ein CVE- basiertes Dienstprogramm zum Analysieren von Bildinhalten auf Sicherheitslücken. Darüber hinaus können Sie benutzerdefinierte Richtlinien anwenden (basierend auf verschiedenen Daten, einschließlich White / Black-Listen, Dateiinhalten usw.), um die Sicherheit von Containern zu bewerten.
- OpenSCAP Workbench ist ein komplettes Ökosystem zum Erstellen und Verwalten von Sicherheitsrichtlinien über Plattformen hinweg. Zum Überprüfen von Containern bietet es das
oscap-docker
. - Dagda ist ein Dienstprogramm zum Scannen von Docker-Containern auf Schwachstellen, Trojaner, Viren und Malware. CVE-Datenbanken umfassen OWASP-Abhängigkeitsprüfungen, Red Hat Oval-Datenbank und Exploit Database Exploit-Repository.
- Notar ist ein Framework zum Signieren von Docker-Images, das ursprünglich von Docker Inc erstellt wurde (und dann zur Entwicklung an CNCF übergeben wurde). Durch seine Verwendung können Sie Rollen delegieren und Verantwortlichkeiten auf Container verteilen sowie die kryptografische Integrität von Bildern überprüfen.
- Grafaes ist eine Metadaten-API zur Verwaltung interner Sicherheitsrichtlinien. Beispielsweise wird die Leistung von Containersicherheitsscannern verbessert. Shopify verwendet diese API, um Metadaten für seine 500.000 Bilder zu verwalten.
- Sysdig Falco ist ein Kubernetes-Dienstprogramm, das das Systemverhalten überwacht: Aktivitäten in Containern, auf Hosts und im Netzwerk. Ermöglicht das Konfigurieren kontinuierlicher Überprüfungen in der Infrastruktur, das Erkennen von Anomalien und das Senden von Warnungen an Linux-Systemaufrufe.
- Der Banyanops Collector ist ein weiteres Tool zur statischen Bildanalyse von Docker-Containern. Ermöglicht das "Durchsuchen" der Bilddateien, das Sammeln der erforderlichen Daten, das Anwenden der erforderlichen Richtlinien usw.
Eine weitere gute Auswahl praktischer Tipps , um Docker sicherer zu machen, finden Sie in
diesem Aqua Security-
Artikel . Viele ihrer Tipps überschneiden sich mit den oben bereits erwähnten, aber es gibt andere. Beispielsweise schlagen die Autoren Überwachungsaktivitäten in Containern vor und geben an, worauf bei der Verwendung von Docker Swarm zu achten ist.
Für diejenigen, die sich im vergangenen Jahr eingehender mit diesem Thema befassen möchten, wurde das
Buch „ Docker Security: Quick Reference “ veröffentlicht , von dem Fragmente hier frei verfügbar
sind .
Um einige Aspekte der Docker-Sicherheit in der Praxis kennenzulernen: Seccomp-Profile und die Verwendung der Funktionen des Linux-Kernels in Containern können Sie die entsprechenden
Laborarbeiten an der Ressource Play with Docker * durchführen - siehe Abschnitt Sicherheit.
* Wir haben vor zwei Jahren über diese Ressource gesprochen , und im November 2018 passierte eine sehr interessante (aus Sicherheitsgründen) Geschichte. Kurz gesagt, Spezialisten von CyberArk Software Ltd. es geschafft, es zu knacken: um die Fähigkeit zu erreichen, Befehle außerhalb der Container auszuführen, d.h. auf dem Host-System. Ein gutes Beispiel für Sicherheitsprobleme in Docker, oder? Lesen Sie alle Details darüber, was hier passiert ist .PS vom Übersetzer
Lesen Sie auch in unserem Blog: