Snort est un système de détection et de prévention d\'intrusions réseau (IDS/IPS) open-source. Il analyse le trafic réseau en temps réel et le compare à un ensemble de règles pour identifier les activités malveillantes, les scans de ports, les tentatives d\'exploitation de vulnérabilités, et d\'autres menaces. C\'est l\'un des outils IDS les plus anciens et les plus reconnus.
Pourquoi utiliser Snort ?
- Détection basée sur les signatures : Très efficace pour détecter les menaces connues grâce à de vastes ensembles de règles (officielles, communautaires, ou payantes).
- Trois modes de fonctionnement : Il peut agir comme un simple "sniffer" de paquets, un enregistreur de paquets, ou un système de détection d\'intrusion complet.
- Mature et Stable : A des décennies de développement et d\'utilisation en production derrière lui.
- Intégration : Peut être intégré avec d\'autres outils (pare-feu, SIEM) pour une réponse automatisée.
Prérequis
- Un serveur Linux (Ubuntu/Debian) avec au moins deux interfaces réseau : une pour la gestion et une pour l\'écoute (monitoring).
- Accès root ou privilèges sudo.
Installation de Snort
L\'installation de Snort depuis les sources est la méthode recommandée pour avoir la dernière version, mais elle est complexe. Pour ce guide, nous utiliserons les paquets fournis par les dépôts Ubuntu, ce qui est plus simple.
Étape 1 : Installation des paquets
sudo apt-get update
sudo apt-get install -y snort
Pendant l\'installation, un assistant vous demandera de configurer la plage d\'adresses de votre réseau local (ex: `192.168.1.0/24`).
Étape 2 : Configuration initiale
Le fichier de configuration principal est /etc/snort/snort.conf. Ouvrez-le pour l\'inspecter et le modifier.
sudo nano /etc/snort/snort.conf
Les sections les plus importantes à vérifier sont :
ipvar HOME_NET: Assurez-vous que cette ligne correspond bien à votre réseau local.ipvar HOME_NET 192.168.1.0/24ipvar EXTERNAL_NET: Doit être l\'inverse de `HOME_NET`.ipvar EXTERNAL_NET !$HOME_NETvar RULE_PATH: Vérifiez que le chemin vers les règles est correct.var RULE_PATH /etc/snort/rulesinclude $RULE_PATH/local.rules: Assurez-vous que cette ligne est décommentée pour pouvoir ajouter vos propres règles.
Étape 3 : Mettre à jour les règles
Snort n\'est utile que si ses règles sont à jour. Oinkmaster ou PulledPork sont des outils populaires pour automatiser la mise à jour des règles. Pour une mise à jour manuelle simple, vous pouvez télécharger les règles communautaires.
# Téléchargez les règles communautaires depuis le site de Snort
# Puis décompressez-les et placez-les dans /etc/snort/rules/
Pour une gestion plus facile, il est recommandé d\'utiliser un gestionnaire de règles.
Tester et lancer Snort
Étape 1 : Tester la configuration
Cette commande vérifie que votre fichier snort.conf est syntaxiquement correct.
sudo snort -T -c /etc/snort/snort.conf
Étape 2 : Lancer Snort en mode détection
Nous allons lancer Snort pour qu\'il écoute sur notre interface réseau et enregistre les alertes dans /var/log/snort.
# -A console: Affiche les alertes sur la console
# -q: Mode silencieux (quiet)
# -u snort -g snort: Exécuter en tant qu'utilisateur et groupe snort
# -i eth1: Écouter sur l'interface eth1 (votre interface de monitoring)
sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth1
Étape 3 : Générer une alerte de test
Pour vérifier que Snort fonctionne, nous pouvons ajouter une règle simple dans /etc/snort/rules/local.rules qui détecte un ping.
sudo nano /etc/snort/rules/local.rules
Ajoutez la règle suivante :
alert icmp any any -> $HOME_NET any (msg:"Test de ping ICMP"; sid:1000001; rev:1;)
Redémarrez Snort, puis depuis une autre machine sur le réseau, envoyez un ping à votre serveur. Vous devriez voir l\'alerte "Test de ping ICMP" apparaître sur la console où Snort est en cours d\'exécution.
En production, les alertes de Snort ne sont pas lues sur la console. Elles sont généralement envoyées à un système de gestion des informations et des événements de sécurité (SIEM) comme Wazuh, Splunk, ou une stack ELK, pour la corrélation et l\'analyse centralisée.
Mode IPS (Prévention d\'Intrusion)
Snort peut également être configuré pour bloquer activement le trafic malveillant. C\'est le mode IPS (Inline). Cela se fait en utilisant des modules de sortie comme -Q --daq afpacket et en modifiant les règles de alert à drop ou reject.
# Exemple de lancement en mode IPS
sudo snort -Q --daq afpacket -i eth0:eth1 -c /etc/snort/snort.conf
Cette configuration est beaucoup plus complexe et doit être faite avec une extrême prudence pour ne pas bloquer de trafic légitime.
Suricata est un fork plus moderne de Snort qui a été conçu dès le départ pour être multi-thread, ce qui le rend généralement plus performant sur les matériels modernes. Snort a rattrapé une partie de son retard avec Snort 3, mais Suricata est souvent préféré pour les nouvelles installations à haut débit.
Conclusion
Snort est un outil de sécurité réseau fondamental. Apprendre à le déployer et à interpréter ses alertes est une compétence clé pour tout professionnel de la cybersécurité ou administrateur système. Bien qu\'il demande un investissement en temps pour affiner ses règles et minimiser les faux positifs, il fournit une visibilité inestimable sur la santé et la sécurité de votre réseau.