Workshop 2: Setting up an IDS (SNORT)

Ce laboratoire permet de mettre en place un système de détection d'intrusion (IDS) basé sur le logiciel libre Snort. Il enseigne l'installation, la configuration et l'utilisation de Snort pour analyser le trafic réseau en temps réel, détecter des attaques et enregistrer les alertes.

D'après le document Workshop 2: Setting up an IDS (SNORT)

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Workshop 2: Setting up an IDS (SNORT)

Document source

Workshop 2: Setting up an IDS (SNORT)

Network Security · PDF · 28 pages · 2015

Afficher l'aperçu du document

Consulter le document original →

Ce laboratoire permet de mettre en place un système de détection d'intrusion (IDS) basé sur le logiciel libre Snort. Il enseigne l'installation, la configuration et l'utilisation de Snort pour analyser le trafic réseau en temps réel, détecter des attaques et enregistrer les alertes. Le TP nécessite deux machines virtuelles, l'une pour héberger Snort et les services associés, l'autre pour simuler un client malveillant avec l'outil Nmap.

Objectifs

  • Comprendre le rôle d’un système de détection d’intrusion dans la sécurité réseau.
  • Installer Snort et les logiciels requis.
  • Configurer Snort pour son bon fonctionnement.
  • Utiliser Snort en mode sniffer et enregistreur de trafic réseau.
  • Écrire des règles personnalisées pour Snort.
  • Visualiser les alertes générées par Snort via des interfaces graphiques (ACID et BASE).

Prérequis et installation

  • Snort version 2.9.0.5 (ou 2.9.1.2 si disponible).
  • Pack de règles Snort (notamment dossiers rules/ et preproc_rules/).
  • Bibliothèque Winpcap pour la capture de paquets.
  • Bibliothèque ADODB pour la gestion des bases de données.
  • Pour ACID : Apache 1.3.x, PHP 4.x, MySQL 3.23, JPGraph, GD, DBTools.
  • Pour BASE : Apache 2.x, PHP 5.4.x, MySQL, PEAR, GD2.
  • Navigateur web supportant les cookies.
  • Deux machines virtuelles configurées sur un réseau local 192.168.231.0/24 :
    • Machine 1 : Windows XP SP3 avec Snort, Apache, MySQL, PHP, BASE.
    • Machine 2 : Windows 10 avec Nmap (client malveillant).

Installation et lancement de Snort

Téléchargez et installez Snort (version 2.9.0.5 recommandée). Après installation, le dossier principal se trouve en C:\snort\, avec l’arborescence suivante :

  • C:\snort\bin\ : fichiers exécutables.
  • C:\snort\doc\ : documentation.
  • C:\snort\etc\ : fichiers de configuration (snort.conf, etc.).
  • C:\snort\rules\ : règles Snort.
  • C:\snort\schemas\ : fichiers SQL pour création des bases de données.

Téléchargez le pack de règles Snort (version « snortrules-snapshot » recommandée) et copiez le contenu des dossiers rules/ et preproc_rules/ dans les dossiers correspondants de Snort.

Installez la bibliothèque Winpcap pour permettre à Snort de capturer le trafic réseau.

Configuration du fichier snort.conf

Éditez le fichier C:\snort\etc\snort.conf pour adapter la configuration à votre réseau :

  • Définissez la variable HOME_NET à votre réseau local, ici 192.168.231.0/24.
  • Définissez la variable EXTERNAL_NET à ANY pour considérer tout réseau autre que le local comme externe.
  • Spécifiez les chemins vers les règles :
    • RULE_PATH vers c:\snort\rules
    • PREPROC_RULE_PATH vers c:\snort\preproc_rules
  • Indiquez le répertoire des logs : c:\snort\log.
  • Précisez le chemin des librairies nécessaires au fonctionnement.
  • Activez le préprocesseur sfportscan pour détecter les scans de ports, avec journalisation dans c:\snort\log\portscan.log.
  • Configurez la sortie des logs vers une base de données MySQL en décommentant et adaptant la section output database avec les paramètres :
    • Base de données : snort
    • Utilisateur : snorty
    • Mot de passe : snorty
    • Hôte : localhost
  • Incluez les fichiers de configuration classification.conf et reference.conf pour la classification des alertes.
  • Incluez les fichiers de règles du préprocesseur.

