Crowdsec Traefik Bouncer

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Traefik mit CrowdSec + CAPTCHA über HTTPS (Label-basiert)

Ziel

HTTP-Angreifer sollen nicht sofort geblockt, sondern auf eine CAPTCHA-Seite umgeleitet werden. Nach erfolgreicher Bestätigung wird der Zugriff automatisch freigegeben – ausschließlich über HTTPS. Die Konfiguration erfolgt vollständig über Docker-Labels.

Voraussetzungen

  • Traefik läuft als Container (z. B. mit weyon/traefik-bindtools)
  • HTTPS ist aktiv (Let's Encrypt mit certresolver=letsencrypt)
  • CrowdSec ist direkt auf dem Docker-Host installiert
  • Externes Docker-Netzwerk heißt traefik-public
  • Die Dienste wie uptime-kuma sind über Traefik erreichbar

CrowdSec vorbereiten

  • vi /etc/crowdsec/config.yaml
listen_uri: 0.0.0.0:8080
  • systemctl restart crowdsec
  • cscli bouncers add traefik-bouncer

→ Den Key kopieren

Bouncer-Konfiguration

  • mkdir -p /mnt/docker/traefik/bouncer
  • vi /mnt/docker/traefik/bouncer/config.yml
listen_uri: 0.0.0.0:8081
crowdsec_lapi_key: HIER_DEN_KEY_EINFÜGEN
crowdsec_lapi_url: http://host.docker.internal:8080/
log_level: info
mode: captcha

Docker-Compose ergänzen

Nur den neuen Dienst einfügen:

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
  networks:
    - traefik-public

traefik bleibt unangetastet.

Middleware definieren

  • 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 aktivieren für uptime-kuma

In der docker-compose.yaml von uptime-kuma ergänzen:

  - "traefik.http.routers.uptime-kuma.middlewares=crowdsec-captcha@file"

System starten

  • docker compose up -d

Testen

  • cscli decisions add --ip DEINE_IP --type captcha --duration 10m

→ CAPTCHA-Seite erscheint

Fazit

Diese Konfiguration ergänzt dein vorhandenes Setup um eine sichere, dynamische CAPTCHA-Funktion mit CrowdSec. Angreifer werden zuverlässig erkannt und gebremst – ohne legitime Nutzer dauerhaft auszuschließen.