Accueil » Formations » Administration sécurité » Introduction à Suricata » TP04 – Écriture de règles personnalisées
← Introduction à Suricata

// travaux pratiques · Administration sécurité

TP04 - Écriture de règles personnalisées

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

Objectif : écrire, tester et charger vos propres signatures sur les protocoles ICMP, DNS, TLS et HTTP, en utilisant les tampons collants de Suricata.

Prérequis :

  • TP03 terminé.
  • La VM client démarrée sur le réseau du laboratoire.

Actions à réaliser :

  1. Créer le fichier de règles locales.

    sudo mkdir -p /etc/suricata/rules
    sudo nano /etc/suricata/rules/local.rules

    Saisissez les quatre règles suivantes (une par ligne). Elles utilisent la plage de sid réservée aux règles internes :

    alert icmp any any -> $HOME_NET any (msg:"LAB ICMP echo request vers HOME_NET"; itype:8; sid:1000001; rev:1;)
    alert dns any any -> any any (msg:"LAB requete DNS example.com"; dns.query; content:"example.com"; nocase; sid:1000002; rev:1;)
    alert tls any any -> any any (msg:"LAB SNI TLS example.org"; tls.sni; content:"example.org"; nocase; sid:1000003; rev:1;)
    alert http any any -> any any (msg:"LAB User-Agent curl"; flow:established,to_server; http.user_agent; content:"curl"; nocase; sid:1000004; rev:1;)
  2. Tester les règles isolément. L’option -S charge exclusivement le fichier indiqué : une erreur de syntaxe y est immédiatement signalée.

    sudo suricata -T -c /etc/suricata/suricata.yaml -S /etc/suricata/rules/local.rules -v
  3. Déclarer le fichier dans la configuration. Dans suricata.yaml, ajoutez le chemin complet sous rule-files :

    rule-files:
      - suricata.rules
      - /etc/suricata/rules/local.rules
  4. Valider et recharger.

    sudo suricata -T -c /etc/suricata/suricata.yaml
    sudo systemctl restart suricata
  5. Générer le trafic correspondant. Depuis le client, envoyez trois pings vers la sonde ; depuis la sonde, résolvez un nom, ouvrez une connexion TLS et une requête HTTP :

    ping -c 3 10.0.2.10
    getent hosts example.com
    curl -s -o /dev/null https://example.org
    curl -s -o /dev/null http://testmynids.org/uid/index.html
  6. Lire les alertes.

    sudo grep "LAB" /var/log/suricata/fast.log

Vérification / résultat attendu :

  • Les quatre messages LAB … apparaissent dans fast.log avec les sid 1000001 à 1000004.
  • Si la règle DNS ne se déclenche pas, le nom était sans doute en cache : videz le cache du résolveur local (sudo resolvectl flush-caches) et recommencez.
  • La règle TLS fonctionne alors que le contenu est chiffré : le nom de serveur (SNI) circule en clair dans la poignée de main.

Pour aller plus loin : modifiez la règle 1000004 pour ne cibler que le trafic sortant de HOME_NET vers EXTERNAL_NET, incrémentez rev et vérifiez le résultat. Consultez la liste des mots-clés disponibles avec suricata --list-keywords.

// 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