Security
Difficulte: Advanced
5 min de lecture

Suricata : IDS/IPS réseau haute performance

Tutoriel pour installer et configurer Suricata, un moteur de détection et de prévention d\\'intrusion réseau (IDS/IPS) moderne et multi-thread.

Retour aux tutoriels
Qu\'est-ce que Suricata ?
Suricata est un moteur de détection de menaces réseau open-source, haute performance et mature. Il peut agir comme un Système de Détection d\'Intrusion (IDS), un Système de Prévention d\'Intrusion (IPS), et un outil de surveillance de la sécurité réseau (NSM). Il a été conçu pour être multi-thread, ce qui lui permet de tirer pleinement parti des processeurs multi-cœurs modernes.

Pourquoi utiliser Suricata ?

  • Haute Performance : Conçu pour le multi-threading, il peut inspecter un trafic réseau à très haut débit.
  • Détection Avancée : Peut non seulement utiliser des règles basées sur les signatures (comme Snort), mais aussi analyser les protocoles et extraire des fichiers pour une analyse plus approfondie.
  • Écosystème Moderne : Sortie des logs au format EVE JSON, un format structuré facile à intégrer avec des outils comme une stack ELK (Elasticsearch, Logstash, Kibana) ou Splunk.
  • Gestion de règles simple : Intègre un outil, `suricata-update`, pour faciliter la mise à jour des ensembles de règles.

Prérequis

  • Un serveur Linux (Ubuntu/Debian est utilisé dans ce guide).
  • Accès root ou privilèges sudo.
  • Une interface réseau dédiée à l\'écoute du trafic (monitoring).

Installation

L\'Open Information Security Foundation (OISF), qui développe Suricata, maintient un dépôt PPA pour Ubuntu, ce qui rend l\'installation très simple.

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install -y suricata

Configuration de base

Le fichier de configuration principal est /etc/suricata/suricata.yaml. C\'est un fichier YAML, donc l\'indentation est très importante.

sudo nano /etc/suricata/suricata.yaml

Étape 1 : Définir les variables réseau

La section la plus importante à configurer est `vars`. Elle définit vos réseaux.

vars:
  # Votre réseau local
  HOME_NET: "[192.168.1.0/24, 10.0.0.0/8]"
  # Tout ce qui n'est pas votre réseau local
  EXTERNAL_NET: "!$HOME_NET"

Étape 2 : Choisir l\'interface d\'écoute

Dans la section `af-packet`, spécifiez sur quelle interface Suricata doit écouter le trafic.

af-packet:
  - interface: eth1 # Remplacez par votre interface de monitoring
    threads: auto
    cluster-type: cluster_flow
    cluster-id: 99
    defrag: yes
    use-mmap: yes

Gestion des règles

Suricata est livré avec un outil simple pour gérer les ensembles de règles.

# Met à jour la liste des sources de règles et télécharge les règles activées
sudo suricata-update

Par défaut, il utilise l\'ensemble "ET Open", qui est un excellent point de départ. Vous pouvez lister les sources disponibles avec `sudo suricata-update list-sources` et en activer d\'autres si vous le souhaitez.

Lancer et tester Suricata

Étape 1 : Tester la configuration

# Le flag -T vérifie la configuration et la validité des règles
sudo suricata -T -c /etc/suricata/suricata.yaml -v

Étape 2 : Lancer le service

sudo systemctl start suricata

Vérifiez qu\'il est bien démarré :

sudo systemctl status suricata

Étape 3 : Examiner les logs

Suricata génère plusieurs logs dans /var/log/suricata/. Le plus important est `eve.json`.

sudo tail -f /var/log/suricata/eve.json

Ce fichier contient tous les types d\'événements (alertes, métadonnées sur le trafic HTTP, DNS, TLS, etc.) dans un format structuré.

Pour générer une alerte de test, vous pouvez utiliser cette commande depuis une autre machine :

curl -A "BlackSun" http://IP_DU_SERVEUR_SURICATA

Vous devriez voir une alerte se déclencher dans `eve.json` car la règle "ET MALWARE BlackSun" est activée par défaut.

EVE-Box pour la visualisation
Pour une visualisation simple des alertes, vous pouvez installer EVE-Box, une interface web légère qui lit directement le fichier `eve.json` et vous présente une boîte de réception d\'alertes.

Passer en mode IPS (Prévention)

Pour que Suricata bloque activement le trafic, il doit être placé "en ligne" (inline) sur le réseau et utiliser le mode de capture NFQUEUE.

  1. Modifiez /etc/suricata/suricata.yaml pour changer le mode de capture.
  2. Utilisez iptables pour rediriger le trafic vers la file d\'attente de Suricata :
    sudo iptables -I FORWARD -j NFQUEUE
  3. Démarrez Suricata en mode NFQUEUE :
    sudo suricata -c /etc/suricata/suricata.yaml -q 0

C\'est une configuration avancée qui peut interrompre votre trafic réseau si elle est mal faite.

Affinage des règles
La plus grande partie du travail avec un IDS/IPS consiste à affiner les règles : désactiver celles qui génèrent trop de faux positifs dans votre environnement, et potentiellement en créer de nouvelles. Cela demande du temps et de l\'expérience.

Conclusion

Suricata est un IDS/IPS de nouvelle génération, conçu pour les réseaux modernes à haut débit. Sa facilité d\'installation et de gestion des règles en fait un excellent choix pour quiconque souhaite obtenir une visibilité approfondie sur son trafic réseau. Couplé à une stack de visualisation comme ELK, il devient une sonde de sécurité réseau extrêmement puissante, vous permettant de détecter, d\'analyser et de répondre aux menaces en temps réel.