Dans cette étape, vous allez apprendre à créer et tester votre propre règle Suricata pour détecter des motifs spécifiques dans le trafic réseau. Nous allons nous concentrer sur la détection des requêtes HTTP vers un domaine de test (example.com) comme exemple pratique. Les règles personnalisées vous permettent d'étendre les capacités de détection de Suricata au-delà de son ensemble de règles par défaut.
-
Tout d'abord, accédez au répertoire des règles où Suricata stocke ses règles de détection :
cd /var/lib/suricata/rules
C'est généralement là que tous les fichiers de règles Suricata sont stockés. Nous allons ajouter nos règles personnalisées ici pour les organiser avec les règles existantes.
-
Créez un nouveau fichier de règles spécifiquement pour vos règles personnalisées :
sudo nano custom.rules
L'utilisation de sudo
est nécessaire car le répertoire des règles nécessite des privilèges administratifs pour être modifié. Nous nommons le fichier custom.rules
pour le distinguer clairement des fichiers de règles par défaut de Suricata.
-
Ajoutez la règle suivante pour détecter les requêtes HTTP vers example.com :
alert http any any -> any any (msg:"HTTP Request to example.com"; flow:to_server; http.host; content:"example.com"; nocase; sid:1000002; rev:1;)
Analysons ce que fait cette règle :
alert http
: Déclenche une alerte pour le trafic HTTP
any any -> any any
: S'applique au trafic d'un port source quelconque vers un port de destination quelconque
msg
: Fournit un message d'alerte lisible par l'homme
flow:to_server
: Ne correspond qu'au trafic allant vers les serveurs
http.host
: Examine l'en-tête HTTP Host
content:"example.com"
: Recherche ce domaine spécifique
nocase
: Rend la correspondance insensible à la casse
sid:1000002
: Donne à la règle un identifiant unique (au-dessus de 1 000 000 pour les règles personnalisées)
rev:1
: Indique que c'est la première version de la règle
-
Enregistrez le fichier dans l'éditeur nano en appuyant sur Ctrl + O (écriture), puis Entrée pour confirmer, et Ctrl + X pour quitter.
-
Maintenant, nous devons indiquer à Suricata de charger notre nouveau fichier de règles. Modifiez la configuration principale :
sudo nano /etc/suricata/suricata.yaml
Trouvez la section rule-files:
(généralement aux environs de la ligne 50 - 60) et ajoutez :
- custom.rules
Cette addition garantit que Suricata chargera nos règles personnalisées au démarrage.
-
Avant d'appliquer les modifications, vérifiez que la syntaxe de la règle est correcte :
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Le drapeau -T
indique à Suricata de tester la configuration sans réellement la lancer. Cela permet de détecter toute erreur de syntaxe dans vos règles avant qu'elles ne soient utilisées.
-
Redémarrez Suricata pour charger la nouvelle règle :
sudo pkill suricata
sudo suricata -c /etc/suricata/suricata.yaml -i eth0
La première commande arrête toute instance de Suricata en cours d'exécution, tandis que la deuxième la relance avec notre configuration mise à jour.
-
Pour tester si notre règle fonctionne, générez un peu de trafic HTTP vers example.com :
curl http://example.com
Cette commande effectue une simple requête HTTP qui devrait déclencher notre nouvelle règle.
-
Enfin, vérifiez si Suricata a détecté le trafic en affichant les dernières alertes :
sudo tail -n 5 /var/log/suricata/fast.log
Vous devriez voir une alerte correspondant au message de notre règle personnalisée concernant les requêtes HTTP vers example.com. Sinon, vérifiez chaque étape et assurez-vous que la syntaxe de la règle est correcte.