Mise en place d'un SOC complet, validation par attaques simulées, mesure du taux de couverture et présentation des résultats. Ce projet est évalué — travail en binôme obligatoire.
Faire un snapshot "Jour5_Depart" sur toutes les VMs avant tout. En cas de problème grave (VM corrompue, disque plein, services cassés), vous pourrez revenir à l'état initial. Sans snapshot, aucun retour en arrière possible.
Votre entreprise vient de déployer un SI composé d'un serveur Linux (VM cible) et d'une infrastructure réseau NAT VMware. La direction vous demande de mettre en place un SOC opérationnel, de le valider face à des attaques réelles et de présenter le bilan de sécurité.
Votre rôle est double : défenseur (vous construisez et opérez le SOC) et attaquant (vous simulez les menaces pour valider la détection). Cette dualité est la réalité quotidienne d'un ingénieur SOC.
| VM | Rôle | IP NAT | Services actifs | Statut requis |
|---|---|---|---|---|
| VM SOC | Serveur central de détection | 192.168.91.10 |
Splunk :8000, Elasticsearch :9200, Logstash :5514, Suricata, Wazuh Manager :1514 | ✅ Requis |
| VM Linux Cible | Hôte surveillé — cible des attaques | 192.168.91.20 |
SSH :22, Apache :80, Splunk UF :9997, rsyslog, Fail2ban, Wazuh Agent | ✅ Requis |
| VM Kali | Simulateur d'attaques | 192.168.91.40 |
Nmap, Hydra, Nikto, curl | ⚠️ Phase 3 seulement |
Document PDF de 10 à 20 pages, remis avant la soutenance. Structure détaillée dans l'onglet Livrables & Questionnaire.
Présentation des résultats + Q&A. Slides recommandées mais non obligatoires. Démonstration live fortement appréciée.
Une capture par attaque lancée, montrant l'alerte dans Splunk (Activité → Alertes déclenchées) ou dans le dashboard.
Tableau avant/après avec le taux de couverture calculé pour chaque vecteur d'attaque testé. Template disponible dans l'onglet Rapport.
Avant de lancer les attaques, vérifier que le SOC est 100% opérationnel. Un service en panne = une surface de détection aveugle.
# ── ESPACE DISQUE (critique — vérifier en premier) ── df -h / # → Doit avoir au moins 2 Go libres. Si plein : sudo truncate -s 0 /var/log/suricata/eve.json # ── SPLUNK ENTERPRISE ── sudo /opt/splunk/bin/splunk status ss -tlnp | grep 8000 # → "splunkd is running" + port 8000 en écoute # ── ELASTICSEARCH ── curl -s http://localhost:9200 | python3 -m json.tool | grep tagline # → "You Know, for Search" # ── LOGSTASH ── sudo systemctl status logstash --no-pager | head -5 # → "active (running)" # ── SURICATA ── sudo systemctl status suricata --no-pager | head -5 sudo tail -3 /var/log/suricata/fast.log 2>/dev/null || echo "fast.log vide — OK si aucun trafic" # ── WAZUH MANAGER ── sudo /var/ossec/bin/agent_control -l # → Doit afficher au moins 1 agent "Active" # ── SPLUNK UF (sur VM SOC) ── sudo /opt/splunkforwarder/bin/splunk status
# ── SSH ── sudo systemctl status ssh --no-pager | head -3 # ── APACHE ── sudo systemctl status apache2 --no-pager | head -3 curl -s http://localhost | grep -i "apache\|html\|It works" | head -2 # ── RSYSLOG → SOC ── logger -p auth.warning "TEST_J5_$(date +%H%M%S)" sleep 3 curl -s "http://192.168.91.10:9200/syslog-*/_search?q=TEST_J5&pretty" \ | python3 -m json.tool | grep '"message"' | head -2 # → Doit retourner le message de test # ── SPLUNK UF ── sudo /opt/splunkforwarder/bin/splunk status # ── FAIL2BAN ── sudo fail2ban-client status sudo fail2ban-client status sshd # ── WAZUH AGENT ── sudo /var/ossec/bin/wazuh-control status | grep "is running"
Depuis l'interface web Splunk, s'assurer que toutes les sources de données sont actives et récentes.
# Vérifier que toutes les sources remontent dans l'index security index=security earliest=-1h | stats count, max(_time) as derniere_donnee by sourcetype | eval age_minutes=round((now()-derniere_donnee)/60,0) | table sourcetype, count, age_minutes | sort age_minutes # Résultat attendu : # sourcetype count age_minutes # linux_secure XXX < 60 # suricata XXX < 60 # wazuh XXX < 60 # fail2ban XXX < 60 # wazuh XXX < 60 (inclut les logs Apache)
Si un sourcetype n'apparaît pas ou a une ancienneté > 60 min, le service correspondant est probablement en panne. Se référer aux TPs des jours précédents pour le redémarrer. Ne pas avancer à la Phase 2 tant que tous les sourcetypes ne sont pas actifs.
Le taux de couverture mesure la proportion des vecteurs d'attaque qui sont détectés par le SOC. C'est la métrique principale de votre rapport.
# Volume d'événements par outil sur les dernières 24h
index=security earliest=-24h
| eval outil=case(
sourcetype=="suricata" AND event_type="alert", "Suricata NIDS",
sourcetype=="linux_secure" AND match(_raw,"Failed password"), "SSH Brute Force",
sourcetype=="fail2ban" AND match(_raw,"Ban"), "Fail2ban Bans",
sourcetype=="wazuh", "Wazuh HIDS",
sourcetype=="access_combined", "Apache Web",
true(), "Autre")
| where outil!="Autre"
| stats count by outil
| sort -count
Ces valeurs de référence serviront à comparer avec les chiffres "après attaque" et à calculer l'augmentation de détection générée par les attaques simulées. C'est le cœur de votre analyse.
Une attaque réelle laisse des traces dans plusieurs outils simultanément. La corrélation consiste à relier ces traces pour reconstituer l'incident complet et réduire le bruit.
Cette requête reconstitue la chronologie d'une attaque brute-force complète : scan réseau détecté par Suricata → tentatives SSH détectées dans linux_secure → bannissement Fail2ban. Trois outils, un seul incident.
index=security earliest=-1h
(sourcetype=suricata event_type=alert)
OR (sourcetype=linux_secure "Failed password")
OR (sourcetype=fail2ban "Ban")
| eval phase=case(
sourcetype=="suricata", "1_Reconnaissance",
sourcetype=="linux_secure","2_BruteForce",
sourcetype=="fail2ban", "3_Detection_Ban")
| eval src=coalesce(
spath(_raw,"src_ip"),
replace(_raw,".*from (\d+\.\d+\.\d+\.\d+).*","\1"),
replace(_raw,".*Ban (\d+\.\d+\.\d+\.\d+).*","\1"))
| where isnotnull(src) AND src!="127.0.0.1"
| stats
count as evenements,
min(_time) as premier_evt,
max(_time) as dernier_evt,
values(phase) as phases_detectees
by src
| eval duree_min=round((dernier_evt-premier_evt)/60,1)
| eval attaque_complete=if(mvcount(phases_detectees)>=2,"OUI","PARTIELLE")
| table src, evenements, phases_detectees, duree_min, attaque_complete
| sort -evenements
Une IP avec attaque_complete=OUI et 3 phases détectées = l'attaque entière est visible dans le SOC. Une IP avec attaque_complete=PARTIELLE et 1 seule phase = le SOC a une détection partielle sur cet attaquant. Le rapport devra analyser ces cas.
Créer une alerte Splunk basée sur la requête de corrélation. Elle se déclenche quand une IP traverse au moins 2 phases de la kill chain.
index=security earliest=-10m
(sourcetype=suricata event_type=alert)
OR (sourcetype=linux_secure "Failed password")
OR (sourcetype=fail2ban "Ban")
| eval src=coalesce(
spath(_raw,"src_ip"),
replace(_raw,".*from (\d+\.\d+\.\d+\.\d+).*","\1"),
replace(_raw,".*Ban (\d+\.\d+\.\d+\.\d+).*","\1"))
| where isnotnull(src) AND src!="127.0.0.1"
| stats dc(sourcetype) as nb_outils by src
| where nb_outils >= 2
Nom : Attaque Multi-Etapes Detectee
Schedule : Every 10 minutes — Last 10 minutes
Trigger : Number of Results > 0
Throttle : 30 minutes, champ : src
Action : Ajouter aux alertes déclenchées (Gravité : Critique)
+ Email si SMTP configuré
Ajouter un nouveau panel au dashboard SOC_Vue_Operationnelle du Jour 4, visualisant la progression des attaques par phase.
index=security earliest=-24h
(sourcetype=suricata event_type=alert)
OR (sourcetype=linux_secure "Failed password")
OR (sourcetype=fail2ban "Ban")
| eval phase=case(
sourcetype=="suricata", "1 - Scan réseau",
sourcetype=="linux_secure","2 - Tentatives SSH",
sourcetype=="fail2ban", "3 - Ban Fail2ban")
| stats count by phase
| sort phase
# Visualization : Bar Chart — "Progression Kill Chain (24h)"
Simuler 6 scénarios d'attaque depuis la VM Kali, vérifier que chacun est détecté dans Splunk, et mesurer le taux de couverture final.
Ces attaques sont autorisées uniquement entre les VMs du réseau NAT VMware (192.168.91.0/24) qui vous appartiennent. Toute attaque hors de ce périmètre est illégale. Vérifier l'IP de la cible avant chaque commande.
# Vérifier l'IP Kali (doit être sur 192.168.91.x) ip a | grep "192.168.91" # Tester la connectivité vers les cibles ping -c2 192.168.91.10 # VM SOC ping -c2 192.168.91.20 # VM Cible Linux # Vérifier les outils disponibles which nmap && echo "nmap OK" || echo "nmap manquant — sudo apt install -y nmap" which hydra && echo "hydra OK" || echo "hydra manquant — sudo apt install -y hydra" which nikto && echo "nikto OK" || echo "nikto manquant — sudo apt install -y nikto" which curl && echo "curl OK"
Simulation de la phase de reconnaissance d'un attaquant — identifier les ports ouverts et les services exposés. Devrait être détecté par Suricata.
# Scan SYN rapide — déclenche la règle local.rules Suricata nmap -sS -p 1-1000 192.168.91.20 # Scan avec détection de services — génère plus d'alertes nmap -sV -p 22,80,443 192.168.91.20 # Vérification immédiate sur VM SOC : # sudo tail -10 /var/log/suricata/fast.log
index=security sourcetype=suricata event_type=alert → signature SCAN nmap SYN scan detected + ET SCAN Possible Nmap User-Agent Observed avec src_ip = 192.168.91.40
Simulation d'une attaque par force brute sur le service SSH. Devrait déclencher des alertes dans linux_secure (tentatives) et Fail2ban (bannissement).
# Prérequis IMPORTANT — vérifier la config Fail2ban sur la VM cible # Le fichier /etc/fail2ban/jail.local doit contenir : # [sshd] # enabled = true # port = ssh # logpath = /var/log/auth.log # backend = auto # maxretry = 3 # ignoreip = 127.0.0.1 ::1 192.168.91.10 ← VM SOC en whitelist, pas le /24 ! # Après modification : sudo systemctl restart fail2ban # Créer un mini-dictionnaire de mots de passe de test cat << 'EOF' > /tmp/passwords_test.txt password 123456 admin root toor pass123 letmein EOF # Lancer le brute force SSH (utilisateur "dis" sur la VM cible) # -t 1 = 1 thread séquentiel (important : Fail2ban détecte mieux les tentatives séquentielles) # -w 3 = attendre 3 secondes entre chaque tentative hydra -l dis -P /tmp/passwords_test.txt \ -t 1 -w 3 -s 22 \ ssh://192.168.91.20 # → Fail2ban bannira l'IP Kali après 3 échecs (maxretry=3) # → Vérifier avec : sudo fail2ban-client status sshd (depuis VM cible) # → Si "Ignore ... by ip" dans /var/log/fail2ban.log → l'IP est en whitelist, vérifier ignoreip
index=security sourcetype=linux_secure "Failed password" src_ip=192.168.91.40 + index=security sourcetype=fail2ban "Ban" 192.168.91.40 → l'alerte "Brute Force SSH Detecte" du Jour 4 doit se déclencher.
Nikto teste le serveur web à la recherche de fichiers sensibles, configurations dangereuses et CVEs connues. Les logs Apache sont collectés par Wazuh (qui surveille /var/log/apache2/access.log) et remontent dans Splunk en sourcetype=wazuh.
# Scan Nikto sur le serveur Apache de la VM cible nikto -h http://192.168.91.20 -maxtime 120 # Alternative manuelle si Nikto absent — simuler des requêtes suspectes for path in /.env /admin /wp-login.php /phpmyadmin /.git/config \ /etc/passwd /backup.sql /config.php; do curl -s -o /dev/null -w "%{http_code} $path\n" \ http://192.168.91.20$path done
index=security sourcetype=wazuh "192.168.91.130" location="/var/log/apache2/access.log" → des milliers de requêtes HTTP générées par Nikto remontent via Wazuh. La requête sourcetype=access_combined ne fonctionnera pas — les logs Apache passent par Wazuh dans cette architecture.
Pour cette attaque, on simule un attaquant qui a déjà obtenu un accès et modifie un fichier sensible. On l'exécute depuis la VM cible directement (simulation post-exploitation). Devrait déclencher Wazuh FIM.
# Créer un faux fichier "backdoor" dans /etc (surveillé par Wazuh FIM) sudo bash -c 'cat > /etc/soc_test_backdoor' << 'ENDOFFILE' # Fichier de test SOC - simulation backdoor ENDOFFILE # Attendre 60-90 secondes que le scan FIM de Wazuh tourne # Puis vérifier sur la VM SOC : # sudo tail -50 /var/ossec/logs/alerts/alerts.log | grep -i "554\|added\|backdoor" # Modifier le fichier (déclenche règle 553 - fichier modifié) sudo echo "attacker_was_here" | sudo tee -a /etc/soc_test_backdoor # Nettoyage après validation # sudo rm /etc/soc_test_backdoor
index=security sourcetype=wazuh → règle 554 (fichier ajouté) puis 553 (fichier modifié) avec agent.name=vm-client. Si non visible, vérifier que la fréquence FIM est bien à 60s dans /var/ossec/etc/ossec.conf.
Un attaquant collecte les bannières des services pour identifier les versions logicielles et chercher des CVEs associées. Cette phase suit généralement le scan de ports.
Vous cherchez à identifier les versions exactes des services SSH et HTTP exposés sur la VM cible. Quel outil Nmap permet de faire de la détection de version ? Quel outil dédié permet de récupérer la bannière HTTP et les headers de sécurité manquants ?
# Détection de version des services (flag Nmap à trouver) nmap -________ -p 22,80 192.168.91.20 # Récupérer les headers HTTP et identifier les informations exposées curl -________ http://192.168.91.20 # Vérifier si le serveur Apache expose sa version dans les headers curl -s -I http://192.168.91.20 | grep -i "server\|x-powered"
index=security sourcetype=suricata event_type=alert → ET SCAN Possible Nmap User-Agent Observed pour la détection de version Nmap. index=security sourcetype=wazuh location="/var/log/apache2/access.log" → requêtes HEAD/GET depuis 192.168.91.130.
Les informations exposées (version Apache, version SSH, OS fingerprint) permettent à un attaquant de cibler des CVEs spécifiques. C'est un risque de divulgation d'information — à inclure dans la fiche de remédiation avec la recommandation de masquer les bannières.
Simulation d'un attaquant qui tente d'accéder à des fichiers de configuration ou des interfaces d'administration courantes sur le serveur web. Génère du trafic caractéristique dans les logs Apache.
Vous voulez tester si des chemins sensibles sont accessibles sur le serveur web : fichiers .env, .git, interfaces d'administration (/phpmyadmin, /admin), fichiers de backup. Quel outil permet de faire du "directory bruteforcing" ? Ou comment le faire manuellement avec curl ?
# Tester l'accès à des fichiers et répertoires sensibles courants for path in /.env /.git/config /admin /phpmyadmin /backup.sql \ /wp-login.php /config.php /.htaccess /server-status \ /etc/passwd /proc/self/environ; do code=$(curl -s -o /dev/null -w "%{http_code}" http://192.168.91.20$path) echo "$code $path" done # Tester avec un User-Agent suspect (simuler un scanner automatique) curl -s -A "sqlmap/1.0" http://192.168.91.20/ curl -s -A "Havij" http://192.168.91.20/
index=security sourcetype=wazuh location="/var/log/apache2/access.log" "192.168.91.130" → rafale de requêtes 404 depuis Kali. Les User-Agents suspects (sqlmap, Havij) peuvent déclencher des règles Suricata ET/open : index=security sourcetype=suricata event_type=alert.
Remplir ce tableau dans votre rapport. Pour chaque attaque, indiquer si elle a été détectée, par quel outil, et dans quel délai.
| Attaque simulée | Outil attendu | Détecté ? | Délai | Alerte déclenchée ? |
|---|---|---|---|---|
| Scan Nmap SYN (depuis Kali) | Suricata | À remplir | À mesurer | Scan Reseau Detecte |
| Brute Force SSH Hydra (depuis Kali) | linux_secure + Fail2ban | À remplir | À mesurer | Brute Force SSH Detecte |
| Scan web Nikto (depuis Kali) | Wazuh (via Apache log) | À remplir | À mesurer | Aucune alerte spécifique — visible dans index=security sourcetype=wazuh |
| Modification FIM /etc (VM cible) | Wazuh | À remplir | À mesurer | Wazuh Alerte Critique |
| Énumération de services (Nmap -sV) | Suricata + Wazuh (Apache) | À remplir | À mesurer | ET SCAN Nmap User-Agent |
| Accès ressources sensibles (curl / dirbusting) | Wazuh (Apache) + Suricata | À remplir | À mesurer | Aucune alerte spécifique — visible dans Wazuh |
# Vue consolidée de toutes les détections liées aux attaques Kali # Adapter l'IP selon votre VM Kali : ip a | grep "192.168.91" depuis la VM Kali index=security earliest=-2h | eval src=coalesce( spath(_raw,"src_ip"), replace(_raw,".*from (\d+\.\d+\.\d+\.\d+).*","\1"), replace(_raw,".*clientip.*?(\d+\.\d+\.\d+\.\d+).*","\1")) | where src="192.168.91.40" OR sourcetype="wazuh" | stats count by sourcetype, src | sort -count # Taux de couverture = nb_attaques_detectees / nb_attaques_lancees × 100 # Objectif : 6/6 = 100% de couverture sur les vecteurs testés
Vous êtes une équipe SOC mandatée par un client PME. Votre mission : auditer leur SI, simuler des attaques, rédiger un rapport client professionnel et répondre au questionnaire d'évaluation.
Votre client : LogiTrans SARL, PME de 45 employés dans la logistique. Aucune politique de sécurité formelle, pas de SOC, des serveurs Linux exposés en interne. Après une tentative d'intrusion détectée par hasard par un administrateur, ils vous mandatent pour :
Le TP ne vous dit pas quel outil utiliser ni comment — c'est à vous de choisir la bonne approche pour chaque scénario, comme un vrai pentest. Des indices sont fournis si vous bloquez, mais l'objectif est de trouver par vous-mêmes. Documenter chaque choix dans votre rapport.
Document professionnel remis à la direction de LogiTrans. Rédigé comme si vous étiez un cabinet de conseil en cybersécurité. Structure imposée — voir Section A.
Format : PDF · 10-20 pages · Logos + mise en page soignée
Rempli en temps réel pendant la Phase 3. Pour chaque attaque : horodatage, outil utilisé, gravité, impact estimé, première alerte Splunk. Document séparé du rapport.
Format : tableau PDF ou Google Sheets · à remplir pendant les attaques
20 questions couvrant l'intégralité du cours — questions ouvertes, techniques, commandes à compléter, requêtes SPL à écrire et expliquer. Section B.
Format : réponses écrites dans le document fourni
Pour chaque vecteur d'attaque testé : actions correctives concrètes, priorité (P1/P2/P3), effort estimé, impact attendu. À destination du DSI de LogiTrans.
Format : tableau structuré inclus dans le rapport client ou document séparé
Le rapport est rédigé à destination de la direction de LogiTrans — pas de jargon technique pur, vulgariser sans simplifier à l'excès. Chaque constat doit être accompagné d'une recommandation concrète. Les captures d'écran Splunk sont des preuves — les légender précisément.
Ce document est rempli au fil des attaques — une ligne par événement détecté. Il sert à reconstituer la chronologie de l'incident et à démontrer la réactivité du SOC.
| Heure | Attaque simulée | Outil attaquant | Premier outil de détection | Délai détection | Gravité | Alerte Splunk déclenchée ? | Impact estimé si réel |
|---|---|---|---|---|---|---|---|
| __:__ | Scan ports | À compléter | À compléter | __ sec | Faible | Oui / Non | Cartographie réseau exposée |
| __:__ | Brute force SSH | À compléter | À compléter | __ sec | Élevée | Oui / Non | Accès root potentiel |
| __:__ | Scan web | À compléter | À compléter | __ sec | Moyenne | Oui / Non | Exposition de fichiers sensibles |
| __:__ | Modification FIM | À compléter | À compléter | __ sec | Critique | Oui / Non | Persistance attaquant |
| __:__ | Énumération services | À compléter | À compléter | __ sec | Faible | Oui / Non | Versions logicielles exposées → CVEs ciblables |
| __:__ | Accès ressources sensibles | À compléter | À compléter | __ sec | Moyenne | Oui / Non | Fichiers config / backup exposés |
Noter l'heure exacte de lancement de l'attaque. Puis dans Splunk, rechercher le premier événement lié à cette attaque et noter son _time. La différence est votre délai de détection — c'est votre MTTD (Mean Time To Detect) pour ce vecteur.
Expliquez en 5 à 10 lignes la différence entre un NIDS et un HIDS. Dans votre lab, quel outil joue chaque rôle ? Donnez un exemple concret d'attaque que l'un détecterait mais pas l'autre.
Décrivez le flux complet d'un log depuis sa génération sur la VM cible jusqu'à son affichage dans Splunk. Citez chaque composant traversé et son rôle.
Vous venez d'allumer la VM SOC. Complétez les commandes pour vérifier que tous les services sont opérationnels :
sudo ________ status splunk
curl -s http://localhost:________ | python3 -m json.tool | grep tagline
sudo systemctl status ________
sudo /var/ossec/bin/________ -l
Pourquoi a-t-on utilisé le réseau NAT VMware (192.168.91.0/24) plutôt qu'un réseau bridgé pour ce lab ? Quelles seraient les implications sécurité si les VMs avaient été directement sur le réseau de l'école ?
La VM cible n'envoie plus ses logs à Splunk depuis 30 minutes. Dans quel ordre vérifiez-vous les composants ? Complétez :
# Étape 1 — vérifier que rsyslog tourne
sudo systemctl status ________
# Étape 2 — vérifier la connectivité vers le port Logstash
nc -zv ________ 5514
# Étape 3 — vérifier que le Splunk UF envoie bien
sudo /opt/______/bin/splunk status
Dans votre architecture, Fail2ban est configuré avec ignoreip = 127.0.0.1 ::1 192.168.91.10. Expliquez pourquoi on a retiré le 192.168.91.0/24 initial. Qu'est-ce qui se serait passé si on l'avait gardé pendant les tests d'intrusion ?
Écrivez une requête SPL qui affiche le top 5 des IPs sources ayant généré le plus d'alertes Suricata sur les dernières 24 heures, avec le nombre d'alertes et les signatures distinctes déclenchées. Expliquez chaque opérateur utilisé.
La requête suivante est censée compter les bannissements Fail2ban par jour sur 7 jours, mais elle retourne 0 résultat. Identifiez et corrigez l'erreur :
index=security sourcetype=fail2ban earliest=-7d
| rex "BAN (?<ip>\d+\.\d+\.\d+\.\d+)"
| timechart span=1d count by ip
Écrivez une requête SPL qui détecte les tentatives de connexion SSH réussies (pas les échecs) et affiche l'utilisateur, l'IP source et l'heure. Pourquoi ce type de détection est-il important dans un SOC ?
Vous observez dans Splunk une rafale de 5 000 alertes Suricata en 2 minutes avec la signature "SCAN nmap SYN scan detected". Décrivez votre processus de triage : quelles questions posez-vous ? Quelles actions prenez-vous ? Quelle priorité assignez-vous ?
Complétez cette règle Suricata pour détecter toute tentative de connexion sur le port 3306 (MySQL) depuis l'extérieur, avec un seuil de 3 tentatives en 10 secondes :
alert ________ any any -> $HOME_NET ________ (
msg:"________";
flags:S;
threshold:type threshold, track by_src, count ________, seconds ________;
sid:9000002; rev:1;)
Écrivez la requête SPL de l'alerte "Attaque Multi-Etapes Detectee" que vous avez configurée au Jour 5. Expliquez pourquoi on utilise dc(sourcetype) >= 2 plutôt que count > 10 pour détecter une attaque multi-étapes.
Quelle est la différence entre une alerte Splunk et un rapport planifié ? Donnez un exemple concret de quand utiliser l'un plutôt que l'autre dans le contexte de LogiTrans.
Votre SOC génère en moyenne 500 alertes par jour. Proposez une stratégie concrète pour qu'un analyste L1 puisse traiter efficacement cette charge sans passer à côté d'une vraie menace. Mentionnez au moins 3 mécanismes techniques ou organisationnels.
Un administrateur vous signale que Wazuh ne détecte plus les modifications de fichiers sur la VM cible. Complétez les commandes de diagnostic :
# Vérifier l'état de l'agent sur la VM cible
sudo /var/ossec/bin/________ status
# Vérifier la fréquence du scan FIM
grep "________" /var/ossec/etc/ossec.conf
# Vérifier que /etc est bien dans les répertoires surveillés
grep -A2 "________" /var/ossec/etc/ossec.conf | head -10
# Forcer un scan FIM immédiat depuis le Manager
sudo /var/ossec/bin/agent_control ________ -u 001
Les logs SSH collectés dans votre SOC contiennent les noms d'utilisateurs et adresses IP des employés de LogiTrans. Au regard du RGPD, quelles obligations s'appliquent à LogiTrans pour ces données ? Quelle durée de rétention recommandez-vous et pourquoi ?
Hydra a été bloqué par Fail2ban après 3 tentatives SSH échouées. Un attaquant réel contournerait-il facilement ce mécanisme ? Décrivez deux techniques d'attaque que Fail2ban ne détecterait pas dans votre configuration actuelle.
LogiTrans vous demande un rapport mensuel automatique montrant l'évolution du nombre d'incidents par semaine sur le dernier mois, ventilé par outil de détection. Écrivez la requête SPL et expliquez comment planifier ce rapport dans Splunk.
Votre taux de couverture est de X% sur les vecteurs testés. Est-ce que ce chiffre est représentatif de la sécurité réelle de LogiTrans ? Identifiez au moins 3 vecteurs d'attaque que votre SOC ne couvre pas et expliquez comment les couvrir.
En tant que consultant SOC, quelle est votre recommandation principale à la direction de LogiTrans ? Justifiez votre réponse en vous appuyant sur les résultats concrets obtenus pendant le projet. Proposez une roadmap de sécurité sur 6 mois avec des jalons mesurables.
À compléter pour chaque attaque simulée. Les colonnes "Action corrective" et "Effort" sont à rédiger par le binôme.
| Vecteur | Risque | Action corrective recommandée | Priorité | Effort | Délai |
|---|---|---|---|---|---|
| Scan de ports (Nmap) | Moyen | À compléter — piste : firewall, port knocking, fail2ban sur scan... | P3 | À estimer | 1 mois |
| Brute Force SSH | Élevé | À compléter — piste : clés SSH, désactiver auth par mot de passe, port non standard... | P1 | À estimer | 1 semaine |
| Scan web (Nikto) | Moyen | À compléter — piste : WAF, headers sécurité, retirer pages admin exposées... | P2 | À estimer | 1 mois |
| Modification FIM /etc | Critique | À compléter — piste : moindre privilège, sudo logging, alertes FIM temps réel... | P1 | À estimer | Immédiat |
| Organisationnel | Moyen | À compléter — processus d'escalade, astreinte, formation équipe... | P2 | À estimer | 3 mois |
Le projet est évalué sur la qualité de la mise en œuvre pratique, la pertinence des réflexions et la qualité de la présentation écrite.
L'évaluation porte sur le travail collectif, pas individuel. Chaque membre doit néanmoins être capable de répondre à des questions techniques sur l'ensemble du projet lors de la soutenance.
index=security | stats count by sourcetype)En 5 jours vous avez mis en place une stack de détection professionnelle : centralisation rsyslog/Logstash/Elasticsearch, SIEM Splunk, NIDS Suricata, HIDS Wazuh, prévention Fail2ban, dashboards KPI, alertes automatiques et rapports périodiques. C'est exactement ce qu'on attend d'un ingénieur SOC en entreprise.