Objectif : déployer Suricata (NIDS) sur la VM SOC pour surveiller le trafic réseau, et Wazuh (HIDS) pour surveiller les hôtes. Les alertes des deux sondes remontent dans Splunk.
Suricata (NIDS) écoute le trafic réseau en temps réel et détecte les attaques en transit (scan de ports, exploits réseau, trafic suspect) — avant qu'elles n'atteignent l'hôte.
Wazuh (HIDS) surveille ce qui se passe sur l'hôte (modifications de fichiers, exécution de processus, connexions, logs système) — après qu'un événement se soit produit localement.
http://[IP_SOC]:8000security existant dans Splunkindex=security sourcetype=suricataip link show1514/UDP doit être ouvert sur la VM SOCfree -h| Horaire | Activité | VM(s) | Durée |
|---|---|---|---|
| 09h00 – 09h45 | Cours — NIDS vs HIDS, architecture Suricata, modes IDS/IPS | — | 45 min |
| 09h45 – 10h30 | Cours — Architecture Wazuh (Manager / Agent / Ruleset), FIM, rootcheck | — | 45 min |
| 10h30 – 10h45 | Pause | — | 15 min |
| 10h45 – 13h00 | TP 1 — Installation Suricata + centralisation alertes dans Splunk | SOC + Cible | 2h15 |
| 13h00 – 14h00 | Pause déjeuner | — | 1h |
| 14h00 – 17h30 | TP 2 — Installation Wazuh Manager + Agent + centralisation Splunk | SOC + Cible | 3h30 |
| 17h30 – 18h00 | Validation + débrief + snapshot | — | 30 min |
Suricata est installé sur la VM SOC et surveille l'interface réseau NAT VMware. Il génère des alertes au format EVE JSON, lues par le Splunk Universal Forwarder et centralisées dans Splunk.
Trafic réseau → Suricata (VM SOC, écoute sur l'interface NAT) → /var/log/suricata/eve.json → Splunk UF (VM SOC) → Splunk index=security
Le paquet Suricata du dépôt Ubuntu standard est souvent en retard de version. On utilise le PPA officiel de l'OISF pour avoir la dernière version stable.
sudo apt update sudo apt install -y software-properties-common # Ajouter le PPA officiel OISF sudo add-apt-repository ppa:oisf/suricata-stable -y sudo apt update sudo apt install -y suricata # Vérifier la version installée suricata --build-info | head -5
Suricata doit écouter sur l'interface qui reçoit le trafic du réseau NAT VMware — c'est celle qui porte l'IP 192.168.91.x.
# Trouver l'interface qui porte l'IP NAT VMware ip a | grep -B2 "192.168.91" # → Le nom de l'interface est affiché juste au-dessus (ex: ens33, ens32, eth0) # Alternative : lister toutes les interfaces ip link show # → Repérer l'interface qui n'est pas "lo" ni "docker" ni "veth" # Exemple typique sur VMware Workstation : # ens33 → interface NAT principal
Il sera utilisé dans toutes les étapes suivantes. Sur VMware Workstation avec Ubuntu 22.04, c'est généralement ens33. Sur d'autres configurations : ens32, eth0, enp0s3. Ne pas confondre avec lo (loopback).
On configure les trois paramètres essentiels : l'interface d'écoute, les réseaux à considérer comme "maison" (HOME_NET), et le format de sortie EVE JSON.
# 1. Définir HOME_NET avec le sous-réseau NAT VMware sudo sed -i 's|HOME_NET: "\[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12\]"|HOME_NET: "[192.168.91.0/24]"|' \ /etc/suricata/suricata.yaml # 2. Vérifier la modification grep "HOME_NET" /etc/suricata/suricata.yaml | head -3 # 3. Vérifier que la sortie EVE JSON est activée (elle l'est par défaut) grep -A5 "eve-log:" /etc/suricata/suricata.yaml | head -10 # → Doit afficher : enabled: yes et filename: eve.json
# Trouver et modifier la section af-packet pour pointer sur l'interface NAT # Remplacer "ens33" par le nom réel de votre interface grep -n "af-packet" /etc/suricata/suricata.yaml | head -5 # → Repérer la ligne avec "- interface: eth0" ou similaire # Modifier via sed (adapter eth0 et ens33 selon votre config) sudo sed -i 's/- interface: eth0/- interface: ens33/' /etc/suricata/suricata.yaml # Vérifier grep "interface:" /etc/suricata/suricata.yaml | head -3
suricata-update est l'outil officiel pour gérer les règles. Sur Suricata 8.x, il est déjà inclus dans le paquet — pas besoin de pip.
# Vérifier que suricata-update est disponible (inclus dans Suricata 8.x) which suricata-update suricata-update --version # Si absent sur votre version, l'installer via apt (pas pip) : # sudo apt install -y suricata-update # Mettre à jour l'index des sources puis télécharger les règles ET/open (~30 Mo) sudo suricata-update update-sources sudo suricata-update # Vérifier les règles téléchargées ls -lh /var/lib/suricata/rules/ sudo wc -l /var/lib/suricata/rules/suricata.rules # → 49 000+ règles avec Suricata 8.x
pip3 install suricata-update --break-system-packages
Cette option n'existe pas sur toutes les versions de pip et est inutile ici — suricata-update est embarqué nativement dans Suricata 8.x. Si vraiment absent : sudo apt install -y suricata-update.
alert tcp any any -> $HOME_NET 22 (msg:"ET SCAN SSH Scan"; flags:S; threshold:type both,track by_src,count 5,seconds 60; sid:2001219; rev:20;)
action alert · protocole tcp · source any · destination HOME_NET port 22 · options : message, seuil, identifiant
# Valider la configuration (test à sec) sudo suricata -T -c /etc/suricata/suricata.yaml -v 2>&1 | tail -5 # → Doit afficher : "Configuration provided was successfully loaded." # Démarrer Suricata sudo systemctl enable --now suricata # Vérifier le démarrage sudo systemctl status suricata # Suivre les logs de démarrage sudo tail -f /var/log/suricata/suricata.log # → Attendre les messages "engine started" # → Ctrl+C pour quitter le suivi
Le service Suricata est active (running) et le fichier /var/log/suricata/eve.json existe et grandit au fur et à mesure du trafic réseau.
Les règles ET/open ne contiennent pas de règle générique pour les scans SYN basiques. Il faut créer une règle locale dans /etc/suricata/rules/local.rules — c'est aussi la pratique SOC réelle pour les règles métier personnalisées.
# Créer le répertoire et le fichier de règles locales
sudo mkdir -p /etc/suricata/rules
sudo bash -c 'cat > /etc/suricata/rules/local.rules' << 'ENDOFFILE'
alert tcp any any -> $HOME_NET any (msg:"SCAN nmap SYN scan detected"; flags:S; threshold:type threshold,track by_src,count 5,seconds 3; sid:9000001; rev:1;)
ENDOFFILE
cat /etc/suricata/rules/local.rules
# Trouver le numéro de ligne de la section rule-files grep -n "rule-files" /etc/suricata/suricata.yaml # Ouvrir le fichier et ajouter local.rules dans la section rule-files : sudo nano /etc/suricata/suricata.yaml # Chercher "rule-files:" et ajouter en dessous : # - /etc/suricata/rules/local.rules # Valider la configuration sudo suricata -T -c /etc/suricata/suricata.yaml -v 2>&1 | tail -3 # → Doit afficher : "Configuration provided was successfully loaded." sudo systemctl restart suricata
Sans threshold, chaque paquet SYN TCP normal déclenche une alerte — Splunk serait noyé. Un scan nmap sur 1000 ports envoie 1000 SYN en moins d'une seconde : le seuil de 5 est largement atteint en pratique. C'est le compromis fondamental détection/faux positifs.
sudo apt install -y nmap # Un seul scan suffit — nmap envoie des centaines de SYN en une fraction de seconde # Remplacer 192.168.91.10 par l'IP réelle de votre VM SOC nmap -sS -p 1-1000 192.168.91.10
# Vérifier dans fast.log (plus lisible que eve.json pour un test rapide) sudo tail -20 /var/log/suricata/fast.log # → Doit afficher : [**] SCAN nmap SYN scan detected [**] # Voir toutes les signatures déclenchées dans eve.json sudo grep '"event_type":"alert"' /var/log/suricata/eve.json | python3 -c "import sys,json; [print(json.loads(l)['alert']['signature']) for l in sys.stdin]" | sort | uniq -c | sort -rn | head -10
Dans fast.log : [**] [1:9000001:1] SCAN nmap SYN scan detected [**] avec 192.168.91.20 → 192.168.91.10.
Vous pouvez aussi voir ET SCAN Possible Nmap User-Agent Observed — une règle ET/open qui détecte le User-Agent HTTP de nmap. Deux couches de détection pour un seul scan.
Chaque scan génère des milliers d'entrées dans eve.json. Si le disque se remplit, le système entier se bloque. Après les tests, vider le fichier : sudo truncate -s 0 /var/log/suricata/eve.json. Vérifier l'espace : df -h /.
Au Jour 2, le Splunk UF a été installé sur la VM cible. Ici, il faut l'installer sur la VM SOC pour lire les fichiers locaux (eve.json de Suricata, alerts.json de Wazuh).
Splunk Enterprise utilise le port management 8089. Le Splunk UF doit utiliser un port différent — choisir 8090 quand le démarrage demande un port de management.
# Vérifier si le UF est déjà présent sudo /opt/splunkforwarder/bin/splunk status 2>/dev/null || echo "UF absent, installation nécessaire" # Si absent : télécharger et installer (URL fournie par l'enseignant) wget -O /tmp/splunkforwarder.deb "URL_FOURNIE" sudo dpkg -i /tmp/splunkforwarder.deb # Premier démarrage — définir un compte admin UF (ex: admin / même mdp que Splunk) # Si "port 8089 already in use" → entrer 8090 quand demandé sudo /opt/splunkforwarder/bin/splunk start --accept-license --answer-yes --no-prompt # Activer le démarrage automatique sudo /opt/splunkforwarder/bin/splunk enable boot-start # Pointer le UF vers Splunk Enterprise (qui écoute sur le même hôte port 9997) # Remplacer VOTRE_MOT_DE_PASSE par celui défini ci-dessus sudo /opt/splunkforwarder/bin/splunk add forward-server 192.168.91.10:9997 -auth admin:VOTRE_MOT_DE_PASSE # Vérifier la connexion sudo /opt/splunkforwarder/bin/splunk list forward-server
Splunk Enterprise 9.x configure par défaut la réception en SSL (splunktcp-ssl:9997). Si le UF reçoit Connection reset by peer, vérifier /opt/splunk/etc/system/local/inputs.conf — si la ligne [splunktcp-ssl:9997] est présente, le UF doit envoyer en SSL. Dans ce cas ajouter dans /opt/splunkforwarder/etc/system/local/outputs.conf :
useSSL = truesslVerifyServerCert = false
Puis redémarrer : sudo /opt/splunkforwarder/bin/splunk restart
# Ajouter Suricata eve.json aux sources du Forwarder sudo bash -c 'cat >> /opt/splunkforwarder/etc/system/local/inputs.conf' << 'ENDOFFILE' [monitor:///var/log/suricata/eve.json] index = security sourcetype = suricata ENDOFFILE # Vérifier l'ajout cat /opt/splunkforwarder/etc/system/local/inputs.conf | grep -A3 "suricata" # Autoriser le Forwarder à lire les logs Suricata sudo chmod 644 /var/log/suricata/eve.json sudo usermod -aG adm splunk 2>/dev/null || true # Redémarrer le Forwarder sudo /opt/splunkforwarder/bin/splunk restart
Depuis l'interface Splunk, vérifier l'arrivée des alertes et explorer les données.
index=security sourcetype=suricata # ❓ Quels event_type voyez-vous ? (alert, dns, http, tls, flow...) # ❓ Suricata génère plus que des alertes — c'est un NIDS complet
index=security sourcetype=suricata event_type=alert | spath output=signature path=alert.signature | spath output=src_ip path=src_ip | spath output=dest_ip path=dest_ip | spath output=severity path=alert.severity | stats count by signature, src_ip, severity | sort -count # ⭐ LIVRABLE : Screenshot → binome_tp3_suricata.png # ❓ Quelle signature est déclenchée le plus souvent ? # ❓ Quelle est l'IP source des scans détectés ?
Vous devriez voir au moins deux signatures :
— SCAN nmap SYN scan detected (votre règle locale — plusieurs centaines d'occurrences)
— ET SCAN Possible Nmap User-Agent Observed (règle ET/open — quelques occurrences)
L'IP source est celle de votre VM cible (192.168.91.20). Les alertes SURICATA Applayer Detect protocol only one direction ou SURICATA HTTP request missing protocol sont des anomalies de protocole internes à Suricata — elles sont normales et sans risque.
# Voir la séquence : scan Suricata → tentatives SSH → ban Fail2ban index=security (sourcetype=suricata event_type=alert) OR (sourcetype=linux_secure "Failed password") OR (sourcetype=fail2ban "Ban") | eval source_tool=case(sourcetype=="suricata","1_Suricata", sourcetype=="linux_secure","2_SSH_fail", sourcetype=="fail2ban","3_Fail2ban") | stats count by source_tool | sort source_tool # ❓ Suricata a-t-il détecté le scan avant que Fail2ban ne réagisse ?
1. Vérifier que le Forwarder lit le fichier : sudo tail -f /var/log/splunk/splunkd.log | grep suricata
2. Vérifier les permissions : ls -la /var/log/suricata/eve.json — doit être lisible par tous.
3. Regénérer du trafic depuis la VM cible (nmap, curl) pour alimenter eve.json.
4. Vérifier dans Splunk que l'index security reçoit bien des données récentes.
Wazuh Manager s'installe sur la VM SOC et reçoit les données des agents déployés sur les hôtes à surveiller. Les alertes (intégrité de fichiers, authentification, rootcheck) remontent dans Splunk.
Wazuh Manager (VM SOC :1514/UDP) ← reçoit ← Wazuh Agent (VM cible Linux) → analyse → Alertes → /var/ossec/logs/alerts/alerts.json → Splunk UF → Splunk
# Installer les dépendances sudo apt install -y curl gnupg # Ajouter la clé GPG Wazuh curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH \ | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import sudo chmod 644 /usr/share/keyrings/wazuh.gpg # Ajouter le dépôt Wazuh 4.x echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" \ | sudo tee /etc/apt/sources.list.d/wazuh.list sudo apt update # Installer le Manager sudo apt install -y wazuh-manager # Démarrer et activer sudo systemctl enable --now wazuh-manager # Vérifier le démarrage (peut prendre 30-60 secondes) sudo systemctl status wazuh-manager
Le service wazuh-manager est active (running). Le répertoire /var/ossec/ existe avec les sous-dossiers logs/, rules/, etc/.
# Port 1514 UDP : communication agent → manager sudo ufw allow from 192.168.91.0/24 to any port 1514 proto udp # Port 1515 TCP : enregistrement des agents (optionnel selon version) sudo ufw allow from 192.168.91.0/24 to any port 1515 proto tcp sudo ufw reload # Vérifier que Wazuh écoute ss -ulnp | grep 1514
Le même dépôt est utilisé sur la VM cible, mais on installe le paquet wazuh-agent au lieu du Manager.
# Ajouter le dépôt Wazuh (même procédure que sur le Manager) sudo apt install -y curl gnupg curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH \ | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import sudo chmod 644 /usr/share/keyrings/wazuh.gpg echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" \ | sudo tee /etc/apt/sources.list.d/wazuh.list sudo apt update # Installer l'agent en définissant l'adresse du Manager # Remplacer 192.168.91.10 par l'IP réelle de votre VM SOC WAZUH_MANAGER="192.168.91.10" sudo apt install -y wazuh-agent # Démarrer l'agent sudo systemctl enable --now wazuh-agent # Vérifier le statut sudo /var/ossec/bin/wazuh-control status
# Lister les agents connectés sudo /var/ossec/bin/agent_control -l # Résultat attendu : # ID: 001, Name: dis-client, IP: 192.168.91.20, Status: Active # Vérifier les logs du Manager sudo tail -20 /var/ossec/logs/ossec.log | grep -i "agent\|connect"
# Vérifier le statut de l'agent sudo /var/ossec/bin/wazuh-control status # Vérifier les derniers logs de l'agent (Wazuh 4.x ne logue plus "Connected to:" explicitement) sudo tail -20 /var/ossec/logs/ossec.log # → Chercher : wazuh-agentd started, logcollector started, syscheckd started # → L'absence de messages d'erreur = connexion OK
1. Vérifier la config de l'agent : cat /var/ossec/etc/ossec.conf | grep "address" — doit afficher l'IP de la VM SOC.
2. Tester la connectivité UDP : nc -zuv 192.168.91.10 1514 depuis la VM cible.
3. Vérifier UFW sur la VM SOC : sudo ufw status | grep 1514.
4. Redémarrer les deux services : sudo systemctl restart wazuh-manager + sudo systemctl restart wazuh-agent.
Wazuh génère des alertes sur de nombreux événements. Voici les plus intéressants à déclencher en TP.
1. Le FIM (surveillance d'intégrité) tourne par défaut toutes les 12h. Il faut réduire la fréquence à 60s pour les tests du TP.
2. alerts.log n'existe que sur la VM SOC (manager). Sur la VM cible (agent), ce fichier n'existe pas — c'est normal et attendu.
3. Créer les fichiers de test après le restart de Wazuh, sinon ils font partie de la baseline et ne génèrent aucune alerte.
# Sur la VM SOC et sur la VM cible — même manipulation sudo nano /var/ossec/etc/ossec.conf # Chercher la section <syscheck> et modifier <frequency> : # <frequency>60</frequency> ← mettre 60 au lieu de 43200 # Vérifier l'absence de doublon (une seule valeur dans syscheck) grep -n "frequency" /var/ossec/etc/ossec.conf | head -5 # Sur la VM SOC : redémarrer le manager sudo /var/ossec/bin/wazuh-control restart # Sur la VM cible : redémarrer l'agent sudo systemctl restart wazuh-agent
# Attendre 30 secondes après le restart de l'agent # puis créer un fichier dans /etc (surveillé par défaut) # CRUCIAL : créer après le restart — sinon il fait partie de la baseline sudo touch /etc/test_wazuh_fim sudo echo "test" | sudo tee /etc/test_wazuh_fim
# Attendre 60-90 secondes que le scan FIM tourne # Vérifier que le scan s'est bien déclenché : sudo grep "scan started\|scan ended" /var/ossec/logs/ossec.log | tail -5 # Chercher les alertes FIM (règles 550/553/554) sudo tail -200 /var/ossec/logs/alerts/alerts.log | grep -i "554\|553\|550\|test_wazuh\|added\|deleted" # → Doit afficher : # Rule: 554 (level 5) -> 'File added to the system.' # File '/etc/test_wazuh_fim' added # ⚠️ Si rien n'apparaît : forcer le scan depuis le manager sudo /var/ossec/bin/agent_control -r -u 003 # puis attendre 60 secondes et relancer la vérification
Règle 554 niveau 5 → fichier ajouté. Règle 553 niveau 7 → fichier modifié. Règle 550 niveau 7 → fichier supprimé.
Les alertes sudo/PAM qui apparaissent également sont normales — Wazuh surveille les élévations de privilèges.
Architecture importante : l'agent (VM cible) détecte et envoie au manager (VM SOC) qui centralise dans alerts.log. Il n'y a pas d'alerts.log sur l'agent.
# Générer des tentatives SSH échouées vers la VM cible for i in {1..5}; do ssh -o ConnectTimeout=3 -o StrictHostKeyChecking=no \ wazuhtest@192.168.91.20 2>/dev/null || true done # Vérifier les alertes SSH côté manager sudo tail -20 /var/ossec/logs/ossec.log
sudo tail -f /var/ossec/logs/alerts/alerts.json \
| python3 -c "
import sys, json
for line in sys.stdin:
try:
a = json.loads(line)
agent = a.get('agent',{}).get('name','?')
level = a.get('rule',{}).get('level','?')
desc = a.get('rule',{}).get('description','?')
print(f'[L{level}] {agent} - {desc}')
except: pass
"
# Ajouter le fichier alerts.json Wazuh aux sources du Forwarder sudo bash -c 'cat >> /opt/splunkforwarder/etc/system/local/inputs.conf' << 'ENDOFFILE' [monitor:///var/ossec/logs/alerts/alerts.json] index = security sourcetype = wazuh ENDOFFILE # Autoriser le Forwarder à lire les fichiers Wazuh sudo chmod 644 /var/ossec/logs/alerts/alerts.json sudo chmod 755 /var/ossec/logs/alerts/
Splunk Enterprise 9.x configure la réception en SSL par défaut (splunktcp-ssl:9997). Si le Forwarder reçoit Connection reset by peer, c'est que le Forwarder envoie en clair alors que Splunk attend du SSL. La solution : ajouter useSSL = true dans outputs.conf.
Vérifier : cat /opt/splunk/etc/system/local/inputs.conf | grep splunktcp
Si la ligne contient [splunktcp-ssl:9997] → appliquer la config SSL ci-dessous.
# Vérifier le contenu actuel cat /opt/splunkforwarder/etc/system/local/outputs.conf # Si Splunk Enterprise écoute en splunktcp-ssl, réécrire outputs.conf avec SSL : sudo bash -c 'cat > /opt/splunkforwarder/etc/system/local/outputs.conf' << 'ENDOFFILE' [tcpout] defaultGroup = default-autolb-group [tcpout:default-autolb-group] server = 192.168.91.10:9997 useSSL = true sslVerifyServerCert = false [tcpout-server://192.168.91.10:9997] useSSL = true sslVerifyServerCert = false ENDOFFILE
# Redémarrer le Forwarder sudo /opt/splunkforwarder/bin/splunk restart # Vérifier que la connexion est établie sudo tail -10 /opt/splunkforwarder/var/log/splunk/splunkd.log | grep -i "connect\|error" # → Succès : "Connected to idx=192.168.91.10:9997" # → SSL KO : "Connection reset by peer" → appliquer le outputs.conf SSL ci-dessus # → SSL OK : "Connected to idx=192.168.91.10:9997" après avoir ajouté useSSL=true
index=security sourcetype=wazuh # ❓ Quels champs JSON sont présents ? (rule.level, rule.description, agent.name) # ❓ Quel est l'agent qui génère des alertes ?
index=security sourcetype=wazuh | spath output=level path=rule.level | spath output=description path=rule.description | spath output=agent path=agent.name | stats count by level, description, agent | sort -level, -count # ⭐ LIVRABLE : Screenshot → binome_tp3_wazuh.png # ❓ Quelle alerte a le niveau de criticité le plus élevé ? # ❓ Les alertes FIM (modification de fichiers) apparaissent-elles ?
# Corrélation complète des 3 outils de détection index=security (sourcetype=suricata event_type=alert) OR (sourcetype=wazuh) OR (sourcetype=fail2ban "Ban") | eval outil=case( sourcetype=="suricata", "Suricata (réseau)", sourcetype=="wazuh", "Wazuh (hôte)", sourcetype=="fail2ban", "Fail2ban (prévention)") | timechart span=10m count by outil # Visualization → Line Chart # Sauvegarder : Save As → Report → "TP3_Detection_360" # ❓ Quelle couche de détection génère le plus d'événements ? # ❓ Y a-t-il une corrélation temporelle entre les alertes Suricata et Wazuh ?
index=security sourcetype=wazuh | spath output=level path=rule.level | where level >= 7 | spath output=description path=rule.description | spath output=agent path=agent.name | table _time, level, description, agent | sort -level, -_time # ❓ Quelles alertes dépassent le niveau 7 ? Que signifient-elles ? # ❓ En production, quel niveau déclencherait une notification d'astreinte ?
Le Jour 4 (dashboards, alertes automatiques) s'appuie sur les données générées aujourd'hui. Tout doit être fonctionnel avant de quitter.
Faire un snapshot des deux VMs nommé "Jour3_OK". Les services Suricata et Wazuh Manager consomment de la RAM — vérifier que la VM SOC dispose encore d'au moins 500 Mo libres : free -h.
sudo systemctl status suricata → active (running)grep "interface:" /etc/suricata/suricata.yaml affiche ens33 (ou votre interface)/var/log/suricata/eve.json existe et contient des entréessudo grep '"event_type":"alert"' /var/log/suricata/eve.json | wc -l retourne > 0index=security sourcetype=suricata event_type=alert retourne des événementsbinome_tp3_suricata.png réalisée (exercice 2)sudo systemctl status wazuh-manager → active (running)sudo systemctl status wazuh-agent → active (running)sudo /var/ossec/bin/agent_control -l affiche l'agent avec Status: Active/var/ossec/logs/alerts/alerts.json existe et contient des alertesindex=security sourcetype=wazuh retourne des événements avec des champs JSON parsésbinome_tp3_wazuh.png réalisée (exercice 2)Suricata analyse le trafic réseau — il voit les paquets qui transitent sur l'interface. Une modification de fichier locale (touch /etc/passwd) n'émet aucun paquet réseau. C'est précisément pour ça que le HIDS (Wazuh) est complémentaire au NIDS (Suricata) : il couvre la surface d'attaque interne à l'hôte.
Les attaques chiffrées : trafic TLS/HTTPS malveillant, C2 via DNS, exfiltration sur port 443. Suricata voit les paquets mais pas leur contenu chiffré. Wazuh détecte les processus mais pas les communications sortantes chiffrées. C'est le rôle d'un proxy SSL-inspect ou d'une analyse comportementale (UBA/UEBA) — hors scope de ce cours.
1. Dashboard temps réel : flux d'alertes par outil avec code couleur de criticité. 2. Top 10 des IPs sources d'alertes Suricata (radar des scanners). 3. Timeline des bannissements Fail2ban superposée aux alertes Suricata (corrélation scan → brute-force). 4. Alerte FIM : liste des fichiers modifiés dans /etc, /bin sur les 24h. Ce sont exactement les 4 dashboards du Jour 4.
Demain (Jour 4) : construction des dashboards de sécurité Splunk, mise en place des alertes automatiques par email, et génération de rapports PDF. Le SOC devient opérationnel.