Retour aux projets
28 novembre 2024 4 min de lecture

Sécurité : Déploiement d'un IPS Collaboratif (CrowdSec)

#Cybersécurité #SecOps #Docker #IPS #Blue Team

Remplacement de Fail2Ban par CrowdSec sur une infrastructure Dockerisée : Détection comportementale et partage de menaces en temps réel.

Illustration de Sécurité : Déploiement d'un IPS Collaboratif (CrowdSec)

🛡️ Le Contexte : Protéger une infrastructure exposée

Dès l’instant où un serveur est connecté à Internet, il est scanné. Bots, script-kiddies, scanners de vulnérabilités : le bruit de fond est constant.

Historiquement, j’utilisais Fail2Ban, qui est très efficace pour bannir une IP après X tentatives de mot de passe ratées. Mais à l’ère du Cloud et des botnets massifs, cette approche réactive ne suffit plus.

J’ai donc migré la sécurité de mon serveur Phobos vers CrowdSec, une solution moderne, modulaire et surtout collaborative.


🧠 Pourquoi CrowdSec change la donne ?

CrowdSec n’est pas juste un “Fail2Ban sous stéroïdes”, c’est un changement de paradigme.

1. L’approche Comportementale (Behavioral Engine)

Fail2Ban lit des logs et cherche des motifs simples (Regex). CrowdSec, lui, analyse des scénarios complexes :

  • “Cette IP a tenté d’accéder à 10 pages qui n’existent pas en moins de 2 secondes (Scan Web).”
  • “Cette IP essaie de télécharger des fichiers sensibles (.env, .git).”
  • “Cette IP tente une injection SQL.”

2. La Force de la Communauté (The Crowd)

C’est la fonctionnalité “Waze” de la cybersécurité. Si mon serveur détecte une attaque venant de l’IP 1.2.3.4, il la bloque localement, mais il envoie aussi cette info (anonymisée) à l’API centrale. Si d’autres utilisateurs signalent la même IP, elle entre dans la Blocklist Globale.

Résultat : Mon serveur bloque préventivement des attaquants qui ne m’ont même pas encore touché, car ils ont été signalés par la communauté il y a 10 minutes.


⚙️ Architecture Technique Dockerisée

Intégrer un système de sécurité dans une stack de conteneurs demande une architecture réfléchie. J’ai découplé la Détection de la Remédiation.

A. L’Agent (Le Cerveau) 🧠

C’est un conteneur Docker dédié. Il a accès aux logs des autres services (Nginx, SSH) via des volumes partagés. Il analyse les flux en temps réel grâce à des Parsers (pour comprendre les logs) et des Scénarios (pour détecter les attaques).

B. Le Bouncer (Le Muscle) 💪

L’agent ne bloque rien lui-même. Il envoie l’ordre de blocage à un “Bouncer”. J’utilise le Firewall Bouncer, qui interagit directement avec le noyau Linux (iptables / nftables) pour dropper les paquets malveillants avant même qu’ils n’atteignent mes applications.


💻 Opérations et Commandes (CLI)

Au quotidien, j’interagis avec CrowdSec via la ligne de commande pour surveiller l’activité. Voici quelques commandes types (exécutées dans le conteneur) :

1. Voir qui est banni (La “Kill List”)

cscli decisions list
IDSource IPReasonActionCountry
14245.13.XX.XXcrowdsecurity/ssh-bfban:4h🇨🇳 CN
143185.22.XX.XXcrowdsecurity/http-crawl-non_staticsban:4h🇷🇺 RU

2. Métriques de performance

Pour vérifier que le système ne rate rien sans surcharger le CPU :

cscli metrics

Cela me permet de voir le nombre de lignes de logs parsées par seconde et les scénarios les plus déclenchés.

3. Gestion manuelle (Unban)

Si je me bannis moi-même par erreur (ça arrive aux meilleurs), je peux lever la sanction :

cscli decisions delete --ip <MON_IP_PERSONNELLE>

🔒 Configuration Avancée & Tuning

La sécurité “out-of-the-box” ne suffit pas. J’ai affiné la configuration pour mon environnement spécifique :

  1. Whitelisting : Configuration stricte pour que mes IPs de monitoring et de CI/CD ne soient jamais bannies.
  2. Collections : Installation de la collection crowdsecurity/nginx pour détecter les attaques Web spécifiques (XSS, Bad User Agents).
  3. Notifications : Liaison avec une API pour recevoir une alerte Slack/Discord à chaque fois qu’un bannissement majeur a lieu.

🎯 Bilan

L’adoption de CrowdSec sur mon infrastructure personnelle démontre ma capacité à :

  • Mettre en place une défense en profondeur.
  • Gérer des problématiques de logs dans un environnement conteneurisé.
  • Utiliser des outils de SecOps modernes.

Mon infrastructure est désormais plus propre, mes logs sont moins pollués, et je contribue activement à la sécurité globale d’Internet.