Vérification des interfaces et lancement de Snort

Pour connaître l’interface réseau active, exécutez la commande suivante dans le dossier C:\snort\bin :

snort -W

Notez l’index de l’interface active (exemple : 1).

Pour utiliser Snort comme analyseur de trafic en temps réel, lancez :

snort -v -i 1

Snort affichera tous les paquets transitant sur l’interface.

Pour installer Snort en tant que service Windows, utilisez :

Snort /SERVICE /INSTALL -de -c c:/snort/etc/snort.conf -l c:/snort/log -i 1

Cette commande installe Snort en service, avec :

  • -de : mode démon (service)
  • -c : chemin vers le fichier de configuration
  • -l : chemin vers le dossier de logs
  • -i : interface réseau à écouter

Le service peut être démarré, arrêté ou redémarré via l’interface Windows des services ou la ligne de commande.

Création et ajout de règles Snort personnalisées

Dans le fichier c:\snort\rules\local.rules, ajoutez les règles suivantes pour détecter les paquets ICMP et UDP :

alert icmp any any -> 192.168.231.0 any (msg:"ping detected"; sid:1000001;)
alert udp any any -> 192.168.231.0 any (msg:"testing UDP rule"; sid:1000002;)

Aucune règle TCP personnalisée n’a été ajoutée car le fichier community.rules contient déjà de nombreuses règles TCP.

Utilisation de Nmap pour tester Snort

Depuis la machine 2 (Windows 10), utilisez Nmap pour effectuer des scans sur la machine 1 :

  • Scan TCP et UDP simple :
  • nmap -sS -sU 192.168.231.130
  • Scan des ports TCP et UDP de 1 à 5000 :
  • nmap -sS -sU -p U:1-5000,T:1-5000 192.168.231.130

Les ports ouverts apparaissent en vert, les ports filtrés en noir. Par défaut, les ports 80 (Apache), 3306 (MySQL) et 123 (NTP) sont ouverts.

Pour détecter le système d’exploitation de la machine cible :

nmap -O 192.168.231.130

Le résultat indique que la machine cible utilise Windows XP.

Consultation des logs Snort

Les logs sont enregistrés dans c:\snort\log. Le fichier de log peut être volumineux et difficile à lire avec un éditeur classique. Utilisez Wireshark pour ouvrir et analyser ces fichiers.

Pour faciliter la lecture et l’analyse des alertes, il est recommandé d’utiliser une interface graphique dédiée.

Utilisation d’ACID avec Snort

ACID (Analysis Console for Intrusion Databases) est une interface PHP pour analyser les alertes stockées dans la base de données MySQL. Elle permet de filtrer et visualiser les alertes selon différents critères (port, IP source/destination, protocole).

Avant installation, préparez l’environnement :

  • Apache 1.3.x
  • PHP 4.x
  • MySQL 3.23
  • DBTools pour la gestion des bases
  • JPGraph pour la génération de graphes
  • Bibliothèque GD (vérifier libpng et libjpeg)

Modifiez le fichier php.ini :

max_execution_time = 60
extension_dir = C:\php4\extensions
session.save_path = C:\php4\sessiondata
;error_reporting = E_ALL & ~E_NOTICE  (commenté)
register_globals = ON

Créez les bases de données snort et archive avec DBTools en important le fichier C:\snort\schemas\creat_mysql. Créez l’utilisateur snorty avec les droits nécessaires.

Ajoutez la bibliothèque ADODB et le package JPGraph dans les dossiers accessibles par Apache.

