SNORT (Système de détection d’intrusion)

(www.snort.org)

 ____________________________________________________

 

TABLE DES MATIERES :

1.     Présentation. 1

2.     Portabilité. 2

3.     Installation. 2

4.     Quelques commentaires sur Snort 2

a.     Avantages. 2

b.     Inconvénients. 2

5.     Modules adjacents. 2

a.     Une base de données MySQL.. 2

b.     TcpDump. 2

c.     SnarfSnort 2

 ____________________________________________________

 

1.     Présentation

Snort est un programme qui permet de détecter d’éventuelles intrusions sur le réseau où il est installé. Il se base sur des règles préenregistrées pour savoir à quel type de paquet s’intéresser et comment alors les interpréter, il peut en plus chercher des comptabilités entre des mots ou des bouts de phrases (c’est ce que l’on appelle généralement des signatures) pour se "souvenir"de certains types de requêtes qui sont plus courantes que d’autres. Il peut déclencher des avertissements en cas de débordement de mémoire tampon, de balayage de ports, de tentatives de flooding, etc. Snort est alors capable d’alerter en temps réel via des alertes envoyées au syslog (fichier d’alerte à part) ou à un ordinateur sous Windows par pop-up ; ou tout simplement de stocker ces alertes dans un fichier suivant la gravité de l’intrusion.

Snort peut être configuré en trois modes :

-     ./ snort -{d, e, v}: c’est le mode “straight packet sniffer” dans lequel Snort capture toutes les trames qui passent et les affiche à l’écran. Cependant ce mode est inutilisable dans le cas de grands trafics car non seulement il n’est plus possible de lire les paquets qui passent en supposant en plus que l’affichage à l’écran soit suffisamment rapide pour suivre le trafic, mais de plus on souhaite souvent pouvoir les enregistrer pour un traitement ultérieur et/ou pouvoir seulement capturer le trafic qui vient de certaines adresses, c’est ce que permet le mode ci-dessous.

-     ./ snort -{d, e, v} ./log : c’est le mode “packet logger”, utile pour le debbugage de réseau par exemple. Dans ce mode, on peut stocker dans un fichier de notre choix (log par défaut) pour une analyse ultérieure. On peut aussi filtrer le type de paquets auxquels on s’intéresse (ARP, ICMP,…) via un filtre BPF et se limiter à intercepter un trafic particulier.

-     ./ snort -{d, e, v} –l ./log –h 192.168.1.0/26 –c snort.conf : c’est le mode “full blown network intrusion detection system”, cas qui est le plus intéressant si on veut détecter des intrusions. Dans ce cas, il est possible de configurer Snort à notre guise, configuration qui se trouve dans snort.conf que nous aurons au préalable paramétré. Ce mode permet de plus de choisir parmi plusieurs modes d’alerte possibles :

1.      full : mode d’alerte par défaut. Il donne certaines informations, pas forcément parmi les plus intéressantes et/ou nécessaires pour comprendre l’intrusion

2.      fast :donne une alerte avec le minimum d’informations,  à savoir les adresses IP sources et destination, le niveau de gravité de l’alerte et les ports utilisés. C’est aussi le mode le plus courant et le plus utilisé quand on veut jeter un coup d’œil de temps à autre au fichier d’alertes.

3.      WinPopup (smb) : permet d’envoyer des messages de type Popup (le même genre de fenêtres qui s’ouvrent parfois à l’écran quand nous surfons sur Internet et qui sont souvent d’ailleurs de la publicité) à des stations de travail sous Windows au préalable spécifiées. Nécessite cependant d’avoir Samba. Mode peu utilisé à moins d’avoir une excellente configuration se Snort, car être envahi de fenêtres qui s’ouvrent sans prévenir pour de fausses alertes n’est pas toujours souhaitable.

4.      soket : cas particulier, envoie des alertes à une socket UNIX qu’un autre programme peut être en train d’épier. Mode peu utilisé.

5.      syslog : va stocker les alertes dans un fichier syslog crée pour cela.

6.      none : bah…n’émet aucune alerte! Mode peu utilisé vu son manque d’intérêt.

Snort se présente comme un fichier exécutable qui se décompose en une trentaine de fichiers qui sont soit des programmes en C, soit des fichiers de règles qui sont assez explicites comme "smtp.rules", "telnet.rules", "web-attacks.rules" ou encore "dns.rules". Chacun de ces fichiers peut être chargé avec nos propres règles, ce qui donne une très grande souplesse à Snort.

