Nous vous proposons dans ce tutoriel de mettre en œuvre le fameux NIDS Snort. 

Snort est un système de détection d'intrusion (ou NIDS) libre publié sous licence GNU GPL. Il appartient actuellement à Sourcefire (récemment racheté par Cisco). Snort est l'un des plus actifs NIDS Open Source et possède une communauté importante qui a largement contribuée à son succès.

Snort est disponible sous forme de package au sein du logiciel pfSense®. Il s'installe en un click et dispose d'une fenêtre autonome située dans Services >> Snort. 

Qu'est-ce que Snort et comment cela fonctionne ? 

Snort analyse en temps réel les paquets qui circulent sur une ou plusieurs interfaces de votre firewall (couche application et transport du modèle TCP/IP). L'analyse permet de détecter les anomalies au sein des paquets (paquets trafiqués = forged packets) ou de repérer les signatures typiques d'un très grand nombre d'attaques réseau connues. 

Le blocage des paquets est majoritairement effectué à partir d'une analyse de la signature des paquets (payload). 

Snort détecte donc une grande variété d'attaques comme des dépassements de buffers, scans, attaques sur des CGI, sondes SMB, essai d'OS fingerprintings… 

Snort permet une normalisation des principaux protocoles mis en œuvre dans les réseaux IP (TCP, UDP, ICMP), ainsi que des protocoles les plus courants (SMTP, POP, IMAP, HTTP, SSL, …). 

Snort utilise des règles pour effectuer ses analyses. Celles-ci sont écrites par Sourcefire ou bien fournies par la communauté. Snort dispose d'un jeu de règles de base qui doit être mis à jour régulièrement afin de d'être réellement utile. 

Snort peut également être utilisé avec d'autres projets open source tels que SnortSnarf, ACID, sguil et BASE (qui utilise ACID) afin de fournir une représentation visuelle des données et des intrusions ayant eu lieu sur votre réseau. Ces modules ne sont pas nativement compatibles avec la version Snort pfSense® proposée. 

 

Comment installer Snort ?

Allez dans System > Package > Available Packages

Choisir le package Snort dans la liste et l'installer

 

Configuration initiale de Snort et mise à jour

Il est nécessaire de télécharger un jeu de règles afin de pouvoir ensuite les appliquer au filtrage de votre contenu. Vous disposez de plusieurs jeux de règles qui sont soit payants, soit gratuits. 

Services > Snort > Global Settings

Pour des règles payantes : cocher "Install Snort VRT Rules" et insérer le code Oinkmaster 
Si vous n'avez pas de code, enregistrez-vous sur le site Snort ici : https://www.snort.org/users/sign_up

Il est recommandé, même si vous ne souhaitez pas acheter des règles payantes, de disposer d'un compte et d'un code Oinkmaster. Après l'ajout du code Oinkmaster, vous devez mettre à jour les règles VRT. 

Vous pouvez aussi décider d'installer d'autres jeux de règles (Snort Community et Emerging Threat), ces jeux de règles sont moins stables que les règles fournies par Snort et produisent beaucoup plus de faux positifs. Il faut bien prendre soin, dans un premier temps, de ne pas bloquer les trames identifiées par le filtre. 

 

Cliquer sur "Update" pour mettre à jour vos règles :

Services > Snort > Updates

Les règles vont se mettre automatiquement à jour et un message vous indiquera que l'opération est terminée. Vous pouvez vérifier cela dans la fenêtre "Updates" 

 

Configuration de l'interface

Afin de pouvoir utiliser vos règles, il est nécessaire de les appliquer sur une interface de votre firewall. Il s'agit assez souvent de l'interface WAN, mais certaines règles peuvent aussi s'appliquer à d'autres interfaces (LAN, DMZ, …). 

Dans le cadre du déploiement dans un DataCenter, vous préférerez déployer cela sur le WAN car les attaques doivent être contrées au niveau du WAN. Pour empêcher vos utilisateurs d'utiliser des protocoles non souhaités, il est préférable de déployer cela sur le LAN. 

Snort > Snort Interfaces

Ajouter une nouvelle interface à l'aide du bouton "+".
Choisir l'interface WAN ou LAN dans "Iface Settings" suivant vos besoins. 

Les interfaces Snort disposent de très nombreuses options que vous allez bientôt découvrir. 

