Crowdsec Traefik Bouncer: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| − | =Traefik | + | =Traefik mit CrowdSec + CAPTCHA über HTTPS (Label-basiert)= |
==Ziel== | ==Ziel== | ||
| − | Angreifer sollen | + | 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== | ==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 | *vi /etc/crowdsec/config.yaml | ||
listen_uri: 0.0.0.0:8080 | listen_uri: 0.0.0.0:8080 | ||
*systemctl restart crowdsec | *systemctl restart crowdsec | ||
| − | |||
| − | |||
*cscli bouncers add traefik-bouncer | *cscli bouncers add traefik-bouncer | ||
| − | → | + | → Den Key kopieren |
| − | ==Bouncer-Konfiguration | + | ==Bouncer-Konfiguration== |
| − | *mkdir /mnt/docker/traefik/bouncer | + | *mkdir -p /mnt/docker/traefik/bouncer |
*vi /mnt/docker/traefik/bouncer/config.yml | *vi /mnt/docker/traefik/bouncer/config.yml | ||
listen_uri: 0.0.0.0:8081 | listen_uri: 0.0.0.0:8081 | ||
| − | crowdsec_lapi_key: | + | crowdsec_lapi_key: HIER_DEN_KEY_EINFÜGEN |
crowdsec_lapi_url: http://host.docker.internal:8080/ | crowdsec_lapi_url: http://host.docker.internal:8080/ | ||
log_level: info | log_level: info | ||
mode: captcha | mode: captcha | ||
| − | ==Docker- | + | ==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 | + | ==Middleware definieren== |
*vi /mnt/docker/traefik/conf/middleware.yaml | *vi /mnt/docker/traefik/conf/middleware.yaml | ||
| Zeile 88: | Zeile 63: | ||
- X-Crowdsec-Captcha-Result | - X-Crowdsec-Captcha-Result | ||
| − | == | + | ==Middleware aktivieren für uptime-kuma== |
| − | + | In der ''docker-compose.yaml'' von ''uptime-kuma'' ergänzen: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | labels: | |
| − | + | - "traefik.enable=true" | |
| − | + | - "traefik.http.routers.uptime-kuma.rule=Host(`uptime-kuma.samogo.de`)" | |
| − | + | - "traefik.http.routers.uptime-kuma.entrypoints=websecure" | |
| − | + | - "traefik.http.routers.uptime-kuma.tls.certresolver=letsencrypt" | |
| − | + | - "traefik.http.routers.uptime-kuma.service=uptime-kuma" | |
| − | + | - "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001" | |
| − | + | - "traefik.http.routers.uptime-kuma.middlewares=crowdsec-captcha@file" | |
| − | |||
| − | + | → Port 3001 ggf. anpassen | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
==System starten== | ==System starten== | ||
| Zeile 127: | Zeile 84: | ||
==Testen== | ==Testen== | ||
| − | * | + | *cscli decisions add --ip DEINE_IP --type captcha --duration 10m |
| − | + | ||
| + | *Browser öffnen → https://uptime-kuma.samogo.de | ||
| − | + | → CAPTCHA-Seite erscheint | |
==Fazit== | ==Fazit== | ||
| − | Diese Konfiguration | + | 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. |
Version vom 9. April 2025, 09:56 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.
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:
labels: - "traefik.enable=true" - "traefik.http.routers.uptime-kuma.rule=Host(`uptime-kuma.samogo.de`)" - "traefik.http.routers.uptime-kuma.entrypoints=websecure" - "traefik.http.routers.uptime-kuma.tls.certresolver=letsencrypt" - "traefik.http.routers.uptime-kuma.service=uptime-kuma" - "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001" - "traefik.http.routers.uptime-kuma.middlewares=crowdsec-captcha@file"
→ Port 3001 ggf. anpassen
System starten
- docker compose up -d
Testen
- cscli decisions add --ip DEINE_IP --type captcha --duration 10m
- Browser öffnen → https://uptime-kuma.samogo.de
→ 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.