Parallèlement, Snort peut à la fois se comporter comme un IDS passif ou actif grâce à ses 5 types de règles :

-         alert : Snort génère une alerte comme il a été programmé pour, par exemple avec un pop-up ou en enregistrant l’alerte dans un fichier.

-         log : Snort ne fait qu’enregistrer le paquet dans un fichier spécifié.

-         pass : Snort ignore le paquet

-         dynamic: reste inactif tant qu’il n’aura pas été activé par une règle active, et dans ce cas, se comporte en mode "log".

-         activate : déclenche une alerte comme ci-dessus, et passe la main à une règle pour prendre une autre action complémentaire

De manière évidente, Snort sera dit appelé IDS passif dans les quatre premiers cas, et IDS actif dans le dernier où il ne se limite plus à de simples enregistrements. Par exemple en implémentant alors une réponse flexible (Flexresp), Snort pourra mettre fin à des connexions jugées dangereuses.

 

2.     Portabilité

Il peut être installé sous Linux, Windows 98/NT/2000, Solaris, …Il peut être installé sous Linux  et être administrable sur une machine Windows par une interface fournie sur le site, ou encore afficher les alertes sur une interface conviviale (SnortSnarf, voir ci-dessous) qui peut s’installer sous n’importe quel système d’exploitation. C’est ce qui rend cet IDS très intéressant. Tous les packages nécessaires sont en libre accès sur le site de Snort à la rubrique download.

 

3.     Installation

1.      Télécharger le logiciel dont la dernière version est normalement snort-1.8.3.tar.gz et est disponible à l’adresse www.snort.org.

2.      Puis "gunzip snort-1.8.3.tar.gz "

3.      Puis "tar –xt snort-1.8.3.tar.gz "

4.      Puis "ln –s snort-1.8.3.tar.gz "

5.      Puis "cd snort"

6.      Puis "make install"

On peut tester que le logiciel marche bien en le configurant en mode sniffer avec : ./snort –v. Dans ce cas, on risque d’avoir notre écran envahi par des trames défilant à toute allure, que l’on peut arrêter avec la commande "CTRL+C" ou "CTRL+Z" suivant les machines.

 

4.     Quelques commentaires sur Snort

a.      Avantages

-        Permet de vérifier le bon fonctionnement d’un firewall : en plaçant une sonde de chaque coté, on peut comparer le trafic entrant avec le trafic sortant.

-        Extrêmement maniable

-        Gratuit !

-        On peut disposer aussi bien de son code source que de ses packages déjà compilés.

-        Les alertes peuvent être lues à l’écran, envoyées dans un fichier, envoyées en messages Popup, être stockées dans une base de données MySql, …au choix !

-        Il vient déjà avec des règles minimales, on peut ainsi avoir des exemples de règles concrètes.

 

b.      Inconvénients

-       Souvent vulnérable par rapport à des attaques de Denial of Service.

-       SNORT a plus tendance que d’autres IDS à fournir des fausses alertes (en moyenne, 70% des alertes remontées sont fausses), par exemple à cause de petites signatures comme phf qui déclenchent une alerte alors que cela peut être une simple requête contenant les mots "dhfudge" ou "muphf".

-       Ne peut pas traiter les flux cryptés car la signature de ces attaques dépend évidemment du type de cryptage et aussi évidemment de la clé employée (c’est une des raisons). Mais de toute manière, à ma connaissance, aucun IDS ne sait traiter des flux cryptés.

-       Un IDS fonctionne en mode binaire : il traduit toute requête comme une intrusion ou comme une trame "permise". Il n’existe pas d’intermédiaire entre les deux. Tout ce qui est possible, est de donner un degré d’importance à ces alertes

Figure 1 : Le degré de gravité des attaques, de 14 à 11.

-       Par contre, les vrais attaques menées par exemple sur cgi-bin, ne sont pas toujours détectées…

       

5.     Modules adjacents

a.      Une base de données MySQL

Comme nous l’avosn dit, il est possible de stocker les alertes dans une base de données MySql pour un traitement ultérieur.

 

b.      SnarfSnort

C’est l’interface graphique de Snort. Elle tourne sous touts les systèmes d’exploitation