Crowdsec Traefik Bouncer: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 26: | Zeile 26: | ||
==Captcha-ForwardAuth einrichten== | ==Captcha-ForwardAuth einrichten== | ||
| − | ; | + | ;Repository klonen |
*cd /mnt/docker/traefik | *cd /mnt/docker/traefik | ||
*git clone https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin.git | *git clone https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin.git | ||
| − | |||
| − | ;Konfiguration | + | ;Konfiguration erstellen (außerhalb des Beispielverzeichnisses!) |
| − | *vi config.yml | + | *vi /mnt/docker/traefik/captcha-config.yml |
listen_uri: 0.0.0.0:8081 | listen_uri: 0.0.0.0:8081 | ||
crowdsec_lapi_key: '''HIER_DEN_KEY_EINFÜGEN''' | crowdsec_lapi_key: '''HIER_DEN_KEY_EINFÜGEN''' | ||
| Zeile 41: | Zeile 40: | ||
==Docker-Compose erweitern== | ==Docker-Compose erweitern== | ||
| − | ;Captcha-Service | + | ;Captcha-Service hinzufügen: |
captcha-auth: | captcha-auth: | ||
| − | build: ./crowdsec-bouncer-traefik-plugin/examples/captcha | + | build: |
| + | context: ./crowdsec-bouncer-traefik-plugin/examples/captcha | ||
container_name: captcha-auth | container_name: captcha-auth | ||
ports: | ports: | ||
| Zeile 55: | Zeile 55: | ||
restart: unless-stopped | restart: unless-stopped | ||
| − | → '''captcha-config.yml''' | + | → '''captcha-config.yml''' liegt im Traefik-Stammverzeichnis, nicht im Beispielordner |
==Middleware in Traefik definieren== | ==Middleware in Traefik definieren== | ||
| Zeile 69: | Zeile 69: | ||
- X-Crowdsec-Captcha-Result | - X-Crowdsec-Captcha-Result | ||
| − | ==Router | + | ==Middleware in Router einbinden (Beispiel uptime-kuma)== |
*vi /mnt/docker/uptime-kuma/docker-compose.yaml | *vi /mnt/docker/uptime-kuma/docker-compose.yaml | ||
| Zeile 84: | Zeile 84: | ||
==Testen== | ==Testen== | ||
| − | ; | + | ;CAPTCHA-Zwang auslösen |
*cscli decisions add --ip '''DEINE.IP.ADRESSE''' --type captcha --duration 10m | *cscli decisions add --ip '''DEINE.IP.ADRESSE''' --type captcha --duration 10m | ||
| − | ; | + | ;Seite im Browser aufrufen |
*https://uptime-kuma.samogo.de | *https://uptime-kuma.samogo.de | ||
Version vom 9. April 2025, 11:18 Uhr
Traefik mit CrowdSec und CAPTCHA absichern (lokaler ForwardAuth-Service)
Ziel
HTTP-Angreifer sollen nicht direkt blockiert, sondern auf eine CAPTCHA-Seite umgeleitet werden. Nach dem Bestehen wird der Zugriff freigegeben. Es wird kein Plugin und kein Image aus einer Registry verwendet.
Voraussetzungen
- Traefik läuft als Container
- HTTPS ist aktiv (Wildcard oder certresolver)
- CrowdSec ist direkt auf dem Docker-Host installiert
- Docker-Netzwerk heißt traefik-public
- Docker läuft auf Linux mit aktiviertem host-gateway
- ForwardAuth erfolgt per Middleware
CrowdSec vorbereiten
- API auf allen Interfaces verfügbar machen
- vi /etc/crowdsec/config.yaml
listen_uri: 0.0.0.0:8080
- systemctl restart crowdsec
- API-Schlüssel für den Bouncer erstellen
- cscli bouncers add traefik-captcha
→ Den API-Key kopieren
Captcha-ForwardAuth einrichten
- Repository klonen
- cd /mnt/docker/traefik
- git clone https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin.git
- Konfiguration erstellen (außerhalb des Beispielverzeichnisses!)
- vi /mnt/docker/traefik/captcha-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 erweitern
- Captcha-Service hinzufügen
captcha-auth:
build:
context: ./crowdsec-bouncer-traefik-plugin/examples/captcha
container_name: captcha-auth
ports:
- "8081:8081"
volumes:
- ./captcha-config.yml:/config.yml:ro
extra_hosts:
- "host.docker.internal:host-gateway"
networks:
- traefik-public
restart: unless-stopped
→ captcha-config.yml liegt im Traefik-Stammverzeichnis, nicht im Beispielordner
Middleware in Traefik definieren
- vi /mnt/docker/traefik/conf/middleware.yaml
http:
middlewares:
crowdsec-captcha:
forwardAuth:
address: http://captcha-auth:8081/api/v1/forwardAuth
trustForwardHeader: true
authResponseHeaders:
- X-Crowdsec-Captcha-Result
Middleware in Router einbinden (Beispiel uptime-kuma)
- vi /mnt/docker/uptime-kuma/docker-compose.yaml
- "traefik.http.routers.uptime-kuma.rule=Host(`uptime-kuma.samogo.de`)" - "traefik.http.routers.uptime-kuma.entrypoints=websecure" - "traefik.http.routers.uptime-kuma.tls=true" - "traefik.http.routers.uptime-kuma.service=uptime-kuma" - "traefik.http.routers.uptime-kuma.middlewares=crowdsec-captcha@file"
System starten
- docker compose up -d --build
Testen
- CAPTCHA-Zwang auslösen
- cscli decisions add --ip DEINE.IP.ADRESSE --type captcha --duration 10m
- Seite im Browser aufrufen
→ Die CAPTCHA-Seite erscheint
Fazit
Mit dem Beispiel aus examples/captcha wird ein eigenständiger ForwardAuth-Dienst genutzt, um CAPTCHA mit Traefik und CrowdSec zu kombinieren – ohne Plugin oder Container aus der Registry. Das Setup ist portabel, nachvollziehbar und funktioniert unabhängig vom Plugin-Hub.