160 lines
6.0 KiB
Markdown
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
|