Règles de signature avec Snort et Suricata
Écrire et lire des règles réseau.
Règles de signature avec Snort et Suricata est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.
Snort et Suricata
Snort et Suricata sont les deux principaux moteurs IDS/IPS à code source ouvert. Ils partagent un langage de règles largement compatible ; une règle écrite pour l'un fonctionne généralement sur l'autre.
Suricata ajoute le traitement multithread, des analyseurs de protocoles natifs, l'extraction de fichiers et une journalisation riche (EVE JSON) ; Snort 3 a modernisé son propre moteur de manière similaire. Apprendre une seule fois la syntaxe des règles vous donne un avantage sur les deux.
Anatomie d'une règle
Chaque règle comporte deux parties : un en-tête et un corps d'options entre parenthèses. L'en-tête définit l'action, le protocole et la direction du trafic ; le corps définit les éléments à rechercher et la manière de les signaler.
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
msg:"WEB suspicious request"; \
content:"/admin.php"; http_uri; \
sid:1000001; rev:1; )Les champs d’en-tête
L’en-tête se lit de gauche à droite :
- action — alerter, abandonner, rejeter, autoriser
- protocole — TCP, UDP, ICMP, IP (ou protocoles applicatifs dans Suricata : HTTP, DNS, TLS)
- IP/port source et IP/port de destination
- direction —
->unidirectionnelle ou<>bidirectionnelle
Des variables comme $HOME_NET et $EXTERNAL_NET proviennent de votre configuration afin que les règles restent portables d’un site à l’autre.
drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )Actions : alerte ou abandon
L’action détermine le comportement IDS ou IPS de cette règle :
alert— consigner et notifier, sans bloquer le trafic (IDS)drop— supprimer silencieusement le paquet (IPS, uniquement en ligne)reject— supprimer le paquet et envoyer une réinitialisation TCP ou un message d’inaccessibilité ICMPpass— autoriser explicitement, en ignorant les règles suivantes
Le même moteur devient IDS ou IPS selon qu’il est déployé en ligne et selon les actions utilisées.
Correspondance de contenu
Le mot-clé content recherche une séquence d’octets dans la charge utile. Le texte est placé entre guillemets ; les données binaires sont placées entre barres verticales sous forme hexadécimale.
Les mots-clés d’ancrage affinent les correspondances : offset, depth, distance et within limitent l’emplacement où la séquence peut apparaître, ce qui améliore à la fois la précision et les performances.
alert tcp any any -> $HOME_NET any ( \
msg:"Malware magic bytes"; \
content:"|4D 5A|"; offset:0; depth:2; \
sid:1000003; rev:1; )Tampons persistants
Les règles modernes recherchent des correspondances dans des tampons adaptés au protocole plutôt que dans le flux brut. Après un mot-clé de tampon, les correspondances content suivantes s’appliquent à cette partie du protocole analysé.
http_uri— l’URI de la requêtehttp_header— les en-têtes de la requête ou de la réponsehttp_user_agent— l’agent utilisateurtls_sni/dns_query— le nom du serveur TLS / la requête DNS
Cette méthode est bien plus fiable que la recherche d’une sous-chaîne dans l’intégralité du paquet.
alert http any any -> any any ( \
msg:"Suspicious user agent"; \
http.user_agent; content:"sqlmap"; nocase; \
sid:1000004; rev:1; )PCRE et insensibilité à la casse
Lorsque les chaînes fixes ne suffisent pas, pcre permet d’utiliser des expressions régulières compatibles avec Perl. Associez un préfiltre content peu coûteux à pcre afin que l’expression régulière ne s’exécute que sur les paquets candidats, ce qui préserve les performances.
Le modificateur nocase rend une correspondance de contenu insensible à la casse, ce qui est important pour les en-têtes et les champs contrôlés par l’utilisateur que les attaquants peuvent faire varier.
alert http any any -> $HOME_NET any ( \
msg:"SQLi attempt in URI"; \
http.uri; content:"select"; nocase; \
pcre:"/union\s+select/i"; \
sid:1000005; rev:1; )Mots-clés de flux et d’état
L’option flow restreint une règle à l’état et à la direction de la connexion, ce qui réduit les faux positifs et le coût de traitement.
established— uniquement pour les sessions TCP établiesto_server/to_client— direction de la requête ou de la réponse
Rechercher les réponses du serveur uniquement lorsque la connexion est établie et dans la direction to_client évite de déclencher la règle sur des paquets isolés ou usurpés.
alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
msg:"Beacon response"; \
flow:established,to_client; \
content:"|00 01 02 03|"; \
sid:1000006; rev:1; )Métadonnées : identifiant, révision, message, référence
Les options de gestion facilitent la maintenance d’un ensemble de règles :
sid— identifiant de signature unique (utilisez 1000000 ou plus pour les règles locales)rev— numéro de révision, à incrémenter à chaque modificationmsg— texte de l’alerte visible par les analystesclasstype— catégorie qui détermine la prioritéreference— lien vers un CVE ou un avis de sécurité
Des identifiants de signature stables et des numéros de révision incrémentés permettent de suivre et de mettre à jour les règles sans perturber les tableaux de bord ni les suppressions d’alertes.
alert tcp any any -> $HOME_NET 445 ( \
msg:"EternalBlue exploit attempt"; \
flow:to_server,established; content:"|FF|SMB"; \
classtype:attempted-admin; \
reference:cve,2017-0144; sid:1000007; rev:2; )Différences entre Snort et Suricata
Bien que leurs règles soient compatibles, ces moteurs offrent des fonctionnalités différentes :
- Suricata fonctionne avec plusieurs fils d’exécution, analyse nativement les protocoles applicatifs, extrait les fichiers, calcule les empreintes JA3 et produit des fichiers JSON EVE
- Snort 3 a entièrement réécrit son moteur pour améliorer les performances et fournir un système modulaire de modules d’extension
Certains mots-clés sont propres à un moteur. Suricata ajoute des mots-clés de la couche applicative (tls.sni, dns.query, http.method) ainsi que des fonctionnalités liées aux jeux de données et aux bits de flux. Lorsque vous partagez des règles, ciblez le plus petit dénominateur commun ou conservez des ensembles de règles propres à chaque moteur.
Filtrage par débit et seuils
Pour éviter qu’une règle n’inonde la console, appliquez des seuils. detection_filter ne se déclenche qu’après N événements sur une période donnée ; threshold associé à limit plafonne le volume d’alertes.
C’est essentiel pour détecter les attaques par force brute et les balayages, lorsqu’un événement isolé n’a pas de signification mais qu’une rafale constitue le signal.
alert tcp any any -> $HOME_NET 22 ( \
msg:"SSH brute force"; flow:to_server; \
detection_filter:track by_src, count 5, seconds 60; \
sid:1000008; rev:1; )Vérification rapide
Lisez une règle et prédisez son comportement.
Récapitulatif
Vous pouvez désormais lire et écrire des signatures Snort/Suricata :
- Une règle = en-tête (action, protocole, source/destination, direction) + options du corps
- L’action détermine IDS ou IPS :
alert,drop,reject,pass contentassocié à un décalage, une profondeur et une valeur hexadécimale recherche des octets dans la charge utile- Les tampons persistants (URI HTTP, tls.sni, dns.query) recherchent des correspondances dans les champs analysés du protocole
pcreetnocasegèrent les séquences variablesflowrestreint la recherche à un état et une direction- Les identifiants, révisions, messages et références facilitent la maintenance des règles
- Les seuils limitent le bruit des attaques par force brute et des balayages
Ensuite : détecter les menaces sans aucune signature.
Questions Fréquemment Posées
La leçon « Règles de signature avec Snort et Suricata » est-elle gratuite ?
Oui — le texte complet de « Règles de signature avec Snort et Suricata » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Règles de signature avec Snort et Suricata » ?
Écrire et lire des règles réseau. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?
Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Règles de signature avec Snort et Suricata » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?
Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Notions d’IDS et d’IPS
- Règles de signature avec Snort et Suricata
- Détection des anomalies et des comportements
- Réglage et déploiement