RousselTMLEARNING

Observabilité

Collections, parsers et scénarios CrowdSec

Le Hub, les collections, le pipeline des parsers et les scénarios : installer, comprendre avec cscli explain, écrire son propre scénario et le tester en simulation.

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.

Une collection regroupe parsers et scénarios ; une ligne passe par s00-raw, s01-parse et s02-enrich

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
CollectionProtège
crowdsecurity/linuxBase Linux, avec crowdsecurity/sshd
crowdsecurity/nginxNginx
crowdsecurity/traefikTraefik
crowdsecurity/base-http-scenariosScanners, sondes, brute force HTTP
crowdsecurity/http-cveExploitation de failles connues
crowdsecurity/whitelist-good-actorsExclut 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 syslog
line: 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-bf

3. Les scénarios #

Reconnaître un comportement.

Le seau percé #

Seau percé : capacité de 4, une goutte sort toutes les 10 secondes, le débordement déclenche une alerte

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.

TypeDéclenche quand…
leakyLe seau déborde, le cas le plus courant
triggerDès le premier événement correspondant
counterUn nombre atteint sur une durée fixe
conditionalUne 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"
ChampRôle
filterQuels événements comptent
groupbyUn seau par valeur, ici par IP
capacityTaille du seau
leakspeedVitesse à laquelle il se vide
blackholeSilence après un débordement, pour éviter les doublons
labels.remediationtrue : l’alerte peut produire un blocage
sudo systemctl reload crowdsec
sudo cscli scenarios list
sudo cscli alerts list

Tester 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-bf

Sources #

Articles liés

CrowdSec : comprendre le pare-feu collaboratif

Ce qu'est CrowdSec, comment il détecte et bloque les attaques : Security Engine, parsers, scénarios, Local AP…

CrowdSec ou Fail2ban : quelles différences ?

Comparaison de CrowdSec et Fail2ban : détection, blocage, partage, performances, multi-serveurs, et méthode p…

Installer et configurer CrowdSec : paquets, Docker, acquisition

Installer CrowdSec avec les paquets ou Docker, comprendre ses fichiers, déclarer les logs à lire, enrôler la …

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !