Passionné de cybersécurité défensive et d'automatisation système, j'ai construit ce tableau de bord SOC pour surveiller mon infrastructure homelab en conditions réelles — 24/7, en production, depuis plusieurs mois.
Ce n'est pas un projet de démonstration. C'est un SOC opérationnel face à de vraies attaques quotidiennes : scans massifs, tentatives d'intrusion SSH, exploits web automatisés. Chaque tuile, chaque alerte, chaque graphique est le fruit d'itérations successives confrontées à la réalité du terrain.
L'infrastructure repose sur un hyperviseur Proxmox VE hébergeant plusieurs VMs Debian 13 — nginx en reverse proxy, CrowdSec AppSec WAF (~150 vPatch CVE actifs), Suricata IDS (90 000+ signatures), fail2ban sur 4 hôtes, UFW en politique deny-default. Le tout supervisé par un dashboard monolithique HTML/CSS/JS de 27 tuiles, sans aucune dépendance externe.
Ce projet a été conçu et développé en collaboration avec Claude AI (Anthropic) — Claude Code. De l'architecture initiale aux algorithmes de détection de pics réseau, des scripts de déploiement automatisé aux 27 tuiles de surveillance — l'IA a joué le rôle de co-développeur à chaque étape. Cette collaboration homme-IA illustre ce que l'on peut construire seul, rapidement, à un niveau professionnel.
Le contenu est structuré pour répondre aux besoins de :
- 🛡️ Professionnels IT & Sysadmins — déployer une stack sécurité complète et opérationnelle
- 🎓 Étudiants en cybersécurité — comprendre la chaîne défensive de bout en bout
- 🔍 Passionnés de homelab — aller au-delà des tutos, construire du réel
- 🤖 Explorateurs IA — voir comment Claude AI accélère le développement technique
| Vue d'ensemble | Architecture | Screenshots | Installation |
| Guide complet | 27 Tuiles | Stack technique | Intégration JARVIS |
SOC Dashboard est un tableau de bord de sécurité complet, opérationnel en production 24/7.
| Capacité | Détail |
|---|---|
| Périmètre | CrowdSec AppSec WAF (~150 vPatch CVE) + IPS nftables |
| IDS | Suricata — 90 000+ signatures, alertes classées par sévérité |
| Brute Force | fail2ban — 4 hôtes (srv-ngix, site-01, site-02, Proxmox) |
| Firewall | UFW — politique deny par défaut, matrice de règles |
| Kill Chain | MITRE ATT&CK — IPs actives par stage d'attaque |
| Dashboard | 27 tuiles — HTML/CSS/JS monolithique — zéro dépendance externe |
| IA | JARVIS intégré — analyse LLM, ban auto, alertes vocales |
flowchart TD
A["🖥️ CLIENT — navigateur LAN\nhttp://VOTRE_IP:8080"]
A -->|LAN| B
subgraph B["🖥️ Serveur principal — Debian 13"]
direction TB
N["nginx — :80 / :443"]
W["CrowdSec AppSec WAF\n~150 vPatch CVE"]
I["CrowdSec IPS nftables\nban IPs malveillantes"]
S["Suricata IDS\n90 000+ signatures réseau"]
F["fail2ban\nSSH · nginx · CVE jails"]
U["UFW\npolitique deny par défaut"]
G["monitoring_gen.py\ncron 5 min → monitoring.json"]
D["nginx → /var/www/monitoring/\nDashboard HTML"]
N --> W --> I --> S --> F --> U --> G --> D
end
H["Hôtes secondaires\nsite-01 · site-02 · Proxmox VE\nfail2ban remote stats"]
H -->|SSH paramiko| B
Tuile CROWDSEC — 90 décisions actives, Kill Chain scénarios, IPs bannies avec durée |
Tuile ACTIVITÉ 24H — requêtes légitimes vs blocages CrowdSec, histogramme horaire |
Tuile THREAT SCORE — score 0-100 sur 14 sources, niveau MOYEN/ÉLEVÉ/CRITIQUE |
Tuile FLUX LIVE — req/min fenêtre glissante 5 min, HTTP · Scanner · CS Bans |
Tuile JARVIS IA — quick prompts SOC, analyse LLM en temps réel, actions proactives |
Tuile JARVIS SETTINGS — seuils auto-engine, ban auto, restart services, alertes vocales |
| Étape | Description | Guide |
|---|---|---|
| 01 | Prérequis, OS, SSH, UFW de base | → Prérequis |
| 02 | nginx, virtual host, déploiement web | → nginx & Web |
| 03 | CrowdSec IPS + AppSec WAF (~150 vPatch CVE) | → CrowdSec |
| 04 | Suricata IDS (90K+ signatures, alertes 24h) | → Suricata |
| 05 | fail2ban multi-hôtes (SSH, nginx, CVE jails) | → fail2ban |
| 06 | Collecte des données — monitoring_gen.py | → Collecte |
| 07 | Dashboard HTML + déploiement final | → Dashboard |
# 1. Cloner
git clone https://github.com/0xCyberLiTech/SOC.git
cd SOC
# 2. Suivre le guide étape par étape
# Commencer par : docs/01-PREREQUIS.md
# 3. Déployer le dashboard
scp -P 2222 dashboard/monitoring-index.html user@VOTRE_IP:/var/www/monitoring/index.html✔ SOC Dashboard disponible sur → http://VOTRE_IP:8080
Voir toutes les tuiles
| # | Tuile | Données surveillées |
|---|---|---|
| 01 | KILL CHAIN | MITRE ATT&CK — IPs actives par stage d'attaque |
| 02 | CROWDSEC IPS | Décisions nftables, scénarios, bans actifs |
| 03 | CROWDSEC AppSec | Requêtes bloquées WAF, vPatch CVE actifs |
| 04 | SURICATA IDS | Alertes sév.1 / sév.2 sur 24h |
| 05 | FAIL2BAN | 4 hôtes — jails actives, IPs bannies |
| 06 | UFW FIREWALL | Matrice règles, anomalies détectées |
| 07 | HONEYPOT | Tentatives sur ports non exposés |
| 08 | CVE WATCH | Feed CVE récentes (NVD) |
| 09 | ROUTEUR | WAN tx/rx, conntrack, flux réseau |
| 10 | FREEBOX DELTA | BOX/WAN/SFP, graphiques, alertes trafic |
| 11 | NGINX TRAFIC | Requêtes 24h, erreurs, GeoIP |
| 12 | PROTOCOLES ACTIFS | Répartition protocoles/ports (live donut) |
| 13 | CARTE MONDIALE | Géolocalisation attaques — arcs animés |
| 14 | PROXMOX VE | CPU/RAM, VMs, sparklines |
| 15 | WINDOWS | Disques, GPU, sauvegarde |
| 16 | SSH | Sessions actives, uptimes |
| 17 | SERVICES | État services critiques |
| 18 | CRONS | Tâches planifiées |
| 19 | MISES À JOUR | Paquets en attente |
| 20 | THREAT SCORE | Score 0-100 sur 14 sources |
| 21 | JARVIS IA | Actions proactives, quick prompts, auto-engine |
| 22 | ALERTES TRAFIC | Pics WAN, historique 24h, détection d'anomalies |
| 23 | FLUX LIVE | req/min fenêtre glissante 5 min |
| 24 | ACTIVITÉ 24H | Volume d'attaques par heure, histogramme |
| 25 | GPU IA | RTX — usage CUDA, VRAM, température |
| 26 | GeoIP TOP | Top pays attaquants sur 24h |
| 27 | HISTORIQUE | Graphes CPU/RAM/réseau sur 24h |
| Couche | Technologie | Rôle |
|---|---|---|
| Sécurité périmètre | CrowdSec AppSec + IPS | WAF ~150 vPatch CVE + ban IPs nftables |
| IDS | Suricata | 90 000+ signatures réseau |
| Brute Force | fail2ban | SSH/nginx/CVE — 4 hôtes |
| Firewall | UFW | Politique deny par défaut |
| Reverse proxy | nginx | TLS, rate limiting, GeoIP |
| Collecte | Python 3.11 — monitoring_gen.py | Cron 5 min → monitoring.json |
| Frontend | HTML/CSS/JS monolithique | Zéro dépendance externe |
| Virtualisation | Proxmox VE | Hyperviseur VMs |
| IA | JARVIS (Ollama local) | Analyse LLM, ban auto, alertes vocales |
Le dashboard SOC s'intègre avec JARVIS pour :
- Analyser les logs et alertes via LLM local (Ollama — phi4-reasoning)
- Bannir automatiquement les IPs si le seuil d'attaque est dépassé (via CrowdSec SSH)
- Redémarrer les services critiques détectés DOWN
- Alerter vocalement si le threat score atteint ÉLEVÉ ou CRITIQUE
- Journaliser chaque action SOC avec horodatage dans l'onglet SOC
✔ Aucune IP réelle — VOTRE_IP dans tous les exemples
✔ Aucun token, clé SSH ou mot de passe
✔ Aucun fichier JSON de monitoring (données live)
✔ Aucune donnée personnelle ou réseau privé
✔ Scripts fournis à titre d'exemple — adapter à votre infrastructure
| 🖥️ Infrastructure & Sécurité | 💻 Développement & Web | 🤖 Intelligence Artificielle |
|
|
|
|
🔒 Un projet proposé par 0xCyberLiTech • Développé en collaboration avec Claude AI (Anthropic) 🔒







