Aller au contenu

CrowdSec

Rôle

Détection d'intrusion et blocage automatique d'IPs malveillantes, installé sur LXC 101 (NGINX Proxy Manager). Protège l'ensemble des services exposés via le reverse proxy.

Accès

LXC 101 — 192.168.1.84
Installation Native (pas Docker)
Version agent v1.7.8

Architecture

Logs NPM → CrowdSec agent → LAPI → Bouncer nftables → DROP (firewall avant nginx)

Le bouncer bloque les IPs au niveau firewall, avant même que nginx ne reçoive la requête.

Configuration

Sources de logs analysées

Fichier Contenu
/data/logs/proxy-host-*_access.log Logs par proxy host
/data/logs/default-host_access.log Log du vhost par défaut

Scénarios de détection

  • 58 scénarios actifs
  • Collection crowdsecurity/nginx incluse (scan de ports, bruteforce, etc.)

Bouncer nftables

Package crowdsec-firewall-bouncer-nftables
Tables ip crowdsec (IPv4) · ip6 crowdsec6 (IPv6)
Mécanisme Set nftables avec timeout automatique

Les IPs bannies sont ajoutées au set nftables et supprimées automatiquement à l'expiration du ban.

Délai de démarrage bouncer

Pour éviter une erreur LAPI au boot (bouncer qui démarre avant que l'agent soit prêt) :

[Unit]
After=crowdsec.service

[Service]
ExecStartPre=/bin/sleep 5

Notifications ntfy

Digest quotidien à 7h00 (LXC 101) — résumé des 24 dernières heures :

Champ Contenu
Nb de bans Total d'IPs bannies sur 24h
Top scénarios Scénarios les plus déclenchés
Top pays Pays d'origine des IPs bannies
Priorité high si ≥ 20 bans, sinon normale

Script : /opt/crowdsec-notify/notify.py sur LXC 101.

Commandes utiles

# État du service
pct exec 101 -- cscli alerts list

# IPs actuellement bannies
pct exec 101 -- cscli decisions list

# Bannir manuellement une IP
pct exec 101 -- cscli decisions add --ip <IP>

# Débannir une IP
pct exec 101 -- cscli decisions delete --ip <IP>

# Métriques du bouncer
pct exec 101 -- cscli metrics

Débogage

# Statut de l'agent
pct exec 101 -- systemctl status crowdsec

# Statut du bouncer
pct exec 101 -- systemctl status crowdsec-firewall-bouncer

# Logs de l'agent
pct exec 101 -- journalctl -u crowdsec -n 50

# Vérifier que nftables contient bien le set crowdsec
pct exec 101 -- nft list ruleset | grep crowdsec