IREX - Déployer et Configurer l'IDS Open Source Snort

Dans un monde où les cyberattaques se multiplient, la simple protection de votre réseau par un pare-feu ne suffit plus. La vraie sécurité exige de savoir ce qui se passe à tout moment.

 · 7 min read


  1. L'Indispensable Surveillance Réseau

  2. Dans un monde où les cyberattaques se multiplient, se contenter d'un simple pare-feu est loin d'être suffisant. Il est essentiel de passer d'une approche de "porte verrouillée" à une approche de "surveillance active". C'est précisément le rôle des systèmes de détection d'intrusions (IDS), de véritables sentinelles qui veillent en permanence sur votre infrastructure. Cet article a pour but de vous guider dans le déploiement de Snort, une solution open source reconnue mondialement. Préparez-vous à obtenir une visibilité sans précédent sur la sécurité de votre réseau et à agir de manière proactive contre les menaces.


  3. Snort : Présentation, Fonctionnalités et Rôle

  4. Lancé en 1998 par Martin Roesch, Snort est bien plus qu'un simple outil de cybersécurité : c'est un standard de l'industrie pour la détection d'intrusions. Son rôle est d'analyser le trafic réseau en temps réel à l'aide d'un ensemble de règles personnalisables. Il fonctionne selon trois modes principaux :

    • Sniffer de paquets : Agit comme un simple analyseur de protocole, un peu comme l'outil Wireshark. Il capture le trafic réseau pour que vous puissiez l'examiner.
    • Enregistreur de paquets : Permet de sauvegarder tous les paquets dans des fichiers journaux pour une analyse ultérieure. Cela est essentiel pour les investigations post-incident.
    • Système de détection d'intrusions (IDS/IPS) : C'est le mode le plus puissant. Il utilise des règles de signatures pour identifier les menaces connues. Pensez à ces règles comme à des "empreintes digitales" d'attaques : un scan de ports, une tentative d'exploitation, un logiciel malveillant... Dès qu'un paquet de données correspond à une de ces empreintes, Snort génère une alerte, vous permettant de réagir immédiatement.


  5. Déploiement : Guide d'installation et de Configuration

    1. Pré-requis techniques

    2. L'installation de Snort est plus efficace sur un système d'exploitation de type Linux, tel que Debian ou Ubuntu. Pour un déploiement réussi, les pré-requis de base sont :

      • Un serveur avec un minimum de 2 Go de RAM.
      • Une interface réseau configurée en mode promiscuous pour qu'elle puisse capturer l'ensemble du trafic sur le segment de réseau.


    3. Installation via les dépôts APT

    4. Pour une installation simple et rapide, la méthode recommandée est d'utiliser le gestionnaire de paquets de votre distribution. C'est la façon la plus simple d'obtenir une version stable et fonctionnelle de Snort.

      sudo apt-get update
      sudo apt-get install snort

      Une fois l'installation terminée, vous serez invité à configurer les paramètres de base, y compris la variable HOME_NET qui définit la plage d'adresses IP de votre réseau interne.


    5. Configuration initiale et test

    6. Le cœur de la configuration réside dans le fichier snort.lua (le format moderne pour Snort 3). L'étape la plus importante est de définir correctement la variable HOME_NET, qui représente l'étendue de votre réseau interne. Une configuration incorrecte pourrait soit générer une multitude de fausses alertes (faux positifs), soit pire encore, laisser passer des menaces critiques. Voici un exemple de ce à quoi ressemble la configuration de base.

      Exemple de configuration de Snort.lua

      L'image ci-dessus montre deux variables essentielles dans le fichier de configuration :

      • HOME_NET : Cette variable est cruciale. Elle définit la plage d'adresses IP que Snort doit considérer comme votre réseau "maison" ou interne. Dans cet exemple, il s'agit de '192.168.69.147/24'. Cela indique à Snort de surveiller tout le trafic provenant de ou à destination de cette plage d'adresses.
      • EXTERNAL_NET : Cette variable définit les réseaux externes. Dans la plupart des cas, elle est configurée sur '!$HOME_NET', ce qui signifie "tout ce qui n'est pas votre réseau interne". Cela permet à Snort de différencier clairement les trafics légitimes internes des menaces potentielles venant de l'extérieur.
      Une fois configuré, Snort est une solution puissante et prête à l'emploi.


    7. Gestion des règles de la communauté et journalisation

    8. Avec Snort installé, l'étape suivante est de lui fournir des règles et d'activer la journalisation des alertes. Le répertoire des règles pour une installation apt-get est généralement /etc/snort/rules. Pour que Snort lise les règles de ce répertoire, vous devez les inclure directement dans le fichier de configuration snort.lua, dans la section ips.

      sudo touch /etc/snort/rules/local.rules
      wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
      tar -xvzf snort3-community-rules.tar.gz
      sudo cp snort3-community-rules/* /etc/snort/rules/

      Une fois les règles copiées, ajoutez les lignes include suivantes à votre fichier snort.lua pour les activer :

      ips = {
      enable_builtin_rules = true,
      include = 'rules/local.rules',
      include = 'rules/snort3-community.rules',
      variables = default_variables
      }

      Pour lancer Snort en utilisant ces règles et en activant la journalisation dans le répertoire recommandé /var/log/snort, utilisez la commande suivante (pensez à remplacer interface_name) :

      sudo snort -c /etc/snort/snort.lua -i interface_name -s 65535 -k none -l /var/log/snort

      Cette commande est cruciale pour une surveillance complète. Voici le détail de chaque option :

      • sudo snort : Lance l'exécution du programme Snort avec des privilèges d'administrateur, nécessaires pour écouter le trafic réseau.
      • -c /etc/snort/snort.lua : Spécifie le chemin vers votre fichier de configuration principal, où se trouvent les variables réseau (HOME_NET) et l'inclusion de vos règles.
      • -i interface_name : Indique à Snort quelle interface réseau il doit surveiller (par exemple, eth0 pour Ethernet ou wlan0 pour le Wi-Fi).
      • -s 65535 : Force Snort à capturer le paquet entier jusqu'à une taille maximale de 65535 octets. Cela garantit qu'il ne tronquera pas les paquets qui pourraient contenir des données malveillantes.
      • -k none : Désactive la validation de la somme de contrôle (checksum) des paquets. C'est utile pour des raisons de performance ou si vous surveillez un réseau où des paquets avec des sommes de contrôle incorrectes sont courants.
      • -l /var/log/snort : Spécifie le répertoire de sortie où Snort doit stocker les fichiers de logs. C'est ici que les alertes et les journaux de paquets seront enregistrés pour une analyse ultérieure.


    9. Lancement en tant que service au démarrage

    10. Pour une protection continue, Snort doit démarrer automatiquement. Vous pouvez le configurer comme un service systemd pour qu'il s'exécute en arrière-plan dès le démarrage de la machine.

      1. Créez le fichier de service systemd :

      sudo nano /etc/systemd/system/snort.service

      2. Copiez et collez le contenu suivant, en remplaçant interface_name par votre interface réelle :

      [Unit]
      Description=Snort IDS/IPS Daemon
      After=syslog.target network.target
      
      [Service]
      Type=simple
      ExecStart=/usr/bin/snort -c /etc/snort/snort.lua -i interface_name -D
      
      [Install]
      WantedBy=multi-user.target

      ExecStart : La commande qui lance Snort. L'option -D (pour Daemon) permet à Snort de s'exécuter en arrière-plan, sans bloquer le terminal. C'est essentiel pour un service.

      3. Enregistrez et quittez le fichier (Ctrl+X, Y, Entrée).

      4. Rechargez le gestionnaire systemd, activez et démarrez le service :

      sudo systemctl daemon-reload
      sudo systemctl enable snort.service
      sudo systemctl start snort.service

      systemctl daemon-reload : Recharge les configurations de systemd pour prendre en compte le nouveau fichier de service. systemctl enable snort.service : Configure le service pour qu'il se lance automatiquement à chaque démarrage du système. systemctl start snort.service : Démarre le service Snort immédiatement.

      5. Vérifiez l'état du service :

      sudo systemctl status snort.service

      Si Snort est en cours d'exécution, vous devriez voir un message indiquant qu'il est active (running).


  6. Exemples de Détection et d'Alertes

  7. Une fois Snort opérationnel, il agit comme un agent de sécurité vigilant. Imaginons qu'un attaquant tente d'effectuer un scan de ports pour trouver des vulnérabilités sur l'un de vos serveurs. Snort, en analysant les paquets, détecte immédiatement ce comportement suspect. Il génère alors une alerte détaillée qui est enregistrée dans un journal. Cette alerte fournit des informations essentielles :

    • L'adresse IP de l'attaquant.
    • Le type d'attaque identifié (par exemple, "Portscan").
    • Le port ciblé et le protocole utilisé.
    Ces informations cruciales permettent à un analyste de sécurité de prendre des mesures immédiates pour bloquer la menace et renforcer la défense du système.


  8. Avantages et Limites de Snort

    1. Avantages

    2. AvantageDescription
      Solution Open Source et GratuiteAucun coût de licence, idéal pour les projets à budget limité.
      Flexibilité et PersonnalisationContrôle total sur les règles de détection pour cibler des menaces spécifiques.
      Large CommunautéAccès à des mises à jour régulières des règles de détection et à un support en ligne abondant.
      Légèreté et PerformancePeut être déployé sur des systèmes aux ressources limitées sans surcharger le réseau.
      Double FonctionnalitéPeut être configuré en tant qu'IDS pour alerter ou en IPS pour bloquer les menaces.


    3. Limites

    4. LimiteDescription
      Complexité de la configurationL'installation initiale et le paramétrage peuvent être complexes pour les débutants.
      Gestion des faux positifsUn mauvais paramétrage des règles peut générer de nombreuses fausses alertes, rendant la surveillance inefficace.
      Maintenance des règlesLa mise à jour manuelle des règles et la création de règles personnalisées peuvent être chronophages et nécessitent une attention constante.
      Analyse du trafic chiffréNe peut pas analyser directement le trafic chiffré (HTTPS), ce qui limite sa visibilité face à des attaques qui utilisent le chiffrement.
      ÉvolutivitéPeut rencontrer des difficultés à gérer un trafic très dense sur de très grands réseaux, nécessitant des configurations avancées ou des solutions plus robustes.


  9. Conclusion

  10. Snort est un allié précieux pour tout analyste en cybersécurité. Il apporte une visibilité indispensable sur les menaces et permet de réagir de manière proactive pour protéger son système d'information. Son approche basée sur des règles et son statut open source en fait une solution puissante, flexible et accessible, malgré quelques défis initiaux.


  11. Illustration Vidéo

  12. Découvrez Snort en action dans cette courte vidéo qui montre la détection d'un scan de ports en temps réel.


  13. Voir aussi