1. Le Hub et les collections #
Le contenu prêt à l’emploi.
Une collection, c’est quoi ? #
Une collection regroupe ce qu'il faut pour protéger un service : parsers, scénarios et parfois d'autres collections. Installez-la plutôt que d'assembler les pièces à la main. Le Hub les recense.
sudo cscli hub update
sudo cscli collections install crowdsecurity/nginx
sudo cscli collections list
sudo cscli scenarios list
sudo cscli parsers list
sudo systemctl reload crowdsec
# Mises à jour régulières
sudo cscli hub update && sudo cscli hub upgrade| Collection | Protège |
|---|---|
crowdsecurity/linux | Base Linux, avec crowdsecurity/sshd |
crowdsecurity/nginx | Nginx |
crowdsecurity/traefik | Traefik |
crowdsecurity/base-http-scenarios | Scanners, sondes, brute force HTTP |
crowdsecurity/http-cve | Exploitation de failles connues |
crowdsecurity/whitelist-good-actors | Exclut des acteurs légitimes connus |
2. Les parsers #
Comprendre chaque ligne.
Trois étapes #
Chaque ligne traverse trois étapes : s00-raw extrait le message, s01-parse reconnaît le service, s02-enrich ajoute date, pays ou champs HTTP. Le résultat est un événement, avec des champs comme evt.Meta.source_ip.
cscli explain : l’outil indispensable #
Pourquoi cette ligne n'a-t-elle rien déclenché ? cscli explain montre son trajet. 🟢 : le parser a réussi. 🔴 : il ne concerne pas cette ligne.
sudo cscli explain --log "Nov 7 08:58:22 srv sshd[9]: Failed password for root from 203.0.113.70 port 5 ssh2" --type syslogline: Nov 7 08:58:22 srv sshd[9]: Failed password for root from 203.0.113.70 port 5 ssh2
├ s00-raw
| └ 🟢 crowdsecurity/syslog-logs (+12 ~9)
├ s01-parse
| ├ 🔴 crowdsecurity/nginx-logs
| └ 🟢 crowdsecurity/sshd-logs (+9 ~1)
├ s02-enrich
| ├ 🟢 crowdsecurity/dateparse-enrich (+2 ~2)
| ├ 🟢 crowdsecurity/geoip-enrich (+9)
| └ 🔴 crowdsecurity/http-logs
├-------- parser success 🟢
├ Scenarios
├ 🟢 crowdsecurity/ssh-bf
├ 🟢 crowdsecurity/ssh-slow-bf
└ 🟢 crowdsecurity/ssh-time-based-bf3. Les scénarios #
Reconnaître un comportement.
Le seau percé #
Une rafale déborde vite. Un visiteur qui se trompe une fois de temps en temps ne remplit jamais son seau : c'est ce qui distingue une attaque d'une erreur humaine.
| Type | Déclenche quand… |
|---|---|
leaky | Le seau déborde, le cas le plus courant |
trigger | Dès le premier événement correspondant |
counter | Un nombre atteint sur une durée fixe |
conditional | Une condition sur le contenu du seau |
Écrire son scénario #
Détectons un brute force sur notre formulaire de connexion. Créez /etc/crowdsec/scenarios/local-login-bf.yaml :
type: leaky
name: local/login-bf
description: "Détecte le brute force sur le formulaire de connexion"
filter: "evt.Meta.service == 'http' && evt.Parsed.verb == 'POST' && evt.Meta.http_path == '/login' && evt.Meta.http_status == '401'"
groupby: evt.Meta.source_ip
capacity: 4
leakspeed: 10s
blackhole: 1m
labels:
remediation: true
service: http
behavior: http:bruteforce
label: "Brute force sur /login"| Champ | Rôle |
|---|---|
filter | Quels événements comptent |
groupby | Un seau par valeur, ici par IP |
capacity | Taille du seau |
leakspeed | Vitesse à laquelle il se vide |
blackhole | Silence après un débordement, pour éviter les doublons |
labels.remediation | true : l’alerte peut produire un blocage |
sudo systemctl reload crowdsec
sudo cscli scenarios list
sudo cscli alerts listTester sans risque : la simulation #
En simulation, le scénario crée une alerte et une décision marquée (simul), que les bouncers n'appliquent pas. Idéal pour mesurer les faux positifs.
sudo cscli simulation enable local/login-bf
sudo systemctl reload crowdsec
sudo cscli simulation status
sudo cscli decisions list
# Ip:192.0.2.77 | local/login-bf | (simul)ban
sudo cscli simulation disable local/login-bfSources #
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Articles recommandés
Bouncers CrowdSec pour Nginx, Apache et HAProxy
Mettre en place les bouncers CrowdSec pour Nginx, OpenResty, Apache et HAProxy SPOA : configurati...
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...
Traefik : les logs (journaux applicatifs et access logs)
Configurer les deux journaux de Traefik : le journal de fonctionnement (niveaux, format) et les a...
Protection des Applications
Découvrez comment sécuriser vos backends contre les abus et les attaques courantes. Guide pratiqu...
Fluent Bit : parsers et filters, structurer et transformer les logs
Structurer et transformer les logs dans Fluent Bit : parsers (json, regex, logfmt, ltsv), parsers...
LogQL (1/2) : requêter les logs (sélecteurs, filtres et parsers)
Apprendre LogQL : sélecteurs de flux, filtres de ligne, parsers json/logfmt/pattern/regexp, filtr...
Traefik : sécuriser et transformer les requêtes avec les middlewares (BasicAuth, ForwardAuth…)
Les middlewares Traefik modifient les requêtes et réponses entre le routeur et le service : authe...
Superviser et sécuriser AWS : CloudWatch, CloudTrail, Config, KMS et GuardDuty
Exploiter et protéger un environnement AWS : métriques, logs et alarmes CloudWatch, journal des a...
Écrire des scripts k6 : requêtes, vérifications, scénarios et exécuteurs
La structure d'un script k6 (init, setup, default, teardown), les requêtes HTTP, les checks, les ...