Par défaut ne modifiez que ce qui est nécessaire. Certaines règles étant liées à la façon dont une interface est configurée, la modification de paramètres au niveau des interfaces peut conduire à un blocage du démarrage de votre serveur (ayez cela en tête lors des phases de débug). 

Lors d’une première application d’un nouveau jeu de règles, prenez soin de désactiver l’option figurant ci-dessous « Block Offenders ». Cela aura pour effet de passer votre serveur en mode filtrage, mais sans blocage des alertes

 

Activation des règles dans Snort :

Vous disposez de nombreux jeux de règles qui peuvent s’appliquer  à partir d’un simple click. 
Rendez-vous dans la section « WAN Categories » et activez les jeux de règles qui vous semblent le plus opportun pour votre cas de figure. 

Une fois les règles activées, vous pourrez simplement y accéder et les configurer de façon plus fines à partir de l’onglet « WAN Rules » situé à droite de « WAN Categroies ». Chaque catégorie dispose de ses propres règles qui sont activées ou désactivées par défaut. 

Prenez le temps de bien analyser vos besoins et repassez sur chaque catégorie pour bien valider les règles que vous avez activées. 

Par exemple : rien ne sert d’activer des règles pour IIS si vous ne disposez que de serveurs Apache,… 

Les catégories peuvent contenir plusieurs centaines de règles. Les règles sont activées ou désactivées suivant des réglages établis par défaut et qu’il convient souvent de modifier. 

L’onglet WAN Rules vous permet de configurer (activer / désactiver / modifier) chaque règle contenue à l’intérieur d’une catégorie. L’accès aux règles d’une catégorie se fait par l’intermédiaire du pop-up « Category » qui est présent sur la page.

Les règles sont identifiées par leur SID (numéro unique). Elles utilisent souvent des alias définis sous forme de $NOM_DE_L_ALIAS - ces derniers peuvent et doivent être configurés dans la section « WAN Variables » de Snort. 

Par défaut certains Alias sont déjà configurés, les autres doivent être créés sous forme d'alias à partir de la section "Firewall > Alias" de pfSense. 

L’onglet « WAN Preprocs » permet de régler des paramètres relatifs à l’analyse des trames. Il permet notamment d’assurer une normalisation des paquets selon un certain nombre de protocoles définis (HTTP, FTP, Telnet, IMAP, …) ou une normalisation au niveau des protocoles IP (TCP, UDP, ICMP). 

Attention : l’activation ou la désactivation des règles de pré-processing peut entrainer des blocages de Snort au démarrage. Certaines règles ayant besoin de certaine fonction de pré-processing pour fonctionner. Veillez donc à conserver une cohérence entre vos règles et les pré-process activés. 

Vous devriez maintenant être en mesure de démarrer votre IDS Snort. Pour cela rendez-vous sur la page « Snort Interfaces » et démarrez cette interface en cliquant sur la croix rouge. Votre NIDS devrait démarrer sans problème. Si ce n’est pas le cas reportez-vous à la section « Logs » décrite ci-dessous pour une analyse plus approfondie du problème rencontré. 

La section « Log » permet d’avoir un aperçu des logs du module Snort. Ces logs peuvent aussi être renvoyés vers le système de log par défaut du firewall. 

 

Analyse des paquets bloqués 

Il est maintenant possible de regarder ce que votre IDS à bloqué. Pour ce faire, rendez-vous sur la page « Alerts » qui présente une liste des alertes interceptées par votre NIDS. 

Une fois la vérification de l’absence de faux positifs, vous pouvez activer le mode bloquant dans l’interface Snort Interfaces > WAN Settings.

Conclusion 

Nous avons vu dans cet article comment activer et configurer un serveur Snort à partir de l’interface mise à votre disposition sous le logiciel pfSense®
Vous devriez donc être en mesure d’utiliser un NIDS de façon efficace pour contrer de nombreuses attaques issues d’Internet. 

L’analyse de la signature des paquets n’est pas l’arme ultime car il est toujours possible de forger des paquets et de contrer ce type de contrôle. Cependant la mise en œuvre de ce type d’attaque avec une modification du payload des paquets est réservée à une petite élite d’un très haut niveau… 
 

Dans un prochain article nous verrons comment mettre en œuvre OpenAppID, une fonction nouvelle de Snort qui permet de bloquer plus de 2700 protocols applicatifs (y compris : Twitter, Facebook, Apple iTunes, Gmail, …).