- Prérequis
- Installation du Repository
- Installation de CrowdSec
- Installation du Bouncer iptables
- Paramétrage des Collections
- Gestion des Collections
- Dépannage utile
CrowdSec est un système de détection et blocage d'intrusions open-source qui analyse vos logs en temps réel pour identifier les attaques (brute-force, SQL injection, scanning, etc.). Il crée automatiquement des décisions de blocage (ban des IPs malveillantes) et les applique via iptables/nftables ou d'autres bouncers. C'est comme un pare-feu comportemental collaboratif : il protège votre serveur ET partage les menaces détectées avec une communauté pour protéger tous les autres.
Avant de commencer, assurez-vous d'avoir :
- Un système Debian 10 ou supérieur
- Un accès root ou des droits sudo
- Une connexion Internet stable
- iptables installé (généralement présent par défaut)
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bashCette commande télécharge et exécute le script d'installation automatique du repository CrowdSec. Le script :
- Ajoute la clé GPG officielle
- Configure les sources apt
- Met à jour le cache des packages
cat /etc/apt/sources.list.d/crowdsec_crowdsec.listVous devriez voir une ligne pointant vers le repository packagecloud.
sudo apt updatesudo apt install crowdsecsudo systemctl start crowdsec
sudo systemctl enable crowdsecsudo systemctl status crowdsecPour vérifier que CrowdSec fonctionne correctement :
sudo cscli versionCela affiche la version installée et l'état du service.
Le bouncer iptables applique les décisions de CrowdSec en bloquant les IPs via iptables.
sudo apt install crowdsec-firewall-bouncer-iptablesLe fichier de configuration se trouve à :
/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yamlVérifier la configuration par défaut :
cat /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yamlsudo systemctl start crowdsec-firewall-bouncer.service
sudo systemctl enable crowdsec-firewall-bouncer.servicesudo systemctl status crowdsec-firewall-bouncer.servicesudo cscli bouncers listLes collections sont des ensembles de parseurs, scénarios et postprocesseurs. CrowdSec les utilise pour détecter les menaces.
La configuration de CrowdSec se trouve à :
/etc/crowdsec/config.yamlla commande cscli setup permet de definir quels logs sont lus
Vous pourrez les verifier
ls -lR /etc/crowdsec/acquis.d/cette commande devra etre faite apres chaque installation d'un service, les fichiers d'acquisition servent a donner la cible des logs a lire.
Exemple de configuration pour un serveur debian:
cat /etc/crowdsec/acquis.d/setup.sshd.yaml
#
# Configuration generated by "cscli setup".
# Please check your non-generated configuration files to make sure
# the log sources are not acquired twice. This includes
# the file acquis.yaml created by crowdsec <= 1.7.0.
#
# cscli-checksum: 2536c85258d4efc265e4627ced7e2903
journalctl_filter:
- _SYSTEMD_UNIT=ssh.service
labels:
type: syslog
source: journalctlcat /etc/crowdsec/acquis.d/setup.postfix.yaml
#
# Configuration generated by "cscli setup".
# Please check your non-generated configuration files to make sure
# the log sources are not acquired twice. This includes
# the file acquis.yaml created by crowdsec <= 1.7.0.
#
# cscli-checksum: 63dc0aef180c8549bb3e67535fc9a977
filenames:
- /var/log/mail.log
- /var/log/maillog
labels:
type: syslog
source: filecat /etc/crowdsec/acquis.d/setup.linux.yaml
#
# Configuration generated by "cscli setup".
# Please check your non-generated configuration files to make sure
# the log sources are not acquired twice. This includes
# the file acquis.yaml created by crowdsec <= 1.7.0.
#
# cscli-checksum: a380e4b3fc5e43e510e8287a3fcbe374
filenames:
- /var/log/messages
- /var/log/syslog
- /var/log/kern.log
labels:
type: syslog
source: filesudo cscli config showCela affiche la configuration globale active.
Pour voir les collections disponibles dans le hub CrowdSec :
sudo cscli collections list --allCela affiche :
- Les collections installées (marquées d'une coche ✓)
- Les collections disponibles à installer
- La description de chaque collection
- L'auteur et la version
sudo cscli collections inspect <nom-collection>Exemple :
sudo cscli collections inspect crowdsecurity/apache2Cela affiche les composants inclus dans la collection (parseurs, scénarios, etc.).
Pour installer une collection officielle de CrowdSec :
sudo cscli collections install crowdsecurity/apache2sudo cscli collections install crowdsecurity/apache2 crowdsecurity/linux crowdsecurity/nginxcrowdsecurity/apache2: Détection pour Apachecrowdsecurity/nginx: Détection pour Nginxcrowdsecurity/sshd: Détection pour SSHcrowdsecurity/linux: Détection pour logs Linux génériques
Après avoir installé une nouvelle collection, rechargez CrowdSec :
sudo systemctl reload crowdsecOu redémarrez complètement :
sudo systemctl restart crowdsecsudo cscli collections remove <nom-collection>Exemple :
sudo cscli collections remove crowdsecurity/apache2Mise à jour de toutes les collections :
sudo cscli hub update
sudo cscli collections upgrade --allMise à jour d'une collection spécifique :
sudo cscli collections upgrade <nom-collection>Pour voir quels parseurs et scénarios sont chargés :
sudo cscli parsers list
sudo cscli scenarios listsudo tail -f /var/log/crowdsec.logsudo tail -f /var/log/crowdsec-firewall-bouncer.logVous pouvez scanner intentionnellement vos logs pour vérifier que les collections fonctionnent :
sudo cscli metricssudo iptables -L -n -v | grep -i crowdsudo ipset -Lroot@ns3081840:~# cscli decisions list
╭────────┬──────────┬───────────────────┬───────────────────────────┬────────┬─────────┬───────────────────────────┬────────┬────────────┬──────────╮
│ ID │ Source │ Scope:Value │ Reason │ Action │ Country │ AS │ Events │ expiration │ Alert ID │
├────────┼──────────┼───────────────────┼───────────────────────────┼────────┼─────────┼───────────────────────────┼────────┼────────────┼──────────┤
│ 120041 │ crowdsec │ Ip:174.138.5.139 │ crowdsecurity/ssh-slow-bf │ ban │ NL │ 14061 DIGITALOCEAN-ASN │ 13 │ 3h45m19s │ 49 │
│ 120040 │ crowdsec │ Ip:178.128.240.16 │ crowdsecurity/ssh-slow-bf │ ban │ NL │ 14061 DIGITALOCEAN-ASN │ 14 │ 3h20m37s │ 48 │
│ 120039 │ crowdsec │ Ip:187.33.154.222 │ crowdsecurity/ssh-bf │ ban │ ES │ 49635 Cloudi Nextgen Sl │ 7 │ 3h5m15s │ 47 │
│ 120038 │ crowdsec │ Ip:164.92.221.79 │ crowdsecurity/ssh-slow-bf │ ban │ NL │ 14061 DIGITALOCEAN-ASN │ 12 │ 2h39m46s │ 46 │
│ 105037 │ crowdsec │ Ip:195.178.110.30 │ crowdsecurity/ssh-slow-bf │ ban │ BG │ 48090 Techoff Srv Limited │ 23 │ 49m41s │ 44 │
│ 90036 │ crowdsec │ Ip:134.199.195.98 │ crowdsecurity/ssh-slow-bf │ ban │ US │ 14061 DIGITALOCEAN-ASN │ 12 │ 1m28s │ 42 │
╰────────┴──────────┴───────────────────┴───────────────────────────┴────────┴─────────┴───────────────────────────┴────────┴────────────┴──────────╯
1 duplicated entries skipped
root@ns3081840:~# cscli decisions remove -i 174.138.5.139
INFO 1 decision(s) deleted