Sécurité
IDS
Réseau

Mise en place d'un IDS/IPS avec Suricata et gestion des règles

15 janvier 2026

2 min de lecture

Suricata est un IDS/IPS open source capable d'analyser le trafic réseau en temps réel pour détecter et bloquer les menaces. Guide complet d'installation et configuration.

Installation

# Debian/Ubuntu
apt install suricata

# RHEL/Rocky
dnf install epel-release
dnf install suricata

# Configuration interface
sed -i 's/interface: eth0/interface: ens18/' /etc/suricata/suricata.yaml

Configuration de base

# /etc/suricata/suricata.yaml
vars:
  address-groups:
    HOME_NET: '[192.168.1.0/24]'
    EXTERNAL_NET: '!$HOME_NET'

af-packet:
  - interface: ens18
    threads: 4
    cluster-type: cluster_flow

outputs:
  - fast:
      enabled: yes
      filename: fast.log
  - eve-log:
      enabled: yes
      filetype: regular
      filename: eve.json
      types:
        - alert
        - http
        - dns
        - tls

Gestion des règles

# Installer suricata-update
pip3 install suricata-update

# Mettre à jour les règles Emerging Threats
suricata-update

# Lister les sources disponibles
suricata-update list-sources

# Ajouter ET/PRO (gratuit sur inscription)
suricata-update enable-source et/pro
suricata-update update-sources

# Recharger Suricata
suricatasc -c reload-rules

Règles personnalisées

# /etc/suricata/rules/local.rules

# Détecter scan de ports
alert tcp any any -> $HOME_NET any (msg:"Port Scan Detected"; \
  flags:S; threshold:type threshold, track by_src, count 20, seconds 60; \
  sid:1000001; rev:1;)

# Bloquer requêtes vers domaine malveillant
drop dns any any -> any any (msg:"Malicious Domain"; \
  dns_query; content:"evil.com"; nocase; sid:1000002; rev:1;)

# Détecter injection SQL
alert http any any -> $HOME_NET any (msg:"SQL Injection Attempt"; \
  flow:established,to_server; content:"union"; nocase; \
  content:"select"; nocase; distance:0; sid:1000003; rev:1;)

Mode IPS (inline blocking)

# Configuration NFQueue
iptables -I INPUT -j NFQUEUE
iptables -I OUTPUT -j NFQUEUE

# suricata.yaml
nfq:
  mode: accept
  repeat-mark: 1
  repeat-mask: 1
  route-queue: 2
  batchcount: 20

# Démarrer en mode IPS
suricata -c /etc/suricata/suricata.yaml -q 0

Intégration ELK

# filebeat.yml
filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/suricata/eve.json
    json.keys_under_root: true

output.elasticsearch:
  hosts: ['localhost:9200']
  index: 'suricata-%{+yyyy.MM.dd}'

Tuning performance

# Multi-threading
threading:
  set-cpu-affinity: yes
  cpu-affinity:
    - management-cpu-set:
        cpu: [0]
    - receive-cpu-set:
        cpu: [1, 2]
    - worker-cpu-set:
        cpu: [3, 4, 5, 6]

# Buffer sizes
stream:
  memcap: 256mb
  checksum-validation: yes

# Défragmentation
defrag:
  memcap: 512mb
  hash-size: 65536

Conclusion

Suricata offre une détection réseau avancée en temps réel. Combinez-la avec CrowdSec pour l'IPS collaboratif, ModSecurity pour le WAF applicatif, ou Wazuh pour la centralisation SIEM. Utilisez les logs iptables/nftables en NFQUEUE pour un blocking kernel-level performant.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires