CodeGym /Kurse /Docker SELF /Grundlagen der Sicherheit von Docker-Netzwerken

Grundlagen der Sicherheit von Docker-Netzwerken

Docker SELF
Level 18 , Lektion 3
Verfügbar

9.1 Wichtige Aspekte der Netzwerksicherheit in Docker

In dieser Vorlesung schauen wir uns die wichtigsten Aspekte der Netzwerksicherheit in Docker an, einschließlich Empfehlungen und Best Practices, um den Schutz deiner Container und Daten zu gewährleisten.

Wichtige Aspekte der Netzwerksicherheit in Docker

  1. Isolation von Containern
  2. Zugriffskontrolle
  3. Datenverschlüsselung
  4. Überwachung und Audit
  5. Updates und Patches

9.2 Container-Isolation

Die Container-Isolation ist der erste Schritt zur Sicherung von Docker-Netzwerken. Sie hilft, die Auswirkungen potenzieller Schwachstellen zu minimieren und unbefugten Zugriff zwischen Containern zu verhindern.

Anwendung von benutzerdefinierten Netzwerken

Erstelle benutzerdefinierte Netzwerke zur Isolation von Containern, damit sie nur mit den notwendigen Diensten interagieren können.

Terminal

docker network create --driver bridge my_secure_network

In Docker Compose kannst du für jeden Service ein benutzerdefiniertes Netzwerk definieren.

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - my_secure_network
        
  app:
    image: myapp:latest
    networks:
      - my_secure_network
        
networks:
  my_secure_network:
    driver: bridge

Anwendung von Inter-Container-Regeln

Docker erlaubt es, Inter-Container-Regeln festzulegen, um die Interaktion zwischen Containern auf Netzwerkebene zu steuern.

Terminal

docker network connect --link <source_container>:<alias> <target_network> <container_name>

Beispiel:

Terminal

docker network connect --link container1:c1 multi-host-network container2

9.3 Zugriffskontrolle

Zugriffskontrolle ist wichtig, um unbefugten Zugriff auf Container und Netzwerke zu verhindern.

Zugriff auf Ports einschränken

Beschränke den Zugriff auf veröffentlichte Ports mithilfe von IP-Adressen und Firewall-Regeln.

Terminal

docker run -d -p 127.0.0.1:8080:80 --name my_secure_container nginx

Verwendung von Rollen und Richtlinien

Verwende Rollen und Zugriffspolitiken, um Benutzerrechte bei der Verwaltung von Containern und Netzwerken einzuschränken.

Terminal

docker run -d --user <uid>:<gid> my_secure_container

9.4 Datenverschlüsselung

Datenverschlüsselung hilft, vertrauliche Daten sowohl im Ruhezustand als auch bei der Übertragung zu schützen.

Datenverschlüsselung im Ruhezustand

Verwende die Verschlüsselung des Dateisystems für Volumes, die von Containern genutzt werden.

Terminal

docker run -d --name my_secure_container --mount 
type=volume,source=my_volume,destination=/data,volume-driver=local,volume-opt=o=bind,volume-opt=device=/mnt/secure_data nginx

Datenverschlüsselung bei der Übertragung

Verwende TLS, um die Daten zu verschlüsseln, die zwischen Containern und externen Diensten übertragen werden.

Terminal

docker run -d -p 443:443 --name my_secure_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v 
/path/to/key.pem:/etc/nginx/key.pem nginx

9.5 Monitoring und Audit

Monitoring und Audit ermöglichen es, die Aktivität von Containern und Netzwerken zu verfolgen, potenzielle Bedrohungen zu identifizieren und darauf zu reagieren.

Logs und Metriken

Erfasse Logs und Metriken von Containern zur Analyse und Überwachung.

Terminal

docker logs <container_name>

Nutze Monitoring-Tools wie Prometheus und Grafana, um den Zustand von Containern und Netzwerken zu beobachten.

Audit

Aktiviere Audit, um Benutzeraktionen und Änderungen an der Konfiguration von Containern und Netzwerken zu verfolgen.

Terminal

docker events

9.6 Updates und Patches

Regelmäßige Updates und Patches helfen dabei, Container und Netzwerke vor bekannten Schwachstellen zu schützen.

Docker-Update

Behalte Docker-Updates im Auge und installiere neue Versionen rechtzeitig.

Terminal

sudo apt-get update

sudo apt-get install docker-ce

Update der Images

Aktualisiere regelmäßig die Container-Images auf die neuesten Versionen, die Sicherheitspatches enthalten.

Terminal

docker pull nginx:latest

9.7 Beispiele für Best Practices

Beispiel 1: Erstellen von isolierten Netzwerken

Erstelle isolierte Netzwerke für jede Komponente deiner Anwendung.

Terminal

docker network create --driver bridge frontend_network

docker network create --driver bridge backend_network

Starte die Container in den entsprechenden Netzwerken.

Terminal

docker run -d --name frontend --network frontend_network nginx

docker run -d --name backend --network backend_network myapp

Beispiel 2: Begrenzen des Zugriffs auf Ports

Begrenze den Zugriff auf die Ports der Container nur auf die notwendigen IP-Adressen und Hosts.

Terminal

docker run -d -p 192.168.1.100:8080:80 --name restricted_container nginx

Beispiel 3: Verwendung von TLS zur Verschlüsselung

Konfiguriere die Container so, dass sie TLS verwenden, um Daten während der Übertragung zu schützen.

Terminal

docker run -d -p 443:443 --name tls_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v 
/path/to/key.pem:/etc/nginx/key.pem nginx
1
Umfrage/Quiz
Docker Swarm, Level 18, Lektion 3
Nicht verfügbar
Docker Swarm
Docker Swarm
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION