Crowdsec Traefik Bouncer: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 7: | Zeile 7: | ||
* Traefik als Reverse Proxy | * Traefik als Reverse Proxy | ||
| − | * CrowdSec mit aktiver Erkennung | + | * CrowdSec mit aktiver Erkennung |
| − | * cs-traefik-bouncer ( | + | * cs-traefik-bouncer (als Docker-Container) |
* Eine statische CAPTCHA-Webseite | * Eine statische CAPTCHA-Webseite | ||
| Zeile 16: | Zeile 16: | ||
→ Key notieren und in config.yml bei crowdsec_lapi_key eintragen. | → 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://crowdsec:8080/ | ||
| + | log_level: info | ||
| + | mode: captcha | ||
==CAPTCHA-Seite bereitstellen== | ==CAPTCHA-Seite bereitstellen== | ||
| Zeile 21: | Zeile 31: | ||
*mkdir /mnt/docker/traefik/captcha | *mkdir /mnt/docker/traefik/captcha | ||
*vi /mnt/docker/traefik/captcha/index.html | *vi /mnt/docker/traefik/captcha/index.html | ||
| − | (einfache Seite mit | + | (einfache HTML-Seite mit Bestätigungsbutton oder Hinweistext) |
==Docker-Traefik erweitern== | ==Docker-Traefik erweitern== | ||
| − | *vi docker-compose.yaml | + | *vi /mnt/docker/traefik/docker-compose.yaml |
traefik-bouncer: | traefik-bouncer: | ||
image: crowdsecurity/cs-traefik-bouncer | image: crowdsecurity/cs-traefik-bouncer | ||
| + | container_name: traefik-bouncer | ||
volumes: | volumes: | ||
- ./bouncer/config.yml:/config.yml:ro | - ./bouncer/config.yml:/config.yml:ro | ||
| Zeile 33: | Zeile 44: | ||
ports: | ports: | ||
- "8081:8081" | - "8081:8081" | ||
| − | |||
| − | |||
restart: unless-stopped | restart: unless-stopped | ||
| Zeile 64: | Zeile 73: | ||
==Funktion== | ==Funktion== | ||
| − | * CrowdSec erkennt Angreifer | + | * CrowdSec erkennt Angreifer anhand der HTTP-Zugriffe |
| − | * | + | * Statt sofort zu blockieren, wird eine CAPTCHA-Entscheidung gesetzt |
| − | * Der Traefik-Bouncer | + | * Der Traefik-Bouncer prüft dies und leitet auf die CAPTCHA-Seite um |
| − | * Nach erfolgreichem | + | * Nach erfolgreichem Aufruf wird die IP automatisch freigegeben |
==Testen== | ==Testen== | ||
| − | *curl -s http://example.com/.env | + | *curl -s http://example.com/.env |
| + | (Decision sollte CAPTCHA sein) | ||
| + | |||
*Browser aufrufen → CAPTCHA-Seite wird angezeigt | *Browser aufrufen → CAPTCHA-Seite wird angezeigt | ||
==Fazit== | ==Fazit== | ||
| − | Mit dem cs-traefik-bouncer | + | 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. |
Version vom 9. April 2025, 08:52 Uhr
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
- 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://crowdsec:8080/ log_level: info mode: captcha
CAPTCHA-Seite bereitstellen
- mkdir /mnt/docker/traefik/captcha
- vi /mnt/docker/traefik/captcha/index.html
(einfache HTML-Seite mit Bestätigungsbutton oder Hinweistext)
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
- ./captcha:/www
ports:
- "8081:8081"
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 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.