RousselTMLEARNING

Artículo · CrowdSec: del descubrimiento a la experiencia

Los bouncers y el bouncer de cortafuegos

Este artículo está disponible en francés.

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 →

Mi seguimiento

  • ⏱ Duración estimada : ≈ 9 min

Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión

💬 Hacer una pregunta

Artículos recomendados

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

CrowdSec : comprendre le pare-feu collaboratif

Ce qu'est CrowdSec, comment il détecte et bloque les attaques : Security Engine, parsers, scénari...

Protéger Traefik avec CrowdSec : le plugin bouncer

Mettre en place le bouncer CrowdSec dans Traefik : plugin, middleware, modes stream et live, IP r...

Bouncers CrowdSec pour Nginx, Apache et HAProxy

Mettre en place les bouncers CrowdSec pour Nginx, OpenResty, Apache et HAProxy SPOA : configurati...

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

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

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

Réseau sous Linux : configuration, diagnostic, pare-feu et SSH

Configurer et dépanner le réseau Linux : ip, ss, netplan et NetworkManager, DNS, diagnostic par c...

Apoyar

♥ APOYAR

Apoya RousselTM Learning

Los cursos, artículos, prácticas y certificados siguen siendo gratuitos y sin publicidad intrusiva. Una contribución libre, por el importe que elijas, financia el alojamiento, los entornos de prácticas y nuevos contenidos.

Contribuir con PayPal Importe libre · tarjeta o cuenta PayPalMás información
QR code PayPal
O escanea este código QR con tu teléfono

¡Gracias, cada contribución cuenta!