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
- Isolation von Containern
- Zugriffskontrolle
- Datenverschlüsselung
- Überwachung und Audit
- 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.
docker network create --driver bridge my_secure_network
In Docker Compose kannst du für jeden Service ein benutzerdefiniertes Netzwerk definieren.
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.
docker network connect --link <source_container>:<alias> <target_network> <container_name>
Beispiel:
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.
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.
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.
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.
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.
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.
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.
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.
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.
docker network create --driver bridge frontend_network
docker network create --driver bridge backend_network
Starte die Container in den entsprechenden Netzwerken.
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.
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.
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
GO TO FULL VERSION