Crowdsec Traefik Bouncer: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 60: | Zeile 60: | ||
*vi /mnt/docker/traefik/conf/router.yaml | *vi /mnt/docker/traefik/conf/router.yaml | ||
| − | + | <pre> | |
| − | + | 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 | ||
| + | |||
| + | </pre> | ||
==Funktion== | ==Funktion== | ||
Version vom 9. April 2025, 09:40 Uhr
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.