Este artículo está disponible en francés.
1. Nginx et OpenResty #
Un bouncer en Lua.
Installer #
Le bouncer Nginx s'appuie sur le module Lua. Sur Ubuntu 22.xx, ce module peut manquer : passez à une version plus récente ou utilisez OpenResty, qui l'embarque.
sudo apt install nginx lua5.1 libnginx-mod-http-lua luarocks gettext-base lua-cjson
sudo apt install crowdsec-nginx-bouncer
sudo nginx -t && sudo systemctl reload nginxConfigurer #
Le fichier /etc/crowdsec/bouncers/crowdsec-nginx-bouncer.conf se surcharge avec un fichier .conf.local.
API_URL=http://127.0.0.1:8080
API_KEY=VOTRE_CLE
MODE=stream
UPDATE_FREQUENCY=10
BOUNCING_ON_TYPE=all
FALLBACK_REMEDIATION=ban
RET_CODE=403
APPSEC_URL=http://127.0.0.1:7422| Option | Rôle |
|---|---|
MODE | live par défaut, ou stream |
BOUNCING_ON_TYPE | all, ban, captcha |
FALLBACK_REMEDIATION | Remédiation si le type reçu est inconnu |
BAN_TEMPLATE_PATH | Page HTML affichée aux IP bannies |
REDIRECT_LOCATION | Redirige au lieu d’afficher la page |
APPSEC_URL | Active le WAF |
Le captcha #
Le captcha laisse une chance à un utilisateur légitime, par exemple derrière une IP partagée. Trois fournisseurs : recaptcha, hcaptcha, turnstile. Nginx doit pouvoir les joindre : configurez resolver et lua_ssl_trusted_certificate.
CAPTCHA_PROVIDER=turnstile
SITE_KEY=VOTRE_SITE_KEY
SECRET_KEY=VOTRE_SECRET_KEY
CAPTCHA_EXPIRATION=3600sudo cscli decisions add --ip 192.0.2.6 --duration 1h --type captchaApache #
Un bouncer Apache existe également, avec WAF, virtual patching et détection de robots via AppSec. Sa logique est identique : clé d'API, URL de la LAPI, puis rechargement du serveur. Voir la documentation dédiée.
2. HAProxy avec SPOA #
Déporter le contrôle hors de HAProxy.
Le principe #
Ancien bouncer déprécié. L'ancien bouncer HAProxy en Lua, encore cité par de nombreux tutoriels, est déprécié. Utilisez le bouncer SPOA, le seul à prendre en charge AppSec.
Installer et configurer #
sudo apt install crowdsec-haproxy-spoa-bouncer
sudo cscli bouncers add haproxy-spoa
sudo cp /usr/share/doc/crowdsec-haproxy-spoa-bouncer/examples/crowdsec.cfg /etc/haproxy/crowdsec.cfgDans /etc/crowdsec/bouncers/crowdsec-spoa-bouncer.yaml, renseignez api_url, api_key et listen_tcp: 127.0.0.1:9000. Puis, dans haproxy.cfg :
frontend http-in
bind *:80
option http-buffer-request
unique-id-format %[uuid()]
unique-id-header X-Unique-ID
filter spoe engine crowdsec config /etc/haproxy/crowdsec.cfg
acl body_within_limit req.body_size -m int le 51200
http-request send-spoe-group crowdsec crowdsec-http-body if body_within_limit || !{ req.body_size -m found }
http-request send-spoe-group crowdsec crowdsec-http-no-body if !body_within_limit { req.body_size -m found }
# Les pages de ban et de captcha sont dans examples/haproxy.cfg
default_backend app
backend crowdsec-spoa
mode tcp
timeout connect 2s
timeout server 60s
server spoa 127.0.0.1:9000sudo crowdsec-spoa-bouncer -c /etc/crowdsec/bouncers/crowdsec-spoa-bouncer.yaml -t
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl restart crowdsec-spoa-bouncer haproxyDeux pièges #
- IP réelle. Derrière un CDN, utilisez
set-srcavant lessend-spoe-group, et n'autorisez que le proxy de confiance sur vos ports. - Limite de 50 Ko. Le corps d'une requête au-delà de cette taille n'est pas inspecté par le WAF. Un attaquant peut s'en servir pour le contourner : refusez ces requêtes, sauf sur vos chemins d'envoi de fichiers.
Sources #
Configurations issues de la documentation officielle consultée en novembre 2026 : ces bouncers n'ont pas été exécutés pour cet article.
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
Artículos recomendados
Les bouncers CrowdSec : principes et bouncer pare-feu
Comprendre les bouncers CrowdSec : où bloquer, modes live et stream, clés d'API, API des décision...
Bouncers CrowdSec : Cloudflare, équipements réseau, Kubernetes et bouncer sur mesure
Bloquer au CDN avec Cloudflare Workers, alimenter pfSense ou MikroTik avec Blocklist Mirror, prot...
Décisions, profils, allowlists et AppSec dans CrowdSec
Gérer les décisions avec cscli, adapter la durée et le type de blocage avec les profils, éviter l...
Protéger Traefik avec CrowdSec : le plugin bouncer
Mettre en place le bouncer CrowdSec dans Traefik : plugin, middleware, modes stream et live, IP r...
CrowdSec : comprendre le pare-feu collaboratif
Ce qu'est CrowdSec, comment il détecte et bloque les attaques : Security Engine, parsers, scénari...
Observabilité de CrowdSec : IP bannies, attaques bloquées, Prometheus et Grafana
Suivre CrowdSec : cscli metrics, IP bannies, attaques détectées, volume bloqué par les bouncers, ...
Gestion des certificats SSL/TLS avec Let's Encrypt et ACME
Apprenez à automatiser la génération et le renouvellement de vos certificats SSL/TLS avec Let's E...
Protocole ACME : serveur ACME, challenges http-01 et dns-01, automatisation TLS
Comprendre le protocole ACME : rôle du serveur ACME (Let's Encrypt, ZeroSSL, step-ca), challenges...
HAProxy dans Kubernetes : L'Ingress Controller Haute Performance
Découvrez en profondeur l'intégration de HAProxy dans Kubernetes. Architecture Direct-to-Pod, opt...