RousselTMLEARNING

Article · CrowdSec : de la découverte à l'expertise

Les bouncers et le bouncer pare-feu

1. Le rôle d’un bouncer #

Appliquer les décisions.

Le principe #

Un bouncer (remediation component) applique les décisions de la LAPI. Il s'authentifie avec une clé générée par cscli. Le moteur et les bouncers peuvent être sur des machines différentes.

sudo cscli bouncers add mon-bouncer
sudo cscli bouncers list
sudo cscli bouncers delete mon-bouncer
La clé ne s'affiche qu'une fois. Conservez-la dans un gestionnaire de secrets. Utilisez une clé par bouncer, pour pouvoir en révoquer une seule.

Où bloquer ? #

Quatre niveaux de blocage : CDN, pare-feu, reverse proxy, application

BouncerNiveauÀ retenir
Pare-feuNoyauProtège tous les ports : SSH, SMTP, bases de données
TraefikProxyPlugin communautaire, voir la leçon dédiée
Nginx, OpenResty, ApacheServeur webBan, captcha et WAF AppSec
HAProxy SPOAProxyRemplace l’ancien bouncer Lua, déprécié
Cloudflare, Fastly, AWS WAFCDN, WAFBloque avant vos serveurs
Blocklist MirrorRéseauPublie une liste pour pfSense, Fortinet, MikroTik…
WordPress, PHP, MagentoApplicationSans accès root

La liste complète est sur le Hub. Le bouncer Ingress Nginx est lui aussi déprécié.

Live ou stream ? #

Comparaison des modes live et stream des bouncers

En test réel avec le plugin Traefik, une IP tout juste bannie continuait de passer en mode live tant que son statut « autorisée » restait en cache. En mode stream, elle était bloquée dès la synchronisation suivante.

L’API des décisions #

Tous les bouncers utilisent cette API. Une IP sans décision renvoie null ; sans clé valide, la réponse est 403.

curl -s -H "X-Api-Key: $KEY" "http://127.0.0.1:8080/v1/decisions?ip=203.0.113.50"
# [{"duration":"3h59m44s","origin":"crowdsec","scenario":"crowdsecurity/ssh-bf","scope":"Ip","type":"ban","value":"203.0.113.50"}]

curl -s -H "X-Api-Key: $KEY" "http://127.0.0.1:8080/v1/decisions/stream?startup=true"
# {"new": [...], "deleted": [...]}

2. Le bouncer pare-feu #

Installation, configuration et contrôle.

Installer #

sudo apt install crowdsec-firewall-bouncer-nftables
# ou : crowdsec-firewall-bouncer-iptables
sudo systemctl status crowdsec-firewall-bouncer
sudo cscli bouncers list

Sur la même machine que la LAPI, le paquet crée sa clé tout seul. Sinon, générez-la et reportez-la dans la configuration.

Configurer #

Le fichier est /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml. Placez vos réglages dans un fichier .yaml.local pour qu'ils survivent aux mises à jour.

mode: nftables
update_frequency: 10s
log_mode: file
log_dir: /var/log/
log_level: info
api_url: http://127.0.0.1:8080/
api_key: VOTRE_CLE
disable_ipv6: false
deny_action: DROP
deny_log: false
nftables:
  ipv4:
    enabled: true
    set-only: false
    table: crowdsec
    chain: crowdsec-chain
    priority: -10
  ipv6:
    enabled: true
    set-only: false
    table: crowdsec6
    chain: crowdsec6-chain
    priority: -10
OptionRôle
modenftables, iptables, ipset, pf
update_frequencyFréquence de mise à jour
deny_actionDROP (par défaut) ou REJECT
iptables_chainsChaînes à protéger. Ajoutez DOCKER-USER pour les ports de conteneurs publiés
set-onlyVous gérez les règles, le bouncer remplit seulement le set

Vérifier #

sudo cscli decisions add --ip 203.0.113.50 --duration 10m
sudo nft list table ip crowdsec
sudo cscli metrics show bouncers
sudo cscli decisions delete --ip 203.0.113.50
table ip crowdsec {
	counter crowdsec-blacklists-cscli {
		packets 3 bytes 180
	}
	set crowdsec-blacklists-cscli {
		type ipv4_addr
		flags timeout
		elements = { 203.0.113.50 timeout 9m58s expires 9m50s }
	}
}
Ne vous bannissez pas. Avant de tester, ajoutez votre adresse d'administration à une allowlist et gardez un accès console chez votre hébergeur.

Sources #

Commandes et blocage vérifiés sur CrowdSec 1.8.2 et le bouncer pare-feu 0.0.38 en mode nftables.

📄 Les bouncers CrowdSec : principes et bouncer pare-feu →

Mon suivi

  • ⏱ Durée estimée : ≈ 9 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

Articles recommandés

Collections, parsers et scénarios CrowdSec

Le Hub, les collections, le pipeline des parsers et les scénarios : installer, comprendre avec cs...

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...

CrowdSec ou Fail2ban : quelles différences ?

Comparaison de CrowdSec et Fail2ban : détection, blocage, partage, performances, multi-serveurs, ...

Sécurité et durcissement d'un serveur Linux

Durcir un serveur Linux : moindre privilège, mises à jour, SSH sécurisé, pare-feu, fail2ban, SELi...

Le réseau Google Cloud : VPC mondial, sous-réseaux, pare-feu et équilibrage

Concevoir le réseau sur Google Cloud : VPC mondial et sous-réseaux régionaux, règles de pare-feu ...

Bonnes pratiques d'administration Linux

Check-list pour administrer des serveurs Linux : comptes et sudo, SSH, mises à jour, services sys...

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 ...

Traefik : les logs (journaux applicatifs et access logs)

Configurer les deux journaux de Traefik : le journal de fonctionnement (niveaux, format) et les a...

Protection des Applications

Découvrez comment sécuriser vos backends contre les abus et les attaques courantes. Guide pratiqu...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !