Crowdsec Traefik Bouncer: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 2: Zeile 2:
  
 
==Ziel==
 
==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.
+
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 unter Verwendung des offiziellen CrowdSec-Plugins für Traefik.
  
 
==Voraussetzungen==
 
==Voraussetzungen==
 
* Traefik läuft als Container (z. B. mit weyon/traefik-bindtools)
 
* Traefik läuft als Container (z. B. mit weyon/traefik-bindtools)
* HTTPS ist aktiv (Let's Encrypt mit certresolver=letsencrypt)
+
* HTTPS ist aktiv (Wildcard-Zertifikat oder Let's Encrypt)
 
* CrowdSec ist direkt auf dem Docker-Host installiert
 
* CrowdSec ist direkt auf dem Docker-Host installiert
 
* Externes Docker-Netzwerk heißt ''traefik-public''
 
* Externes Docker-Netzwerk heißt ''traefik-public''
 
* Die Dienste wie ''uptime-kuma'' sind über Traefik erreichbar
 
* Die Dienste wie ''uptime-kuma'' sind über Traefik erreichbar
 +
* Das CrowdSec-Traefik-Plugin wird verwendet (kein Bouncer-Container nötig)
  
 
==CrowdSec vorbereiten==
 
==CrowdSec vorbereiten==
Zeile 18: Zeile 19:
 
*systemctl restart crowdsec
 
*systemctl restart crowdsec
  
*cscli bouncers add traefik-bouncer
+
*cscli bouncers add traefik-plugin
  
 
→ Den Key kopieren
 
→ Den Key kopieren
  
==Bouncer-Konfiguration==
+
==Traefik-Plugin aktivieren==
  
*mkdir -p /mnt/docker/traefik/bouncer
+
*vi /mnt/docker/traefik/traefik.yaml
*vi /mnt/docker/traefik/bouncer/config.yml
+
  experimental:
  listen_uri: 0.0.0.0:8081
+
  plugins:
crowdsec_lapi_key: HIER_DEN_KEY_EINFÜGEN
+
    crowdsec:
crowdsec_lapi_url: http://host.docker.internal:8080/
+
      moduleName: "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
log_level: info
+
      version: "v1.4.2"
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==
 
==Middleware definieren==
Zeile 57: Zeile 38:
 
   middlewares:
 
   middlewares:
 
     crowdsec-captcha:
 
     crowdsec-captcha:
       forwardAuth:
+
       plugin:
         address: http://traefik-bouncer:8081/api/v1/forwardAuth
+
         crowdsec:
        trustForwardHeader: true
+
          crowdsec_mode: captcha
        authResponseHeaders:
+
          crowdsec_lapi_url: http://host.docker.internal:8080/
          - X-Crowdsec-Captcha-Result
+
          crowdsec_lapi_key: HIER_DEN_KEY_EINFÜGEN
  
 
==Middleware aktivieren für uptime-kuma==
 
==Middleware aktivieren für uptime-kuma==
Zeile 82: Zeile 63:
  
 
==Fazit==
 
==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.
+
Diese Konfiguration integriert das CrowdSec CAPTCHA direkt in Traefik über das offizielle Plugin. Sie kommt ohne zusätzlichen Container aus und ermöglicht eine saubere und wartbare Absicherung von Diensten über HTTPS dynamisch, intelligent und benutzerfreundlich.

Version vom 9. April 2025, 10:20 Uhr

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 unter Verwendung des offiziellen CrowdSec-Plugins für Traefik.

Voraussetzungen

  • Traefik läuft als Container (z. B. mit weyon/traefik-bindtools)
  • HTTPS ist aktiv (Wildcard-Zertifikat oder Let's Encrypt)
  • CrowdSec ist direkt auf dem Docker-Host installiert
  • Externes Docker-Netzwerk heißt traefik-public
  • Die Dienste wie uptime-kuma sind über Traefik erreichbar
  • Das CrowdSec-Traefik-Plugin wird verwendet (kein Bouncer-Container nötig)

CrowdSec vorbereiten

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

→ Den Key kopieren

Traefik-Plugin aktivieren

  • vi /mnt/docker/traefik/traefik.yaml
experimental:
  plugins:
    crowdsec:
      moduleName: "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
      version: "v1.4.2"

Middleware definieren

  • vi /mnt/docker/traefik/conf/middleware.yaml
http:
  middlewares:
    crowdsec-captcha:
      plugin:
        crowdsec:
          crowdsec_mode: captcha
          crowdsec_lapi_url: http://host.docker.internal:8080/
          crowdsec_lapi_key: HIER_DEN_KEY_EINFÜGEN

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 integriert das CrowdSec CAPTCHA direkt in Traefik über das offizielle Plugin. Sie kommt ohne zusätzlichen Container aus und ermöglicht eine saubere und wartbare Absicherung von Diensten über HTTPS – dynamisch, intelligent und benutzerfreundlich.