Comprendre les IDS/IPS réseau, installer Suricata sur Debian et analyser les alertes de détection d'intrusion.
Debian avec accès root. Connaître les protocoles réseau (TCP/IP, HTTP, DNS). Avoir lu les fiches sur nmap et Wireshark.
| Type | Signification | Mode | Action |
|---|---|---|---|
| IDS | Intrusion Detection System | Passif — écoute une copie du trafic | Détecte et alerte uniquement |
| IPS | Intrusion Prevention System | Inline — trafic passe par lui | Détecte, alerte ET bloque |
| Mode de déploiement | Description | Avantages / Inconvénients |
|---|---|---|
| Mode miroir (SPAN) | Reçoit une copie du trafic depuis un port miroir du switch | Pas d'impact sur le trafic, ne peut pas bloquer |
| Mode inline (IPS) | Placé physiquement entre le réseau et Internet | Peut bloquer, mais devient un SPOF si tombe |
| Mode NFQUEUE | Via iptables/nftables sous Linux — trafic routé vers Suricata | IPS sur Linux sans matériel dédié |
| Critère | Snort 3 | Suricata |
|---|---|---|
| Éditeur | Cisco (open source) | OISF (open source) |
| Multi-thread | Oui (Snort 3) | Oui — natif, très performant |
| Règles | Format Snort (compatibles) | Format Snort + extensions |
| Protocoles | Nombreux | Plus complet (TLS, SMB, HTTP2...) |
| Sortie | Logs texte, unificat2 | eve.json (JSON) — facile à intégrer |
| Intégration | Bonne | Excellente (ELK, Splunk, Wazuh) |
| Usage recommandé | Environnements Cisco | Choix par défaut aujourd'hui |
# Ajouter le dépôt OISF sudo apt install software-properties-common -y sudo add-apt-repository ppa:oisf/suricata-stable # Ubuntu/Debian # OU sur Debian pur : sudo apt install suricata -y # Vérifier la version sudo suricata --build-info | grep Version # Activer le service sudo systemctl enable --now suricata
sudo nano /etc/suricata/suricata.yaml
# Paramètres clés dans suricata.yaml # 1. Définir votre réseau (IP à protéger) vars: address-groups: HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]" EXTERNAL_NET: "!$HOME_NET" # 2. Interface réseau à surveiller af-packet: - interface: eth0 # Changer selon votre interface # 3. Activer le log eve.json outputs: - eve-log: enabled: yes filetype: regular filename: /var/log/suricata/eve.json
# Suricata-update gère les sources de règles sudo apt install python3-pip -y sudo pip3 install --upgrade suricata-update --break-system-packages # Mettre à jour les règles (Emerging Threats - libre) sudo suricata-update # Lister les sources de règles disponibles sudo suricata-update list-sources # Activer des sources supplémentaires (ex: ET Open) sudo suricata-update enable-source et/open sudo suricata-update # Planifier la mise à jour hebdomadaire des règles # Dans crontab -e : # 0 2 * * 1 suricata-update && systemctl reload suricata
# Vérifier la configuration sudo suricata -T -c /etc/suricata/suricata.yaml -v # Lancer en mode test sur un fichier pcap sudo suricata -r /chemin/capture.pcap -l /tmp/suricata-test/ # Voir les alertes en temps réel sudo tail -f /var/log/suricata/fast.log # Analyser eve.json avec jq sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert")'
Structure d'une règle : action protocole src_ip src_port direction dst_ip dst_port (options) Exemple : alert tcp any any -> $HOME_NET 22 (msg:"SSH scan détecté"; \ flags:S; threshold:type threshold, track by_src, count 5, seconds 60; \ classtype:attempted-recon; sid:1000001; rev:1;) Explication : - alert : action (alert, drop, reject, pass) - tcp : protocole - any any : source IP:port quelconque - -> : direction (-> ou <>) - $HOME_NET 22 : destination réseau interne port 22 - msg : message d'alerte - flags:S : paquet SYN uniquement - threshold : déclenche si 5 SYN en 60 secondes depuis la même IP - sid : identifiant unique de la règle
# Compter les alertes par type sudo cat /var/log/suricata/eve.json | \ jq -r 'select(.event_type=="alert") | .alert.signature' | \ sort | uniq -c | sort -rn | head -20 # Voir les IPs sources les plus actives sudo cat /var/log/suricata/eve.json | \ jq -r 'select(.event_type=="alert") | .src_ip' | \ sort | uniq -c | sort -rn | head -10 # Statistiques globales sudo cat /var/log/suricata/stats.log | tail -30
✅ Réponse : Un IDS détecte et alerte, un IPS peut aussi bloquer le trafic
✅ Réponse : eve.json (JSON)
✅ Réponse : suricata-update
✅ Réponse : Alerter et bloquer le paquet (mode IPS)
✅ Réponse : HOME_NET