T-Systems-Claim-Logo
Suchen
Abstrakt dargestellter Datenfluss in blauen Linien mit einem Sicherheitsschloss auf der rechten Bildhälfte.

FAQ: So verbessern Sie Ihre Sicherheit mit Docker Bench

Lesen Sie unsere häufig gestellten Fragen dazu, wie Sie Ihre Docker-Sicherheit verstärken können, wenn Sie Docker Bench ausführen

28. April 2022Madhu Kumar Yeluri

Best Practices für die Sicherheit von Docker-Containern

Ein zentrales Thema Cloud-nativer Sicherheit ist, mögliche Risiken der Container möglichst früh anzugehen. Erfolgt dies zu spät, verlangsamt sich die Cloud-Einführung und es entstehen Risiken in puncto Sicherheit und Compliance. Werden Docker zur Containerisierung von Anwendungen und Services genutzt, birgt dies Sicherheitsvorteile. Dennoch gilt es, während der Konfiguration sicherheitsbezogene Verbesserungen an der Standard-Docker-Installation vorzunehmen.

Was ist Docker Bench for Security?

Ein Mann sitzt vor einem Laptop auf welchen Codierungen zu sehen sind. Er zeigt auf den Bildschirm.

Docker Bench for Security ist ein Skript, das nach Dutzenden Best Practices für die Bereitstellung von Docker-Containern in der Produktion sucht. Alle Tests sind automatisiert und basieren auf der CIS Docker Benchmark v1.3.1.

Was spricht für Docker Bench for Security?

Die Verwendung des Skripts Docker Bench for Security hilft Unternehmen, Schwachstellen in der Sicherheit ihres Docker-Hosts zu finden und diese zu beseitigen. Dank der Docker security können Unternehmen frühzeitig auf Warnmeldungen reagieren, indem sie das Skript bearbeiten. So verstärken sie ihren Host und können Sicherheitslücken schließen.

Auch wenn ein gutes Resultat stets erstrebenswert ist, sollten Sie bedenken, dass Docker Bench für Workloads in der Produktion ausgelegt ist. Nicht alle Checks sind für die lokale Docker-Installation eines Entwicklers relevant. Führen Sie das Skript aus, lesen Sie die Warnungen und beurteilen Sie, welche für Ihre Container-Umgebung gelten.

Wie funktioniert Docker Bench for Security? 

Docker Bench for Security scannt den Docker-Host auf gängige Konfigurationsprobleme, wie unsichere Einstellungen in Konfigurationsdateien und Systemrechten sowie fragwürdige Standardeinstellungen. Das Tool nutzt eine CVE-Datenbank mit häufigen Schwachstellen und Risiken, um die Bibliotheken und ausführbaren Programme in dem jeweiligen System zu prüfen. Ein Beispiel für die Ausgabe der Ergebnisse solcher Checks sehen Sie in Bild 1 im Download zu diesen FAQ.

Wo erhalte ich Zugriff auf Docker Bench for Security?

Sie können das Tool hier herunterladen und ausführen.

Wie führe ich Docker Bench for Security aus?

Sie können dieses Skript von Ihrem Basishost aus starten, indem Sie Folgendes ausführen:

git clone https://github.com/docker/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh

Was ist die einfachste Möglichkeit für die Ausführung mit Docker?

Der einfachste Weg Docker Bench for Security auszuführen ist, diesen vorgefertigten Container zu nutzen:

Vergessen Sie nicht, die geteilten Volumes gemäß Ihrem Betriebssystem anzupassen.

docker run --rm --net host --pid host --userns host --cap-add
audit_control \
    -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
    -v /etc:/etc:ro \
    -v /usr/bin/containerd:/usr/bin/containerd:ro \
    -v /usr/bin/runc:/usr/bin/runc:ro \
    -v /usr/lib/systemd:/usr/lib/system:ro \
    -v /var/lib:/var/lib:ro \
    -v /var/run/docker.sock:/var/run/docker.sock:ro \
    --label docker_bench_security \
    docker/docker-bench-security

Welche Sicherheitsoptionen bietet Docker Bench?

Standardmäßig führt das Skript Docker Bench for Security alle verfügbaren CIS-Tests aus und erstellt Protokolle im Protokollordner aus dem aktuellen Verzeichnis namens docker-bench-security.log.json und docker-bench-security.log. Dabei ist json ein einfaches Datenaustauschformat.

Wird der Docker-Container verwendet, werden die Protokolldateien innerhalb des Containers erstellt, unter /usr/local/bin/log/. Wenn Sie nach der Ausführung des Containers vom Host aus auf diese zugreifen wollen, müssen Sie ein Volume für deren Speicherung einbinden. Unten sehen Sie die Optionen für Docker Bench for Security:

-b        optional   Do not print colors
   -h                      optional print this help message
    -l  FILE             optional Log output in FILE,  inside container if run 
using docker
   -u USERS          optional Comma delimited list of trusted docker
usere (s)
   -c CHECK         optional Comma delimited list of specific check (s)   id
   -e CHECK         optional Comma delimited list of specific check (s)   id
to exclude
   -i INCLUDE       optional Comma delimited list of patterns within a
container or image name to check   
   -x EXCLUDE     optional Comma delimited list of patterns within a
container or image name to exclude from check
   -n LIMIT            optional In JSON output, when reporting list of items
(containers, images, etc.) , limit the number of reported items to
LIMIT, Default  0 (no limit) .
   -p PRINT          optional Disable the printing of remediation measures,
Default : print remediation measures.

Wie führe ich Docker Bench für ein bestimmtes Docker-Image aus?

Docker Bench Security Grafik

Geben Sie vom Docker-Bench-Security-Verzeichnis folgenden Befehl:

