// 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 :
Créer le fichier de règles locales.
sudo mkdir -p /etc/suricata/rules sudo nano /etc/suricata/rules/local.rulesSaisissez les quatre règles suivantes (une par ligne). Elles utilisent la plage de
sidré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;)Tester les règles isolément. L’option
-Scharge 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 -vDéclarer le fichier dans la configuration. Dans
suricata.yaml, ajoutez le chemin complet sousrule-files:rule-files: - suricata.rules - /etc/suricata/rules/local.rulesValider et recharger.
sudo suricata -T -c /etc/suricata/suricata.yaml sudo systemctl restart suricataGé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.10getent hosts example.com curl -s -o /dev/null https://example.org curl -s -o /dev/null http://testmynids.org/uid/index.htmlLire les alertes.
sudo grep "LAB" /var/log/suricata/fast.log
Vérification / résultat attendu :
- Les quatre messages
LAB …apparaissent dansfast.logavec lessid1000001 à 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.
