CrowdSec : l'IDS/IPS collaboratif qui remplace fail2ban
Guide CrowdSec complet : installation, collections, bouncers Nginx/Docker, dashboard et alertes Telegram. L'alternative moderne a fail2ban.
En 2024, les scans automatisés attaquent votre serveur en moins de 5 minutes après sa mise en ligne. J'ai vu des serveurs fraîchement installés recevoir plus de 10 000 tentatives de connexion SSH en 24h. fail2ban a longtemps été la réponse standard, mais CrowdSec est une évolution majeure : intelligence collective partagée, détection comportementale multi-protocoles, et intégration avec l'écosystème réseau. Ce guide vous montre comment déployer CrowdSec en production.
Pourquoi CrowdSec plutôt que fail2ban ?
fail2ban est un excellent outil, mais il fonctionne de façon isolée — chaque serveur apprend seul de ses attaques. CrowdSec change le paradigme : quand votre serveur détecte une IP malveillante, elle est partagée avec tous les membres de la communauté CrowdSec (380 000+ instances en 2024). Quand quelqu'un attaque un serveur en Corée, votre serveur à Paris est déjà protégé.
- Intelligence collective : blocklists communautaires (5+ millions d'IPs malveillantes)
- Multi-protocoles : SSH, HTTP, MySQL, RDP, Kubernetes, tout ce qui a des logs
- Détection comportementale : patterns d'attaque, pas juste un compteur de tentatives
- Remédiation flexible : bloquer, captcha, rediriger, notifier
- API moderne : intégration avec nginx, Traefik, HAProxy, OPNsense...
- Composant séparé : agent léger + moteur de décision découplés

Architecture CrowdSec
CrowdSec a une architecture en trois parties, ce qui le rend très flexible :
- Agent (crowdsec) : lit les logs, détecte les comportements malveillants
- Local API (LAPI) : cerveau local qui prend les décisions de blocage
- Bouncers : appliquent les décisions (iptables, nginx, OPNsense...)
Cette séparation permet par exemple d'avoir un agent sur chaque serveur qui remonte les alertes à une LAPI centrale, et des bouncers sur vos firewalls.
Installation CrowdSec
Sur Ubuntu / Debian
# Méthode officielle (script d'installation)
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install -y crowdsec
# Vérifier l'installation
sudo systemctl status crowdsec
sudo cscli version
# Afficher les collections installées
sudo cscli collections listSur CentOS / AlmaLinux / Rocky Linux
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bash
sudo dnf install -y crowdsec
sudo systemctl enable --now crowdsec
Configuration des collections
CrowdSec utilise des 'collections' — des ensembles de scénarios de détection thématiques. Installez ceux qui correspondent à vos services :
# Collections indispensables
sudo cscli collections install crowdsecurity/linux # SSH, syslog
sudo cscli collections install crowdsecurity/nginx # Accès web
sudo cscli collections install crowdsecurity/apache2 # Apache
sudo cscli collections install crowdsecurity/mysql # Base de données
sudo cscli collections install crowdsecurity/postfix # Serveur mail
sudo cscli collections install crowdsecurity/wordpress # CMS WordPress
sudo cscli collections install crowdsecurity/traefik # Reverse proxy Traefik
# Lister tous les scénarios disponibles
sudo cscli scenarios list --all
# Afficher les parsers actifs
sudo cscli parsers listAprès l'installation des collections, redémarrez CrowdSec pour prendre en compte les nouveaux scénarios :
sudo systemctl reload crowdsec
# Vérifier que les nouvelles collections sont actives
sudo cscli collections list
# Voir les logs en temps réel
sudo journalctl -u crowdsec -fInstaller les bouncers — là où la magie opère
Bouncer iptables (blocage réseau bas niveau)
# Bloquer directement au niveau du firewall kernel
sudo apt install -y crowdsec-firewall-bouncer-iptables
# Configuration /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
sudo nano /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml# /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
mode: iptables
pid_dir: /var/run/
update_frequency: 10s
daemonize: true
log_mode: file
log_dir: /var/log/
log_level: info
api_url: http://127.0.0.1:8080
api_key: <VOTRE_API_KEY>
disable_ipv6: false
deny_action: DROP
deny_log: false
supported_decisions_types:
- ban# Démarrer le bouncer
sudo systemctl enable --now crowdsec-firewall-bouncer
# Vérifier
sudo cscli bouncers listBouncer nginx (blocage HTTP)
sudo apt install -y crowdsec-nginx-bouncer
# Configuration dans /etc/nginx/conf.d/crowdsec.conf
# (ajouté automatiquement à l'installation)
sudo nginx -t && sudo systemctl reload nginx
Hub CrowdSec — Blocklists premium
Le Hub CrowdSec (app.crowdsec.net) offre des blocklists premium enrichies :
# S'enregistrer sur le Hub CrowdSec
sudo cscli console enroll <votre-token-hub>
# Synchroniser avec le Hub
sudo cscli hub update
# Abonnement aux blocklists (gratuit pour les essentiels)
# Via l'interface web app.crowdsec.net :
# - Firehol Level 1 (IPs malveillantes connues)
# - Proxy et VPN suspects
# - Tor exit nodes
# - Scanners connus (Shodan, Censys...)
# Vérifier la synchronisation
sudo cscli hub listAlertes et notifications
Configurer des notifications en temps réel via Telegram, Slack ou email :
# /etc/crowdsec/notifications/telegram.yaml
type: telegram
name: telegram_default
log_level: info
format: |
{{range . -}}
🚨 CrowdSec Alert
IP: {{.Source.IP}}
Country: {{.Source.Cn}}
Reason: {{.Scenario}}
Action: {{.Decisions | len}} decision(s)
{{end -}}
# Plugin Telegram
token: "VOTRE_TOKEN_BOT_TELEGRAM"
chat_id: "VOTRE_CHAT_ID"
# Activer la notification
sudo cscli notifications add telegram_default
sudo cscli notifications test telegram_default
Gestion des décisions
# Voir les IPs actuellement bloquées
sudo cscli decisions list
# Bannir manuellement une IP
sudo cscli decisions add --ip 1.2.3.4 --duration 24h --reason "Test manuel"
# Débannir une IP (faux positif)
sudo cscli decisions delete --ip 1.2.3.4
# Débannir par ID de décision
sudo cscli decisions delete --id 42
# Voir les alertes récentes
sudo cscli alerts list
# Stats globales
sudo cscli metrics
# Simuler le mode DRY RUN (ne bloque pas, juste observe)
# Dans /etc/crowdsec/config.yaml :
# simulation: trueDéploiement multi-serveurs
Pour une infrastructure avec plusieurs serveurs, centralisez la LAPI sur un serveur dédié :
# Sur le serveur LAPI central
# /etc/crowdsec/config.yaml — modifier l'écoute
api:
server:
listen_uri: 0.0.0.0:8080
# Sur les serveurs agents
# /etc/crowdsec/config.yaml
api:
client:
insecure_skip_verify: false
credentials_path: /etc/crowdsec/local_api_credentials.yaml
# /etc/crowdsec/local_api_credentials.yaml
url: http://<IP_LAPI>:8080
login: <agent_login>
password: <agent_password>
# Enregistrer l'agent auprès de la LAPI centrale
sudo cscli lapi register --url http://<IP_LAPI>:8080 --machine agent-serveur1
Prochaines étapes
- Configurer l'intégration avec OPNsense/PFSense via le bouncer pfSense
- Mettre en place des whitelist pour vos IPs légitimes (éviter les faux positifs)
- Explorer les scénarios personnalisés pour vos applications métier
- Centraliser les logs avec Loki + Grafana pour la visualisation
- Tester le mode simulation pendant 48h avant d'activer le blocage
Téléchargez ce guide en PDF pour le consulter hors ligne.
⬇ Télécharger le guide (PDF)🚀 Aller plus loin avec BOTUM
Ce guide couvre les bases. En production, chaque environnement a ses spécificités. Les équipes BOTUM accompagnent les organisations dans le déploiement, la configuration avancée et la sécurisation de leur infrastructure. Si vous avez un projet, parlons-en.
Discuter de votre projet →