./docker-bench-security.sh -i hello-world

Die Ausgabe dazu sehen Sie in Bild 2 im Download zu diesen FAQ. Am Ende jedes Scans wird eine Wertung angezeigt. Administratoren können die Wertungen aus Docker Bench for Security über einen längeren Zeitraum verfolgen, um Verbesserungen kenntlich zu machen. Je höher die Scan-Wertung, desto besser.

Wie aktiviere ich die Überprüfung für Docker-Dateien?

Docker empfiehlt die Verwendung einer Prüfung auf Systemebene für zentrale Docker-Verzeichnisse. Bei der Überprüfung werden alle Vorgänge protokolliert, die sich auf die überwachten Dateien und Verzeichnisse auswirken, wobei potenziell gefährliche Änderungen verfolgt werden können. Stellen Sie sicher, dass Sie Auditd installiert haben.

Geben Sie ein: Edit /etc/audit/audit.rules , fügen Sie die Zeilen (zu sehen in Bild 3 im Download für diese FAQ) unten in der Datei ein.

Die Anweisung -p wa bedeutet, dass Auditd Schreibvorgänge und Attributs Änderungen mit Auswirkungen auf die Dateien protokolliert. Wenn die Ausgabe aus Docker Bench eine Überprüfung zusätzlicher Verzeichnisse nahelegt, fügen Sie diese zu der Liste hinzu. Die Docker-Verzeichnisse können sich im Laufe der Zeit ändern. Sie müssen Auditd neu starten, um Ihre Änderungen zu aktivieren:

sudo systemctl restart auditd

Wie führe ich einen Scan auf Schwachstellen für lokale Docker-Images durch?

Schwachstellen-Scans mit „Docker Scan“ für lokale Docker-Images ermöglichen Entwicklern und deren Teams, den Sicherheitszustand der Container-Images zu überprüfen. So können die Teams Maßnahmen zur Behebung von Problemen zu ergreifen, die während des Scans erkannt wurden. Das wiederum führt zu einer sichereren Umgebung. Docker Scan läuft auf der Snyk-Engine und liefert Benutzern Einblicke in die Sicherheitslage ihrer lokalen Docker-Dateien und lokalen Images. Ein Beispiel für die Ausgabe eines Schwachstellen-Scans finden Sie in Bild 4.

Sie erhalten pro Monat die folgenden kostenlosen Scans:

  • Scans auf lokale Schwachstellen: 10 Scans
  • Scans auf lokale Schwachstellen mit Snyk: 200 Scans

Für weitere Informationen besuchen Sie:

Wie kann ich Docker-Container-Images auf Schwachstellen scannen?

Sie können Grype verwenden, einen Vulnerability-Scanner für Container-Images und Dateisysteme. Installieren Sie einfach das Binary und probieren Sie es aus. Grype arbeitet mit Syft, dem leistungsfähigen SBOM-Tool (Software Bill of Materials) für Container-Images und Dateisysteme.

Wie installiere ich Grype?

Grype ist derzeit nur für macOS und Linux verfügbar. Im Download zu diesen FAQ finden Sie in Bild 5 und 6 die Installationsanweisungen (empfohlen und Homebrew) sowie in Bild 7 ein Beispiel einer Ausgabe eines Schwachstellen-Scans.

Wie härte ich ein Docker-Image?

Um ein Docker-Image zu härten, muss es auf Schwachstellen gescannt werden, um dann ein neues Image mit zusätzlichen Sicherheitsmaßnahmen zu deren Behebung zu erstellen und dann diese Version als Basis für Ihre Anwendung zu verwenden. Sie müssen regelmäßig Ihre Images scannen und neu erstellen, um sicherzustellen, dass diese die neuesten Pakete und Patches enthalten. Ein Best Practice besteht darin, das Härten in Ihre Pipeline zur Image-Erstellung einzubinden.

Welche anderen Best Practices für Container-Sicherheit sollte ich beachten?

Denken Sie daran, dass Best Practices für Container-Sicherheit nicht nur die gelieferten Anwendungen und Container-Images selbst umfassen. Sie müssen auch über den vollständigen Komponenten-Stack verfügen, der für die Erstellung, Verteilung und besonders die Ausführung des Containers verwendet wurde.

Denken Sie daran, dass Docker Bench kein umfassender Test ist. Es gibt andere Aspekte in Bezug auf die Gewährleistung der Docker-Sicherheit, die nicht übersehen werden sollten.

Madhu Kumar Yeluri   

Fazit

Denken Sie daran, dass Docker Bench kein umfassender Test ist. Zur Gewährleistung der Docker-Sicherheit, gilt es auch andere Maßnahmen zum Schutz der Cloud-Infrastruktur anzuwenden. Ein kompromittierter Container könnte Angreifern einen Zugang zu Ihrem System oder Netzwerk ermöglichen, auch wenn Sie eine starke Sicherheit auf Host-Ebene haben. Wenn Sie Docker Bench zusammen mit aktiven Vulnerability-Scannern für Container wie Docker Scan (Snyk), Grype, Trivy und Clair verwenden, können Sie dieses Risiko reduzieren. Diese Scanner helfen Ihnen dabei, Probleme mit Ihren Containern, wie veraltete Abhängigkeiten zu erkennen und diese Sicherheitslücken zu schließen.

Zur Person
Madhu Kumar Yaluri – Principal Cloud Architect

Madhu Kumar Yeluri

Principal Cloud Architect, T-Systems International GmbH

Profil und alle Artikel ansehen

Das könnte Sie auch interessieren

Besuchen Sie t-systems.com außerhalb von Germany? Besuchen Sie die lokale Website für weiterführende Informationen und Angebote für Ihr Land.