Vous avez surement entendu parler des IDS (Intrusion Detection System) et IPS (Intrusion Protection System) qui prennent de plus en plus d’importance. Les IDS et IPS permettent de détecter des comportements suspects ou anormales sur le système d’information. Ces technologies permettent d’être pro-actif sur les intrusions de votre réseau. Nous allons mettre en place dans ce tutoriel un IDS open-source nommé Snort.
Généralité
IPS, IDS quels différences?
IPS et IDS sont très semblables, néanmoins un paramètre les distingue au niveau du blocage des intrusions. Un IDS va uniquement détecter une intrusion, à vous ensuite de gérer celle-ci. Un IPS va, contrairement à l’IDS, pouvoir bloquer directement les intrusions dynamiquement.
Type IDS
Ils existent à ce jour trois types d’IDS:
- NIDS: (Network Intrusion Detection System) Il capture tout le trafic du réseau (sniffer) en temps réel. Il se base sur des règles qui lui ont été définies pour pouvoir détecter des comportements suspects. Il sert à détecter un comportement anormal sur le réseau.
- HIDS: (Host Intrusion Detection System) sert à détecter un comportement anormal sur une machine. Il collecte les informations qui lui sont envoyées par les équipements. Il utilise les signatures ou le comportement. Un agent est installé sur chacune des machines. Un HIDS va ensuite envoyer les informations au HIDS qui va analyser les signatures et les comportements.
- IDS hybride qui permet de détecter les intrusions sur les hôtes et sur le réseau.
Fiabilité
Ces technologies ne sont pas à fiables à 100%, elles peuvent générer des faux positifs c’est-à-dire qu’elles vont produire une alerte alors qu’il n’y a pas d’intrusion. Par exemple, un utilisateur de votre réseau n’a jamais téléchargé beaucoup de document puis un jour il télécharge plusieurs Gb, l’outil va alors générer une alerte alors qu’il n’y a pas de risque. Autre souci, les faux négatifs, on a bel et bien une intrusion sur notre réseau mais l’outil n’a généré aucune alerte.
CNIL
Si vous devez mettre en place un IDS/IPS dans votre entreprise, il ne faut pas que vous oubliiez que ceux-ci aspirent tout le trafic. Compte tenu de cela toutes les données, y compris personnelles de vos utilisateurs vont être analysées par l’IDS/IPS. Vous devez donc faire une déclaration à la CNIL.
Mise en place d’un IDS: Snort
Installation
Nous allons maintenant passer à l’installation de Snort, lors de ce tutoriel je vais installer celui-ci sur Ubuntu v16.04 que vous pouvez télécharger en cliquant ici. Sachez que Snort peut fonctionner dans 3 modes différents:
- Sniffer: permet d’observer les paquets reçus
- Log de paquet: pour archiver les logs du réseau
- IDS: génération d’alerte en fonction des comportements du réseau
Commencez par mettre à jour votre système, ouvrez un terminal et tapez les deux commandes suivantes:
sudo apt-get update sudo apt-get upgrade
Une fois le système mis à jour, nous allons installer Snort, pour cela tapez la commande suivante:
sudo apt-get install snort
Vous allez arriver sur l’assistant de configuration de Snort, faites « Entrer » sur la fenêtre de présentation. Vous devez ensuite renseigner l’interface sur laquelle l’outil écoutera le réseau, sélectionnez l’interface reliée à votre réseau local. Si vous ne connaissait pas le nom de votre interface, ouvrez un second terminal et entrez la commande « ifconfig » vous obtiendrait le nom de votre/vos interface(s).
Vous allez ensuite devoir renseigner la plage IP de votre réseau au format CIDR:
L’outil va vous demander une seconde fois l’interface à écouter, renseignez ce champ à nouveau. Patientez quelques secondes pour que l’installation se termine.
Configuration
Comme je vous l’ai expliqué un peu plus haut, nous allons devoir configurer les règles pour lesquelles notre outil devra émettre une alerte. Deux choix s’offrent à vous, soit définir les règles vous-même ou télécharger des règles sur le site de Snort afin d’être protégé contre les menaces connues. Vous pouvez bien entendu combiner les deux.
Règles manuelles
Pour définir des règles manuellement, éditez le fichier « local.rules » avec la commande suivante:
sudo nano /etc/snort/rules/local.rules
A la fin du fichier, ajoutez la ligne suivante:
alert icmp any any -> $HOME_NET any (msg:"Tentative connexion ICMP"; sid:00001; rev:1;)
Grâce à cette commande, Snort va générer à chaque requête ICMP (echo et reply) une alerte. Nous avons appliqué cette alerte, de tous les hôtes vers tous les hôtes (any any), msg est le message qui sera affiché dans l’alerte, sid est un identifiant qui doit être unique.
Nous allons vérifier que notre alerte fonctionne bien. Lancez l’outil Snort avec la commande suivante (pensez à adapter le nom de l’interface si elle est différente de eth0):
snort -A console -i eth0 -u snort -c /etc/snort/snort.conf
Lancez un ping a partir de n’importe quelle machine de votre réseau, comme expliqué précédemment Snort est un sniffer réseau, il va aspirer l’ensemble du trafic de votre réseau. Vous devriez voir l’alerte que nous venons de créer apparaître:
Appuyez sur Ctrl + C pour stopper Snort. L’ensemble des alertes/logs de l’outil sont stockés dans /var/log/snort. Pour accéder à un fichier de log, exécutez la commande suivante:
snort -r /var/log/snort/snort.log.XXXXXX
Règles Snort
Pour utiliser les règles présentes sur le site de Snort, cliquez ici. Téléchargez le fichier correspondant à la version installée. Décompressez le fichier avec la commande suivante en remplaçant XXX par le nom du fichier:
sudo tar zxvf XXX
Allez dans le dossier décompressé et déplacez ensuite le fichier « community.rules« dans le répertoire contenant les règles de Snort:
cd DOSSIER_DECOMP sudo mv community-rules /etc/snort/rules
Si vous éditez le fichier, vous remarquerez que l’ensemble est commenté. Bien entendu, vous devez décommenter uniquement les règles dont vous utilisez le protocole. (Inutile de générer des alertes sur le protocole POP si vous ne l’utilisez pas par exemple)
Nous allons maintenant indiquer à l’outil qu’il doit prendre en compte le fichier « community.rules » pour générer des alertes. Nous n’avions pas eu à faire cette opération pour la création de l’alerte du précédant point, car celle-ci était déjà présente dans le fichier de configuration par défaut. Utilisez la commande suivante:
sudo nano /etc/snort/snort.conf
Ajoutez la ligne suivante au fichier
include $RULE_PATH/community.rules
Sauvegardez et quittez. Le fichier contenant ces règles sera désormais pris en compte par Snort.
Snort en tâche de fond
Vous pouvez lancer Snort en tâche de fond (service) pour cela nous allons créer un script de démarrage. Créez le fichier suivant:
sudo nano /lib/systemd/system/snort.service
Dans ce fichier, entrez ce texte (n’oubliez pas d’adapter le nom de l’interface à votre cas):
[Unit] Description=Lancer Snort NIDS After=syslog.target network.target [Service] Type=simple ExecStart=/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 [Install] WantedBy=multi-user.target
Sauvegardez le fichier et redémarrez systemctl qui est l’outil de gestion des services:
sudo systemctl daemon-reload
Démarrez le service Snort que vous venez de créer
sudo systemctl start snort
Vérifiez le statut du service:
sudo systemctl status snort
Grâce à ce tutoriel vous êtes maintenant capable de mettre en place un IDS sur votre réseau et de personnaliser les paramètres de détection d’intrusion.
Très bon tuto, facile a suivre et mettre en oeuvre, merci pour ce super travail et a bientôt.
Cedric
Content d’avoir découvert votre tuto qui m’a permis de mettre en place Snort sur machine virtuel (firewall Debian Buster).
Merci car grâce à ce tuto je vais pouvoir avancer à pas de géant en effectuant divers tests.
Je conserve votre site pour divers consultations futur
Cordialement
Merci bcp Vincent Krahenbuhl en vous souhaitant belle réussite.
Ne fonctionne plus sur ubuntu 20.10 :s
Bonjour j’espère que vous allez bien. je sollicite votre aide sur mon projet monsieur, actuellement je travaille sur un système de détection d’intrusion au sein d’une entreprise. j’ai installé snort3 sur Ubuntu 20.04 LTS en virtuel. Pour la bonne gestion de mes alertes en interface web j’ai utilisé un outil SIEM au nom de Splunk. mais la difficulté donc je fait fasse est que je n’arrive pas à mieux placé mon capteur snort dans le réseau de l’entreprise pour qu’il écoute l’interface d’entrée du routeur cœur. Pour l’instant il écoute seulement ma carte réseau Ubuntu ens33 qui est en virtuelle.
bonjour prof merci pour la precision,mais je besoin de votre apport pour mon sujet de memoire