← Retour au portail
🎯 TUTORIEL PAS À PAS

đŸ›Ąïž Installation et configuration de Suricata

📅 Mis Ă  jour : AoĂ»t 2026 ⏱ DurĂ©e : 45 min 📋 Niveau : IntermĂ©diaire / AvancĂ© 🐧 Debian 13 🐳 Docker đŸ›Ąïž Suricata

Suricata est un moteur d’analyse rĂ©seau open-source, haute performance, capable d’effectuer de l’IDS (Intrusion Detection System), de l’IPS (Intrusion Prevention System) et de l’analyse de sĂ©curitĂ© rĂ©seau (NSM). Il utilise des rĂšgles (similaires Ă  Snort) pour dĂ©tecter les menaces, et peut analyser le trafic en temps rĂ©el ou sur des fichiers PCAP.

📌 Ce tutoriel couvre :
  • L’installation sur Debian 13 (bare-metal).
  • L’installation via Docker (conteneur lĂ©ger).
  • La configuration avancĂ©e (rĂšgles, fichiers de logs, modes IDS/IPS).
  • Le test et la validation de l’installation.

1 Présentation de Suricata

Qu’est-ce que Suricata ?
  • Moteur IDS/IPS : dĂ©tection et prĂ©vention des intrusions.
  • Multi-threadĂ© : conçu pour les rĂ©seaux Ă  haut dĂ©bit.
  • CompatibilitĂ© : utilise les rĂšgles Snort (VRT) et Emerging Threats.
  • Analyse avancĂ©e : protocoles (HTTP, TLS, SSH, etc.), file extraction, TLS fingerprinting.
  • Mode IPS : peut bloquer activement le trafic malveillant (avec Netfilter ou NFQUEUE).

2 Installation sur Debian 13

2.1 – Mise à jour du systùme
$ sudo apt update && sudo apt upgrade -y
2.2 – Installation du paquet Suricata
Sur Debian 13, Suricata est disponible dans les dépÎts officiels.
$ sudo apt install suricata -y
✅ Suricata est installĂ©. VĂ©rifiez la version : suricata --version.
2.3 – Installation des rùgles (Emerging Threats)
TĂ©lĂ©chargez les rĂšgles open-source d’Emerging Threats pour une protection de base.
$ sudo suricata-update
✅ Les rĂšgles sont tĂ©lĂ©chargĂ©es et installĂ©es dans /var/lib/suricata/rules/.
💡 Astuce : Pour des rùgles plus complùtes, vous pouvez utiliser suricata-update --enable-source oisf/trafficid.
2.4 – Configuration de l’interface rĂ©seau
Identifiez l’interface rĂ©seau Ă  surveiller (ex: eth0, ens192).
$ ip a
Modifiez le fichier de configuration /etc/suricata/suricata.yaml pour dĂ©finir l’interface.
$ sudo nano /etc/suricata/suricata.yaml
# Recherchez la section "af-packet" ou "pcap" et dĂ©finissez l’interface
af-packet:
  - interface: eth0
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes
    use-mmap: yes
    tpacket-v3: yes
🔍 Explication : Le mode af-packet est plus performant que pcap sur Linux. Il permet une capture à haute vitesse avec peu de latence.
2.5 – Test de la configuration
Vérifiez que la configuration est correcte.
$ sudo suricata -T -c /etc/suricata/suricata.yaml
✅ Si tout est correct, vous verrez Configuration provided passed validation.
2.6 – DĂ©marrage du service
$ sudo systemctl enable suricata
$ sudo systemctl start suricata
$ sudo systemctl status suricata
✅ Suricata est actif. Les logs sont dans /var/log/suricata/.
2.7 – Visualisation des alertes
Consultez le fichier d’alertes en temps rĂ©el pour voir les dĂ©tections.
$ sudo tail -f /var/log/suricata/fast.log

3 Installation via Docker

L’approche conteneurisĂ©e est idĂ©ale pour une isolation rapide, des tests ou un dĂ©ploiement sans dĂ©pendances systĂšme.