Placez le dossier ACID dans le répertoire web d’Apache et éditez acid_conf.php :

  • Spécifiez le chemin vers ADODB.
  • Configurez les paramètres de connexion aux bases snort et archive.
  • Indiquez le chemin vers JPGraph.
  • Indiquez le chemin vers le fichier portscan.log.

Accédez à ACID via un navigateur. Au premier lancement, un message indique que certaines tables manquent. Cliquez sur « setup page » puis sur « Create ACID AG » pour créer les tables nécessaires. Attendez que tous les statuts soient à DONE.

La page d’accueil affiche des statistiques sur le trafic suspect par protocole et les alertes de portscan. Vous pouvez consulter les alertes détaillées sous forme de tableaux et de graphes temporels.

Utilisation de BASE avec Snort

BASE (Basic Analysis and Security Engine) est le successeur d’ACID, compatible avec des versions plus récentes de PHP, Apache et MySQL.

Dans ce TP, la configuration utilise WAMP 2.4 (PHP 5.4.16, Apache 2.4, MySQL 5.6.1), la bibliothèque GD2 et le package PEAR.

Pour installer PEAR, lancez :

php ./go-pear.phar

Puis installez les bibliothèques nécessaires :

pear install --alldeps Image_Color-alpha Image_Canvas-alpha Image_Graph-alpha Mail-alpha Mail_Mime-alpha

Vérifiez l’installation avec :

pear list -a

Créez les bases snort et archive ainsi que l’utilisateur snorty. Activez la bibliothèque GD2 dans php.ini et modifiez ce fichier :

max_execution_time = 60
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT  (commenté)
include_path = "C:\wamp\bin\php5;C:\wamp\bin\php5\pear"
extension_dir = "C:\wamp\bin\php5\ext"
session.save_path = "c:\windows\temp"

Configurez BASE en éditant base_conf.php :

  • Chemin vers ADODB et type de base (mysql).
  • Paramètres de connexion à la base de données.
  • Chemin vers le fichier portscan.log.

Accédez à BASE via un navigateur. Comme pour ACID, créez les tables nécessaires via le lien proposé. Une fois les tables créées, la page d’accueil affiche les alertes et statistiques.

Vous pouvez consulter les alertes de scan de port sous forme de tableau et générer des graphes temporels.

Résultats attendus

  • Snort doit détecter et afficher en temps réel les paquets transitant sur l’interface réseau.
  • Les règles personnalisées doivent générer des alertes lors de la détection de paquets ICMP ou UDP ciblant le réseau local.
  • Les scans Nmap doivent apparaître dans les logs et être détectés par Snort.
  • Les fichiers de log doivent contenir les alertes et informations de trafic.
  • Les interfaces graphiques ACID et BASE doivent afficher les alertes, permettre des recherches filtrées et générer des graphes.
  • Les bases de données doivent contenir les tables nécessaires et les données des alertes.

Pièges courants

  • Ne pas modifier correctement les variables HOME_NET et EXTERNAL_NET dans snort.conf, ce qui fausse la détection.
  • Oublier d’installer Winpcap, empêchant Snort de capturer le trafic.
  • Ne pas copier les règles dans les bons dossiers (rules et preproc_rules).
  • Ne pas décommenter ou mal configurer la section output database dans snort.conf, empêchant l’enregistrement des logs en base.
  • Ne pas créer les bases de données et l’utilisateur MySQL avec les droits appropriés.
  • Ne pas installer ou mal configurer les dépendances PHP (ADODB, JPGraph, GD, PEAR) pour ACID ou BASE.
  • Ne pas créer les tables nécessaires via l’interface ACID ou BASE, ce qui bloque l’affichage des alertes.
  • Utiliser des versions incompatibles des logiciels, notamment pour ACID (versions anciennes requises).
  • Oublier d’indiquer le bon chemin vers le fichier portscan.log dans les fichiers de configuration ACID et BASE.
  • Consulter les logs Snort avec un éditeur texte classique, ce qui est peu lisible et inefficace.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions