Files
2026-06-09 18:40:21 +02:00

160 lines
6.0 KiB
Markdown

---
title: CrowdSec
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, networking, security, ids, ips, bouncer, go, collaborative]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=networking, https://github.com/crowdsecurity/crowdsec]
---
# 🛡️ CrowdSec
> **Moteur de sécurité comportementale et collaborative** : analyse logs, détecte les attaques, bloque via bouncer, et partage les IOC avec la communauté. Le successeur moderne et open source de Fail2Ban, avec une dimension crowd-sourced.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | [crowdsec.net](https://crowdsec.net) |
| **GitHub** | [crowdsecurity/crowdsec](https://github.com/crowdsecurity/crowdsec) |
| **License** | MIT |
| **Langage** | Go |
| **Étoiles** | 9 800 ⭐ |
| **Dernière MAJ** | 2026-05-28 |
| **Catégorie** | [[cat-networking\|Networking]] |
## Description
CrowdSec est un **security engine** écrit en Go qui reprend la philosophie de [[app-fail2ban]] (parser les logs, détecter des patterns, bloquer) mais y ajoute trois innovations majeures : (1) une **logique de décision** plus fine via un DSL de scénarios, (2) un **bouncer** qui applique la décision (ban iptables, nginx, Cloudflare…), et (3) un **partage d'IOC anonymisé** avec la communauté. Quand votre instance bannit une IP qui scanne votre SSH, cette IP est signalée à l'API centrale et protégée sur des milliers d'autres instances en quelques secondes.
L'architecture est modulaire : un **agent** lit les logs et déclenche des alertes, des **scénarios** (collections YAML) décrivent les comportements suspects, un **bouncer** (plugin) applique la remédiation. Plus de 400 scénarios couvrent SSH, HTTP, WordPress, nginx, Traefik, Linux, Kubernetes, etc. La console web [[app-crowdsec-manager]] offre un dashboard de visualisation, alertes et gestion multi-instances.
Le modèle économique est **open core** : le moteur est MIT, certains bouncers avancés (API premium, blocklists géographiques, console SaaS) sont payants. Pour un homelab, l'**édition community** est largement suffisante.
## Installation
### Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
crowdsec:
image: crowdsecurity/crowdsec:latest
container_name: crowdsec
restart: unless-stopped
environment:
- COLLECTIONS=crowdsecurity/sshd crowdsecurity/nginx crowdsecurity/linux crowdsecurity/wordpress
- PARSE_ACQUIS_TIMEOUT=2s
volumes:
- cs-config:/etc/crowdsec
- cs-data:/var/lib/crowdsec/data
- /var/log:/var/log:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- monitoring
# Bouncer qui bloque au niveau pare-feu
bouncer-traefik:
image: fbonalair/crowdsec-traefik-bouncer:latest
container_name: crowdsec-bouncer
restart: unless-stopped
environment:
- CROWDSEC_BOUNCER_API_KEY=${CROWDSEC_BOUNCER_API_KEY}
- CROWDSEC_AGENT_HOST=crowdsec:8080
networks:
- monitoring
volumes:
cs-config:
cs-data:
networks:
monitoring:
driver: bridge
```
### Installation manuelle (Debian)
```bash
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec
sudo cscli collections install crowdsecurity/sshd crowdsecurity/nginx
sudo systemctl enable --now crowdsec
```
## Configuration
Fichier principal : `/etc/crowdsec/config.yaml`. Acquisition des logs (exemple) :
```yaml
source: journalctl
journalctl_filter:
- _SYSTEMD_UNIT=sshd.service
labels:
type: syslog
---
source: file
filenames:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
labels:
type: nginx
```
Commandes CLI (`cscli`) :
```bash
cscli decisions list # bannissements actifs
cscli decisions delete --id 42 # débannir
cscli alerts list # alertes brutes
cscli hub list # scénarios disponibles
cscli hub install crowdsecurity/wordpress
```
API exposée sur `localhost:8080`, à ne pas exposer publiquement.
## Alternatives
### Open Source
- [[app-fail2ban]] — Ancêtre, plus simple, pas collaboratif, Python
- [[app-crowdsec-manager]] — Console web officielle (visualisation)
- **Wazuh** (fork OSS d'OSSEC) — SIEM complet, plus lourd
- **Suricata / Zeek** — NIDS réseau, niveau paquet
- **OSSEC** — HIDS historique (C, plus de développement)
### Propriétaire (ce que CrowdSec remplace)
- **Cloudflare Bot Management** — WAF commercial, pay-as-you-go
- **AWS GuardDuty** — IDS managé, facturation au Go
- **Datadog Security Monitoring** — SaaS d'observabilité sécurité
- **Fail2ban Cloud (Cognito)** — Fork commercial de Fail2Ban
## Sécurité
- **Inscrire son instance** sur crowdsec.net (compte gratuit) pour bénéficier du partage d'IOC mondial.
- **Ne pas exposer l'API 8080** sur Internet : la clé API sert à authentifier les bouncers.
- **Choisir ses collections avec soin** : trop de scénarios = faux positifs et charge CPU.
- **Whitelist** vos IP de monitoring/administration dans `postoverflows/s02-enrich/whitelist.yaml`.
- **Surveiller la latence API** : si crowdsec.net est down, la décision locale continue mais l'enrichissement IOC est KO.
- **Bouncer Traefik** : protège tous les services derrière Traefik sans config par service.
- **Consulter le dashboard** : la console [[app-crowdsec-manager]] expose le top des attaques, l'efficacité des scénarios et les faux positifs.
## Ressources
- [Site officiel](https://crowdsec.net)
- [Documentation](https://docs.crowdsec.net)
- [Hub de scénarios](https://hub.crowdsec.net)
- [GitHub](https://github.com/crowdsecurity/crowdsec)
- [Forum communautaire](https://discourse.crowdsec.net)
## Pages Liées
- [[cat-networking|Networking]] — Catégorie parente
- [[cat-security|Sécurité]] — Catégorie transversale
- [[app-fail2ban]] — Comparaison directe avec CrowdSec
- [[app-crowdsec-manager]] — Console web d'administration
- [[app-traefik]] — Reverse-proxy pair avec le bouncer
- [[recettes-docker-compose|Recettes Docker Compose]]
- [[securisation-home-lab]] — Stratégie défense en profondeur