Lab · IDS · Network Intermédiaire

Suricata —
IDS Réseau & Règles

Suricata est installé sur la VM mais ne génère aucune alerte. L'interface réseau n'est pas configurée et les règles Emerging Threats sont désactivées. Votre mission : corriger la configuration YAML et activer les règles communautaires.

01 //

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 :

02 //

État de la VM — Ce qui ne fonctionne pas

Problèmes détectés

(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 :

Diagnostic initial
# 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
À NOTER La commande 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é.
03 //

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.

setup_suricata.sh
#!/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
04 //

Vérification — Générer une Alerte de Test

Lancez Suricata en mode IDS sur votre interface et déclenchez une alerte connue :

Vérification
# 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"'
SUCCÈS ATTENDU Le fichier 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.
05 //

Pour aller plus loin