Crowdsec Traefik Bouncer
Version vom 9. April 2025, 08:50 Uhr von Thomas.will (Diskussion | Beiträge) (→Bouncer installieren)
Traefik + CrowdSec + CAPTCHA absichern
Ziel
Angreifer sollen bei HTTP-Angriffen nicht direkt blockiert, sondern auf eine CAPTCHA-Seite umgeleitet werden. Nach Bestehen des CAPTCHAs wird der Zugriff wieder freigegeben.
Komponenten
- Traefik als Reverse Proxy
- CrowdSec mit aktiver Erkennung (bereits eingerichtet)
- cs-traefik-bouncer (stellt Middleware für CAPTCHA bereit)
- Eine statische CAPTCHA-Webseite
Bouncer in CrowdSec registrieren
- cscli bouncers add traefik-bouncer
→ Key notieren und in config.yml bei crowdsec_lapi_key eintragen.
CAPTCHA-Seite bereitstellen
- mkdir /mnt/docker/traefik/captcha
- vi /mnt/docker/traefik/captcha/index.html
(einfache Seite mit „Ich bin kein Bot“-Button oder Link)
Docker-Traefik erweitern
- vi docker-compose.yaml
traefik-bouncer:
image: crowdsecurity/cs-traefik-bouncer
volumes:
- ./bouncer/config.yml:/config.yml:ro
- ./captcha:/www
ports:
- "8081:8081"
environment:
- GIN_MODE=release
restart: unless-stopped
Traefik Middleware konfigurieren
- vi /mnt/docker/traefik/conf/middleware.yaml
http:
middlewares:
crowdsec-captcha:
forwardAuth:
address: http://traefik-bouncer:8081/api/v1/forwardAuth
trustForwardHeader: true
authResponseHeaders:
- X-Crowdsec-Captcha-Result
Middleware verwenden
- vi /mnt/docker/traefik/conf/router.yaml
http:
routers:
web:
entryPoints:
- web
rule: Host(`example.com`)
service: myservice
middlewares:
- crowdsec-captcha
Funktion
- CrowdSec erkennt Angreifer
- Anstatt IP zu bannen, wird eine CAPTCHA-Decision getroffen
- Der Traefik-Bouncer erkennt das und schickt den Client auf die CAPTCHA-Seite
- Nach erfolgreichem Zugriff wird die IP freigegeben
Testen
- curl -s http://example.com/.env → Decision sollte CAPTCHA sein
- Browser aufrufen → CAPTCHA-Seite wird angezeigt
Fazit
Mit dem cs-traefik-bouncer kann CrowdSec in Traefik-Systemen nicht nur blocken, sondern auch intelligent steuern – mit CAPTCHA.