3.1 – PrĂ©requis
Assurez-vous que Docker et Docker Compose sont installés.
3.2 – CrĂ©er le rĂ©pertoire du projet
$ mkdir -p ~/suricata-docker && cd ~/suricata-docker
3.3 – CrĂ©er le fichier docker-compose.yml
$ nano docker-compose.yml
---
services:
  suricata:
    image: jasonish/suricata:latest
    container_name: suricata
    restart: always
    network_mode: host
    cap_add:
      - NET_ADMIN
      - NET_RAW
      - SYS_NICE
    volumes:
      - ./rules:/var/lib/suricata/rules
      - ./logs:/var/log/suricata
      - ./suricata.yaml:/etc/suricata/suricata.yaml:ro
    command: -i eth0
🔍 Explication :
  • network_mode: host : permet de capturer le trafic rĂ©seau de l’hĂŽte.
  • cap_add : ajoute les capacitĂ©s nĂ©cessaires Ă  la capture rĂ©seau.
  • volumes : persiste les rĂšgles, les logs et la configuration.
  • command: -i eth0 : interface Ă  surveiller.
3.4 – CrĂ©er un fichier de configuration personnalisĂ©
Si vous souhaitez personnaliser la configuration, créez un fichier suricata.yaml.
$ nano suricata.yaml
Vous pouvez utiliser la configuration par dĂ©faut ou l’adapter Ă  vos besoins.
3.5 – TĂ©lĂ©chargement des rĂšgles et dĂ©marrage
$ mkdir -p rules logs
$ docker compose run --rm suricata suricata-update
$ docker compose up -d
✅ Le conteneur Suricata est dĂ©marrĂ© et analyse le trafic.
3.6 – Consultation des logs
$ docker compose logs -f
Les alertes sont disponibles dans le volume ./logs/fast.log.

4 Configuration avancée

4.1 – Mode IPS (PrĂ©vention)
Pour activer le mode IPS, Suricata doit ĂȘtre configurĂ© pour bloquer le trafic malveillant. Cela nĂ©cessite gĂ©nĂ©ralement l’utilisation de NFQUEUE.
# Dans suricata.yaml, activer le mode IPS
af-packet:
  - interface: eth0
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes
    use-mmap: yes
    tpacket-v3: yes
    mode: IPS
    # Pour le mode IPS, ajouter :
    # copy-mode: ips
    # copy-iface: eth1 (interface de sortie)
⚠ Attention : Le mode IPS est plus intrusif et nĂ©cessite une configuration rĂ©seau adaptĂ©e (bridge, redirection de paquets, etc.). Testez-le d’abord en environnement de laboratoire.
4.2 – Ajout de rĂšgles personnalisĂ©es
Vous pouvez ajouter vos propres rĂšgles dans le fichier /etc/suricata/rules/local.rules.
# Exemple de rĂšgle : alerter sur un scan de port
alert tcp $HOME_NET any -> $EXTERNAL_NET 1:1024 (msg:"Port Scan détecté"; flags:S; threshold: type both, track by_src, count 10, seconds 10; sid:1000001; rev:1;)
💡 Astuce : Utilisez suricata-update pour intĂ©grer vos rĂšgles locales. suricata-update --local /etc/suricata/rules/local.rules
4.3 – Export des logs vers un systùme externe
Suricata peut exporter ses alertes au format EVE JSON pour une intégration avec un SIEM (ex: Elasticsearch, Graylog).
# Dans suricata.yaml
outputs:
  - eve-log:
      enabled: yes
      filetype: regular
      filename: eve.json
      types:
        - alert
        - http
        - dns
        - tls

✅ Test de validation

🎉 Installation rĂ©ussie si :

  • Suricata est en cours d’exĂ©cution (systemctl status suricata ou docker compose ps).
  • Des alertes sont gĂ©nĂ©rĂ©es dans /var/log/suricata/fast.log (ou ./logs/fast.log pour Docker).
  • La commande suricata --version affiche la version installĂ©e.
  • Les rĂšgles sont chargĂ©es et appliquĂ©es (vĂ©rifiez suricata -T -c /etc/suricata/suricata.yaml).

📚 Ressources complĂ©mentaires