Accueil » Formations » Administration sécurité » Introduction à Suricata » TP08 – Passage en mode IPS avec NFQUEUE
← Introduction à Suricata

// travaux pratiques · Administration sécurité

TP08 - Passage en mode IPS avec NFQUEUE

  • TP 8 / 8
  • 6 étapes
  • ≈ 45 min
  • Accès libre

Objectif : faire fonctionner Suricata en prévention d’intrusion (IPS) sur la sonde avec NFQUEUE, bloquer un trafic précis avec une règle drop, puis revenir proprement au mode IDS.

Prérequis :

  • TP04 terminé (fichier local.rules déclaré dans la configuration).
  • Un accès à la console de la VM dans VirtualBox, pas seulement en SSH : si Suricata s’arrête alors que les paquets sont redirigés, le noyau les rejette et la connexion SSH est coupée.
  • Un instantané récent de la sonde.

Attention : ce TP modifie le pare-feu de la sonde. Ne le reproduisez jamais sur un serveur de production sans fenêtre de maintenance, plan de retour arrière et validation préalable en mode IDS.

Actions à réaliser :

  1. Vérifier la prise en charge de NFQUEUE.

    sudo suricata --build-info | grep -i nfq
  2. Ajouter une règle de blocage. À la fin de /etc/suricata/rules/local.rules, ajoutez :

    drop http any any -> any any (msg:"LAB IPS blocage testmynids"; flow:established,to_server; http.host; content:"testmynids.org"; sid:1000010; rev:1;)
    sudo suricata -T -c /etc/suricata/suricata.yaml
  3. Lancer Suricata en mode NFQUEUE. Arrêtez le service (qui fonctionne en AF_PACKET), puis lancez Suricata au premier plan sur la file 0 :

    sudo systemctl stop suricata
    sudo suricata -c /etc/suricata/suricata.yaml -q 0

    Attendez le message indiquant que le moteur est démarré.

  4. Rediriger le trafic de la sonde vers la file. Dans une seconde console, envoyez vers NFQUEUE les paquets entrants et sortants de la machine :

    sudo iptables -I INPUT -j NFQUEUE
    sudo iptables -I OUTPUT -j NFQUEUE
  5. Tester le blocage. La première requête doit échouer au bout du délai, la seconde aboutir :

    curl -m 10 http://testmynids.org/uid/index.html
    curl -m 10 -s -o /dev/null -w "%{http_code}\n" https://example.org
    sudo jq -c 'select(.event_type=="alert" and .alert.signature_id==1000010) | .alert.action' /var/log/suricata/eve.json
  6. Revenir au mode IDS. Supprimez d’abord les règles de pare-feu, puis arrêtez Suricata avec Ctrl+C dans la première console et relancez le service :

    sudo iptables -D INPUT -j NFQUEUE
    sudo iptables -D OUTPUT -j NFQUEUE
    sudo systemctl start suricata

Vérification / résultat attendu :

  • --build-info mentionne la prise en charge de NFQueue.
  • La requête vers testmynids.org n’aboutit pas (délai dépassé), alors que https://example.org renvoie le code 200.
  • Le journal EVE contient l’alerte 1000010 avec l’action blocked.
  • Après le retour arrière, sudo iptables -L -n ne contient plus de règle NFQUEUE et le service est actif.

Pour aller plus loin : sur une passerelle Linux, la redirection se fait sur la chaîne FORWARD ; avec nftables, l’option bypass laisse passer le trafic si Suricata est arrêté, au prix de la protection. Étudiez aussi le mode AF_PACKET IPS (copy-mode: ips), qui relie deux interfaces comme un pont.

// formation sur mesure

Former votre équipe sur ce sujet ?

Azur Secure anime des sessions intra-entreprise, à distance ou dans vos locaux sur la Côte d'Azur, adaptées au niveau de vos équipes.

Demander un programme
Défiler vers le haut