Objectif
Suricata est un IDS/IPS réseau open-source. Il inspecte le trafic en temps réel et génère des alertes basées sur des règles (fichiers .rules).
À la fin de ce lab vous saurez :
- Identifier l'interface réseau de votre VM
- Configurer
suricata.yamlcorrectement - Télécharger les règles Emerging Threats avec
suricata-update - Tester Suricata en mode IDS et lire les alertes
État de la VM — Ce qui ne fonctionne pas
(1) Dans /etc/suricata/suricata.yaml, l'interface réseau est réglée sur eth99 qui n'existe pas. (2) La section rule-files ne pointe vers aucun fichier. (3) suricata-update n'a jamais été exécuté — aucune règle n'est présente.
Diagnostiquez d'abord :
# Trouver l'interface réseau active de la VM
ip link show
ip addr
# Voir l'interface configurée dans suricata.yaml (ligne af-packet)
grep -n "interface" /etc/suricata/suricata.yaml | head -5
# Vérifier les règles présentes
ls /var/lib/suricata/rules/
# Tenter de démarrer et observer l'erreur
sudo suricata -T -c /etc/suricata/suricata.yaml
suricata -T teste la configuration sans démarrer le moteur. C'est votre meilleur outil de diagnostic : elle affiche exactement ce qui est mal configuré.
Script Guidé — À Compléter
Complétez les TODO dans ce script. Exécutez-le après avoir identifié votre interface réseau à l'étape 02.
#!/bin/bash
# Lab Bit-Bang — Suricata IDS setup
# Remplacez VOTRE_INTERFACE par le nom réel (ex: eth0, ens33, enp0s3)
IFACE="???" # TODO: remplacer par votre interface (résultat de 'ip link show')
# --- Étape 1 : Corriger l'interface dans suricata.yaml ---
# Le fichier contient : interface: eth99
# TODO: remplacer eth99 par $IFACE dans /etc/suricata/suricata.yaml
# Indice : sudo sed -i "s/interface: eth99/interface: $IFACE/" ???
# --- Étape 2 : Installer suricata-update si absent ---
sudo apt-get install -y suricata python3-pip 2>/dev/null
sudo pip3 install suricata-update 2>/dev/null || true
# --- Étape 3 : Télécharger les règles Emerging Threats ---
# TODO: lancer suricata-update pour télécharger les règles
# Indice : sudo suricata-update
# --- Étape 4 : Activer les règles dans suricata.yaml ---
# Vérifier que rule-files pointe bien vers /var/lib/suricata/rules/suricata.rules
grep -A5 "rule-files:" /etc/suricata/suricata.yaml
# TODO: si la liste est vide, ajouter la règle :
# Indice : echo " - /var/lib/suricata/rules/suricata.rules" | sudo tee -a /etc/suricata/suricata.yaml
# --- Étape 5 : Valider la configuration ---
sudo suricata -T -c /etc/suricata/suricata.yaml -v
echo "Configuration OK. Lancez : sudo suricata -c /etc/suricata/suricata.yaml -i $IFACE"
▸ AFFICHER LA SOLUTION (essayez d'abord !)
Solution (adaptez IFACE à votre environnement) :
IFACE="eth0" # ou ens33, enp0s3, selon votre VM
sudo sed -i "s/interface: eth99/interface: $IFACE/" /etc/suricata/suricata.yaml
sudo suricata-update
# Si rule-files est vide dans le yaml :
echo " - /var/lib/suricata/rules/suricata.rules" | sudo tee -a /etc/suricata/suricata.yaml
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Vérification — Générer une Alerte de Test
Lancez Suricata en mode IDS sur votre interface et déclenchez une alerte connue :
# Démarrer Suricata en mode IDS (remplacer eth0 par votre interface)
sudo suricata -c /etc/suricata/suricata.yaml -i eth0 -D
# Générer du trafic de test (scan nmap local)
nmap -sS 127.0.0.1
# Lire les alertes en temps réel
sudo tail -f /var/log/suricata/fast.log
# Ou lire les logs JSON structurés (plus complets)
sudo tail -f /var/log/suricata/eve.json | python3 -m json.tool | grep -A5 '"event_type":"alert"'
fast.log doit contenir des lignes d'alerte avec un timestamp, la priorité, et la signature déclenchée. Si fast.log se remplit, Suricata inspecte bien le trafic.
Pour aller plus loin
- Écrire une règle Suricata personnalisée (
local.rules) - Configurer Suricata en mode IPS (inline) avec NFQUEUE
- Envoyer les logs
eve.jsonvers Elasticsearch ou Splunk - docs.suricata.io