5. Überblick über die Systeme
Bevor wir in die Konfigurationen eintauchen, ist es wichtig zu verstehen, welche Rolle jedes der eingesetzten Systeme in unserem Stack übernimmt:
5.1. Traefik
Traefik ist ein moderner Reverse-Proxy und Load Balancer, der speziell für dynamische und containerisierte Umgebungen wie Docker entwickelt wurde. In dieser Anleitung setzen wir Traefik als Reverse-Proxy ein, um den HTTP-Traffic zwischen Clients und Anwendungen zu steuern und Anfragen basierend auf Domains weiterzuleiten.
Zusätzlich zu seiner Rolle als Reverse-Proxy bietet Traefik jedoch noch weitere leistungsstarke Funktionen:
- Netzwerk-Routing: Traefik kann auf Basis von Regeln (wie z.B. Headern oder Pfaden) Netzwerk-Routen zu den entsprechenden Diensten dynamisch konfigurieren.
- Automatische SSL-Zertifikate: Durch die Integration von Let’s Encrypt können SSL-Zertifikate automatisch verwaltet und erneuert werden.
- Lastverteilung: Traefik bietet Load Balancing zwischen mehreren Instanzen eines Services und sorgt so für eine optimierte Verteilung der Anfragen.
- Monitoring und Metriken: Traefik lässt sich leicht in Monitoring-Systeme wie Prometheus integrieren, um die Performance der Services zu überwachen.
Durch diese Funktionen ermöglicht Traefik die einfache Verwaltung von Netzwerk-Traffic in verteilten Anwendungen und erhöht gleichzeitig die Sicherheit und Verfügbarkeit der bereitgestellten Services.
5.2. Docker-Socket-Proxy
Der Docker-Socket-Proxy agiert als Schutz für den Docker-Socket. Ohne diesen Schutz könnte der Docker-Socket direkt von anderen Anwendungen genutzt werden, was ein Sicherheitsrisiko darstellt (siehe Docker-Dokumentation). Der Proxy sorgt dafür, dass nur ausgewählter und kontrollierter Zugriff auf Docker-APIs möglich ist, um die Angriffsfläche zu minimieren.
5.3. CrowdSec
CrowdSec ist ein Tool zur Erkennung und Reaktion auf Bedrohungen. Es analysiert das Verhalten von Besuchern und erkennt verdächtige Aktivitäten wie Brute-Force-Angriffe oder Port-Scans. CrowdSec überwacht IP-Adressen und entscheidet darüber, welche als bösartig gelten und blockiert werden sollten – ähnlich einer judikativen Instanz, die über Schuld oder Unschuld entscheidet.
