Crowdsec Traefik Bouncer
Version vom 9. April 2025, 09:40 Uhr von Thomas.will (Diskussion | Beiträge) (→Middleware verwenden)
Traefik + CrowdSec + CAPTCHA absichern
Vorarbeiten
- Ändern so das der Bouncer Container darauf zugreifen kann
- vi /etc/crowdsec/config.yaml
listen_uri: 0.0.0.0:8080
- systemctl restart crowdsec
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
- cs-traefik-bouncer (als Docker-Container)
- Eine statische CAPTCHA-Webseite
Bouncer in CrowdSec registrieren
- cscli bouncers add traefik-bouncer
→ Key notieren und in config.yml bei crowdsec_lapi_key eintragen.
Konfiguration erstellen
- mkdir /mnt/docker/traefik/bouncer
- vi /mnt/docker/traefik/bouncer/config.yml
listen_uri: 0.0.0.0:8081 crowdsec_lapi_key: HIER_DEN_API_KEY_EINFÜGEN crowdsec_lapi_url: http://host.docker.internal:8080/ log_level: info mode: captcha
Docker-Traefik erweitern
- vi /mnt/docker/traefik/docker-compose.yaml
traefik-bouncer:
image: crowdsecurity/cs-traefik-bouncer
container_name: traefik-bouncer
volumes:
- ./bouncer/config.yml:/config.yml:ro
ports:
- "8081:8081"
extra_hosts:
- "host.docker.internal:host-gateway"
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:
traefik:
rule: Host(`traefik.samogo.de`)
service: traefik-ui
entryPoints:
- web
middlewares:
- crowdsec-captcha
uptime-kuma:
rule: Host(`uptime-kuma.samogo.de`)
service: uptime-kuma
entryPoints:
- web
middlewares:
- crowdsec-captcha
Funktion
- CrowdSec erkennt Angreifer anhand der HTTP-Zugriffe
- Statt sofort zu blockieren, wird eine CAPTCHA-Entscheidung gesetzt
- Der Traefik-Bouncer prüft dies und leitet auf die CAPTCHA-Seite um
- Nach erfolgreichem Aufruf wird die IP automatisch freigegeben
Testen
- curl -s http://example.com/.env
(Decision sollte CAPTCHA sein)
- Browser aufrufen → CAPTCHA-Seite wird angezeigt
Fazit
Mit dem cs-traefik-bouncer lässt sich CrowdSec um ein intelligentes CAPTCHA-System erweitern. Angreifer können automatisiert ausgebremst werden, ohne legitime Nutzer dauerhaft zu sperren.