SNORT (Système
de détection d’intrusion)
____________________________________________________
TABLE DES MATIERES :
4. Quelques
commentaires sur Snort
____________________________________________________
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.
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.
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.
-
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.
-
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…
Comme nous l’avosn dit, il est possible de stocker
les alertes dans une base de données MySql pour un traitement ultérieur.
C’est l’interface graphique de Snort. Elle tourne
sous touts les systèmes d’exploitation