Fast alle meine Dienste stelle ich über Docker bereit. Auch dieser Blog läuft über Docker Container. Das erlaubt mir einerseits eine einfache Verwaltung meiner Dienste – insbesondere was die Bereitstellung und updates angeht – gleichzeitig aber auch einen Server für mehrere Dienste zu nutzen. Genau für letzteres nutze ich Traefik als Reverse-Proxy.
Warum ein Reverse Proxy?
Wenn ich auf einem (physischen oder virtualisierten) Host (Server) mehrere Dienste betreiben möchte, die den gleichen Port nutzen, ist das in der Regel eine Herausforderung. Das ist zum Beispiel dann der Fall, wenn ich mehrere Webseiten oder Web-Dienste auf dem selben Host betreiben möchte.
Eine mögliche Lösung für dieses Dilemma ist die Nutzung eines Reverse-Proxy. Dabei wird nach Außen (ins Internet) nur der Reverse-Proxy als Dienst bereitgestellt – d.h. in dem Beispiel reagiert nur der Reverse-Proxy auf Anfragen auf dem Port 80 (HTTP) oder 443 (HTTPS). Je nach Anfrage leitet der Reverse-Proxy dann intern an den eigentlichen Dienst weiter. So können auf einem Host oder sogar unter einer Domain problemlos mehrere Dienste erreichbar sein.
Ein weiterer Nutzen ergibt sich dabei dadurch, dass es einfacher wird, zentrale Sicherheitsfunktionen einzubauen – wenn diese in den Reverse-Proxy integriert werden, werden diese faktisch für alle Anwendungen genutzt, die über den Reverse Proxy bereitgestellt werden.
Und was ist Traefik und Crowdsec?
Es gibt viele Reverse-Proxies, die man einsetzen kann. Ich nutze Traefik als „Cloud Native“ Reverse-Proxy – vor allem wegen der für mich persönlich einfachen Integration in meinen Docker-Stack. Sobald Traefik einmal eingerichtet ist, kann ich sehr einfach neue Docker-Container über Labels mit in den Reverse Proxy aufnehmen.
Crowdsec wiederum ist eine Community-Getriebene Security-Plattform und für mich so etwas wie „das neue Fail2Ban“. Vereinfacht gesagt analysiert Crowdsec in Echtzeit die Logs der konfigurierten Dienste, schätzt jeden Zugriff auf diese Dienste ein und entscheidet dann, ob der Zugriff valide ist oder ob der Zugriff besser an einen sog. Bouncer weitergeleitet und i.d.R. geblockt wird. Die Crowdsec Community (und das Unternehmen dahinter) pflegt und erweitert täglich Listen und Entscheidungskriterien, die darauf einzahlen, dass DU den Content hier problemlos lesen kannst, während die bösen Jungs hoffentlich ausgesperrt bleiben.
Und wie hast du das jetzt aufgesetzt?
Mein Setup als „meine Arbeit“ zu bezeichnen währe hier falsch – es geht ein Großer Dank an goneuland.de/ für die hervorragende Anleitung und die Pflege der dazugehörigen Docker-Compose Files. Das kann ich aktuell bedingungslos weiterempfehlen: Traefik V3 Installation, Konfiguration und CrowdSec-Security