Skip to content
BotServBotServ
DockerNetzwerkIsolationBridgeSicherheit

Docker-Netzwerk-Isolation

Docker-Netzwerke isolieren. Bridge, benutzerdefinierte Netze, interne Netze und Segregation zwischen Containern.

S

schutzgeist

2 min read
Docker-Netzwerk-Isolation

Docker-Netzwerk-Isolation

Was dieser Artikel über Docker-Netzwerk-Isolation behandelt

  • Standard-Bridge und benutzerdefinierte Netze.
  • Interne Netzwerke ohne externe Kommunikation.
  • Netzwerksegmentierung in Compose.
  • Sicherheitsvorteile der Isolation.
  • Tipps für saubere Netzwerkarchitekturen.

Einleitung: Docker-Netzwerk-Isolation

In Docker laufen viele Container oft auf demselben Host. Ohne Isolation können Container sich gegenseitig sehen, anpingen und über offene Ports miteinander kommunizieren. Für sicherheitskritische Setups ist das problematisch. Docker bietet verschiedene Netzwerk-Typen, mit denen man Container voneinander trennen kann. Wer Datenbanken, APIs und öffentliche Web-Container in getrennte Netze legt, verringert das Risiko und erhält eine übersichtlichere Infrastruktur.

Dieser Artikel zeigt, wie man Docker-Netzwerke isoliert.

Wichtige Begriffe

  • Bridge: Standard-Netzwerktyp in Docker.
  • Overlay: Netzwerk für Swarm-Cluster.
  • Host: Container nutzt Netzwerk des Hosts.
  • None: Kein Netzwerk.
  • Internes Netzwerk: Keine externe Kommunikation.
  • Segmentierung: Aufteilung in logische Netz-Bereiche.
  • Microsegmentation: Feine Isolation pro Dienst.
  • Default-Bridge: Docker-Standardnetzwerk.

Standard-Bridge

Standardmässig landen alle Container im bridge-Netzwerk. Sie können sich über IPs erreichen, solange keine Firewall dazwischen ist. Das ist bequem, aber unsicher.

docker network ls

Benutzerdefiniertes Netzwerk

docker network create app-net

Container nur in diesem Netzwerk können sich über DNS-Namen erreichen:

docker run -d --name web --network app-net nginx
docker run -d --name db --network app-net postgres

Internes Netzwerk

Interne Netzwerke haben keinen externen Zugang:

docker network create --internal backend-net

Container im internen Netzwerk können nicht ins Internet. Ideal für Datenbanken oder interne APIs.

Compose-Beispiel

services:
  web:
    image: nginx
    networks:
      - frontend

  app:
    image: mein-app
    networks:
      - frontend
      - backend

  db:
    image: postgres
    networks:
      - backend

networks:
  frontend:
    driver: bridge
  backend:
    internal: true

Die Datenbank ist nur über app erreichbar, nicht direkt aus frontend.

Ports nicht veröffentlichen

Nur Container, die von aussen erreichbar sein sollen, bekommen Ports:

services:
  db:
    image: postgres
    networks:
      - backend
    # Keine ports hier

Kein Internet für bestimmte Container

Mit network_mode: none:

services:
  batch:
    image: batch-processor
    network_mode: none

Oder über spezielle iptables-Regeln.

Sicherheit durch Isolation

  • Datenbanken nicht direkt erreichbar.
  • Interne APIs abgeschirmt.
  • Weniger Angriffsfläche.
  • Einfachere Regeln für Firewalls und Reverse-Proxy.
  • Schadsoftware in einem Container kann sich weniger leicht ausbreiten.

Reverse-Proxy als Einfallstor

Ein öffentlich erreichbarer Traefik oder nginx leitet Anfragen in das richtige Netzwerk. Dienste dahinter brauchen keine eigenen öffentlichen Ports.

Tipps

  • Für jeden logischen Bereich ein Netzwerk.
  • Datenbanken ins interne Backend-Netz.
  • Nicht alle Ports veröffentlichen.
  • Firewall auf dem Host ergänzen.
  • Logging und Monitoring über alle Netze.
  • Nur notwendige Verbindungen erlauben.

Typische Stolpersteine

  • Container im falschen Netz: Erreichbarkeit prüfen.
  • DNS nicht funktioniert: Benutzerdefinierte Netze bringen DNS, die Standard-Bridge nicht.
  • Interne Netze und Updates: Container kann keine Pakete laden.
  • Veröffentlichte Ports an falscher Stelle: Sicherheitslücke.
  • Falsche Firewall-Regel: Container doch erreichbar.

FAQ: Docker-Netzwerk-Isolation

Sind Docker-Container im gleichen Netzwerk isoliert? Nein, sie können sich standardmässig gegenseitig erreichen.

Was ist ein internes Netzwerk? Ein Netzwerk ohne externe Verbindung, beispielsweise für Datenbanken.

Brauche ich für jeden Dienst ein Netzwerk? Bei mehreren Diensten ist Segmentierung sinnvoll, aber nicht zwingend.

Kann ich Container ganz vom Netzwerk trennen? Ja, mit network_mode: none.

Wie erreicht ein Container das Internet? Im Standard-Bridge oder benutzerdefinierten Netzwerk, nicht im internen Netz.

Quellen und weiterführende Literatur

Zusammenfassung: Docker-Netzwerk-Isolation

Docker-Netzwerk-Isolation ist eine einfache, aber wirksame Sicherheitsmassnahme. Benutzerdefinierte Netze und interne Netze trennen Container logisch voneinander. Datenbanken und interne APIs gehören ins Backend, öffentliche Dienste ins Frontend. Wer Ports sparsam veröffentlicht und das externe Netz nicht überall freigibt, reduziert Angriffsfläche und behält die Infrastruktur übersichtlich.

Zurück zum KI Blog
Share:

Ähnliche Beiträge