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.
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Articles recommandés
HAProxy comme Ingress Controller Kubernetes : Le Guide de Production
Découvrez comment utiliser HAProxy comme Ingress Controller dans Kubernetes. Architecture Direct-...
Le Load Balancing : Principes, Algorithmes et Cas d'usage
Découvrez le fonctionnement de la répartition de charge (Load Balancing), son rôle dans la haute ...
CrowdSec ou Fail2ban : quelles différences ?
Comparaison de CrowdSec et Fail2ban : détection, blocage, partage, performances, multi-serveurs, ...
Installer et configurer CrowdSec : paquets, Docker, acquisition
Installer CrowdSec avec les paquets ou Docker, comprendre ses fichiers, déclarer les logs à lire,...
CrowdSec en production : bonnes pratiques
Les réflexes pour exploiter CrowdSec en production : LAPI, clés, faux positifs, base de données, ...
Collections, parsers et scénarios CrowdSec
Le Hub, les collections, le pipeline des parsers et les scénarios : installer, comprendre avec cs...
Protection des Applications
Découvrez comment sécuriser vos backends contre les abus et les attaques courantes. Guide pratiqu...
Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques
Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses appl...
Anatomie de la configuration HAProxy, Clustering et Haute Disponibilité
Comprendre la structure d'un fichier haproxy.cfg : sections global, defaults, frontend (haute per...