Vous êtes sur la page 1sur 46

COMMENT METTRE EN PLACE UN SYSTEME DE DETECTION D'INTRUSION

(IDS) AVEC SYSTEME DE NOTIFICATION VIA EMAIL GRACE A SNORT ET


SWATCH

Bonjour,

Aujourd’hui, je vais vous montrer comment installer et configurer un système de


détection d’intrusion au sein d’un réseau informatique avec le logiciel Snort et comment
grâce au logiciel Swatch mettre en place un système de notification par email pour
informer une personne donnée en occurrence un administrateur lorsqu’une potentielle
attaque surviendrait sur le réseau. Mais tout d’abord,

Qu’est-ce qu’un  Système de Détection d’Intrusion ?

Un Système de Détection d’Intrusion ou IDS (Intrusion Detection System) est un


mécanisme destiné à repérer des activités supposées anormales ou suspectes sur un
ensemble d’équipements (un réseau) ou en particulier sur un équipement analysé bien
précis (un hôte). Un IDS permet ainsi de prendre connaissance sur les tentatives
réussies, tout comme échouées des éventuelles attaques ou intrusions qui surviennent
au sein d’un réseau ou sur une machine donnée.  
Les IDS sont d’une grande importance dans la nécessité de la sécurisation optimisée
d’une entreprise par exemple ou dans la mise en place d’une politique de sécurité.

On peut classer les IDS en trois grandes familles distinctes :

 Les NIDS (Network Intrusion Detection System), dont le but est de surveiller l’état
de la sécurité au niveau d’un réseau. C’est le cas de Snort ou encore de Suricata;

 Les HIDS (Host Intrusion Detection System), qui surveillent l’état de la sécurité au
niveau des hôtes. C’est le cas de DarkSpy et Tripwire par exemple ; et enfin,

 Les IDS hybrides, qui utilisent les NIDS et HIDS pour avoir des alertes plus
pertinentes. Prelude en est un exemple.
A présent intéressons nous à l’IDS Snort :

Qu’est-ce que Snort ?

Snort est un sytème de détection d’intrusion open source de type NIDS, qui est capable
d’effectuer en temps réel des analyses de trafic et peut également être utilisé pour
détecter une grande variété d’attaques au sein d’un réseau informatique donné. Il est
aussi important de savoir que Snort avec la collaboration d’autres outils donne la
possibilité via des emails ou SMS par exemple de pouvoir notifier un individu sur l’état
du réseau en cas de tentative d’intrusion, ou encore avec un outil comme BASE, de
pouvoir obtenir une représentation graphique des données concernant des éventuelles
intrusions. 

Snort est l’un des plus actifs NIDS open source et possède une communauté
importante contribuant à son succès.

(Ps: il faut également savoir qu’il existe une version améliorée de Snort, il s’agit de
Snort Inline qui quant à lui joue également le rôle de système de prévention d’Intrusion
ou IPS c’est-à-dire en plus de détecter les intrusions éventuelles met en place un
mécanisme de défense qui consiste à effectuer certaines actions lorsqu’une intrusion
est détectée, comme par exemple bloquer automatiquement les ports pour mettre fin à
une attaque)
Maintenant que vous en savez un peu plus sur les IDS et en particulier Snort, nous
allons entrer dans le vif du sujet et passer à la mise en place d’un système de détection
d’intrusion au sein d’un réseau avec le logiciel Snort et par la suite mettre en place un
système de  notifications via emails. 

Intéressons-nous par exemple au cas de figure suivant :

L’objectif recherché ici est de mettre en place un IDS qui aura pour fonction en cas de
tentative d’intrusion ou d’éventuelle attaque du réseau par un Hacker, d’alerter
l’administrateur du système en lui envoyant un email qu’il pourra recevoir depuis son
Smartphone ou son ordinateur enfin que ce dernier puisse mettre en œuvre les
mesures adéquates dans le but de répondre convenablement à l’attaque. 

Installation et Configuration de l’IDS Snort

(Ps: nous allons installer et configurer Snort sur un serveur GNU/Linux en occurrence
ici Ubuntu)

Pour ce faire, nous devons tout d’abord installer le paquet Snort avec la


commande « apt-get install snort »,
Une fois l’installation de Snort terminé, nous entrons la commande « dpkg-reconfigure
snort » pour  pouvoir procéder à la configuration de Snort 
Après avoir validé la commande précédente, la première fenêtre de configuration de
Snort apparait. Celle-ci nous invite à choisir le mode de lancement de Snort, nous
choisissons l’option « Au démarrage » puis nous cliquons sur « OK »

 
Ensuite, nous devons indiquer l’interface « d’écoute » que Snort va utiliser pour
analyser le trafic de notre réseau ;
Dans notre cas, nous allons entrer « eth0 »
Puis, nous devons indiquer la plage d’adresse du réseau qui sera pris en compte par
Snort. Dans notre cas, notre réseau est 192.168.43.0/24 
Après, nous sommes invités à activer ou pas le mode promiscuité. L’activation ou non
du mode promiscuité a pour conséquence respectivement de permettre à notre serveur
Snort de pouvoir vérifier tous les paquets transitant au sein du réseau même ceux qui
ne lui sont pas directement adressés ou alors dans l’autre cas, de ne permettre que le
serveur Snort n’ait la possibilité que d’analyser les paquets qui lui sont directement
adressés. Pour que nous soyons informés en cas d’attaque sur l’une des machines qui
constitue notre réseau, il est primordial de laisser activer le mode promiscuité 
Par la suite, nous ai présenté une fenêtre qui nous donne la possibilité d’entrer des
configurations personnelles supplémentaires ; nous pouvons laisser ce champ vide et
cliquer directement sur « OK »
 
Ensuite, nous activons la fonctionnalité permettant à Snort de nous envoyer de manière
quotidienne (tous les jours et à une heure fixe) des rapports de journaux d’évènements
survenus sur le réseau à une adresse mail précise
Puis, nous entrons l’adresse mail où sera envoyer les rapports quotidiens en question   
Enfin, nous devons indiquer à Snort le nombre d’occurrences minimal d’un évènement
donné (une alerte) pour que ce dernier soit comptabilisé dans les statistiques du
rapport quotidien 
Nous venons ainsi d’achever la configuration de notre serveur Snort, il ne nous reste
plus qu’à rendre cette configuration effective en entrant la commande « service snort
restart » pour redémarrer le service Snort et lui permettre de mettre à jour les nouveaux
paramètres qui lui ont été indiqués. 
A présent, notre IDS est en place et prêt à analyser le trafic au sein de notre réseau.
Snort à recours a un ensemble de « règles » pour pouvoir effectuer les analyses sur le
réseau informatique. Snort est fourni avec un certain nombre de règles de base situées
par défaut dans le répertoire « /etc/snort/rules ». Ces règles sont écrites
par Sourcefire et la large communauté autour de Snort.

Par exemple si nous souhaitons que l’administrateur soit averti lorsqu’un hôte sur le
réseau se rend sur des réseaux sociaux, si par exemple, la politique en place dans
l’entreprise serait de limiter l’accès aux réseaux sociaux peut-être dans le but
d’améliorer les performances du personnel 😁, pour répondre à ce besoin, nous devons
créer un fichier de règles personnalisées propre à cette situation. Conventionnellement,
les fichiers de règles Snort ont une extension « .rules », ainsi, nous créons un fichier
que nous appelons restriction_sites.rules par exemple

  
Puis nous l’éditons comme suit :
Comme vous pouvez le constater un fichier de règles contient un ensemble de lignes
dont la structure est généralement la suivante :

« #1[alert | log | pass | activate | dynamic | drop | reject | sdrop ]  #2[protocole{IP | TCP |
UDP | ICMP}] #3[Adresse_Reseau_Source] #4[Port_Source] #5[Direction{à|<>}
#6[Adresse_Reseau_Destination] #7[Port_Destination] (#8[Options {flags ; msg ;
content ; sid ; rev ; depth ; … ; priority}] )»

En général, nous avons en  #1 l’action a effectuer si la règle correspond à un


évènement donné, puis en #2 est indiqué le protocole, en #3 l’adresse IP d’un hôte ou
l’adresse du réseau  de la source, ensuite en #4 le port de communication de la
source ;  après  vient en #5 la direction indiqué par une flèche : généralement, il s’agit
de la flèche droite (à) cela signifie que la source du trafic est à gauche et que la
destination est à droite, mais il existe également une flèche bidirectionnelle (<>)
permettant d’écrire deux règles  à la fois dans lesquelles la source et la destination sont
interverties. Puis en #6 et #7 sont indiqués respectivement l’adresse IP d’un hôte ou
l’adresse réseau et le port de la destination et enfin en #8 sont indiqués les options.
Comme différentes options que nous pouvons indiquer, nous avons :

 msg : pour afficher un message d’alerte ;

 logto : pour enregistrer le paquet dans un fichier spécifique ;

 content : pour chercher un mot spécifique ou mot clé ;


 sid : pour identifier une règle en particulier ; …     

Une fois notre fichier édité, nous le sauvegardons et le copions vers le dossier par
défaut qui contient les règles de base utile à Snort pour analyser le trafic au sein du
réseau

Pour que les règles de notre fichier nouvellement créé soit prise en compte par Snort, il
est primordial de modifier le fichier snort.conf qui contient en plus de la configuration
intégrale de notre serveur, toutes les destinations des fichiers de règles dont Snort à
besoin pour mener à bien sa tâche

Ainsi, nous devons ajouter au niveau de la section « include » du fichier snort.conf la


ligne suivante pour indiquer à Snort de prendre en considération nos nouvelles règles  
Il ne nous reste plus qu’a lancer la commande d’analyse de Snort en temps réel des
différents paquets transitant dans le réseau et de spécifier le mode de sortie d’affichage
des messages d’alertes, par exemple avec la commande suivante, on indique que les
messages soient directement affichés sur le terminal : 
Après avoir validé la commande précédente, Snort démarre et est prêt à analyser les
échanges au sein du réseau et en plus, il affichera les différents rapports des échanges
survenus directement sur le terminal (console)
Pour rappel, notre fichier restrition_sites.rules créé précédemment ne prend en
considération que certains réseaux sociaux en occurrence dans notre cas ici, Facebook
et Twitter, et avertira via une alerte affichée sur la console l’administrateur si l’un des
hôtes du réseau s’y rend.  
Maintenant testons que notre IDS analyse  bel et bien le trafic et nous envoie via la
console des alertes au cas où un utilisateur au sein du réseau se rend sur les réseaux
sociaux concernés. Ainsi lorsqu’un utilisateur se rend sur Facebook par exemple,

Nous obtiendrons au niveau de la console les messages suivant :

Indiquant le type d’alerte, le message de l’évènement survenu, l’adresse IP, et même le


port de l’hôte qui a ouvert la page. De même lorsqu’un utilisateur se rend sur Twitter,

Nous obtenons également des messages d’alertes nous avertissant de cela.


Notre IDS analyse bien le trafic et nous informe lorsqu’un évènement enregistré dans
ses divers fichiers de règles survient.  

A présent, nous allons créer un nouveau fichier de règles appelé mynmap.rules qui
cette fois-ci va permettre à notre IDS de détecter des scans de réseau effectuer avec
NMAP qui peuvent souvent découler sur la récolte d’informations telles que les
adresses IP des hôtes les systèmes d’exploitation qui y tournent, les services actifs au
sein du réseau, les ports ouverts, …ces informations sont souvent très utiles à un
hacker pour qu’il puisse lancer son attaque sur une ou plusieurs cibles en particulier.

Puis nous éditons notre fichier avec les règles suivantes (le fichier avec les règles au
complet est disponible ici) :
Et comme précédemment pour que Snort prenne en compte nos nouvelles règles, il
faut modifier le fichier snort.conf et faire mention de notre fichier dans la
zone « include »,
(Ps: il existe déjà certaines règles dans les fichiers scan.rules et snmp.rules présent
dans le répertoire /etc/snort/rules qui permettent également de détecter certains scans
réseau)

Ainsi, une fois que nous avons modifié et enregistré le fichier snort.conf, toujours
depuis la console lorsqu’un Hacker essai par exemple d’obtenir des informations sur
notre réseau avec par exemple la commande « nmap adresse_reseau/masque », 
Snort nous renvoie des messages d’alertes précisant qu’un scan avec le logiciel NMAP
est en train d’être effectué au sein du réseau. De même si le Hacker se contente
d’utiliser toujours NMAP, mais cette fois-ci pour scanner un hôte en particulier,

L’IDS nous alerte également en précisant cette fois-ci que le scan NMAP est effectué
mais appliqué sur un hôte en particulier, nous obtenons aussi l’adresse IP du Hacker
ainsi que l’adresse IP de la machine qui subit l’attaque. Exactement comme nous
l’avons définit dans notre fichier mynmap.rules. 

Notre IDS est donc parfaitement fonctionnel, il analyse le trafic et nous alerte lorsque
survient des activités jugées dangereuses au sein du réseau. Pour le moment, les
alertes envoyées par Snort ne sont consultables par l’administrateur que soit au niveau
de la console, soit au niveau des fichiers de journalisation de Snort (les logs) ce qui
implique pour l’administrateur d’observer en permanence, soit la console soit les
fichiers journaux pour détecter des potentielles intrusions au sein du réseau. Pour
permettre une supervision optimale, il est nécessaire de mettre en place un système de
notification soit par SMS ou alors dans notre cas ici par email pour notifier
l’administrateur à chaque fois qu’une alerte jugée importante (généralement signé par
l’option priority :1 dans les règles Snort) survient. Pour ce faire, nous devons coupler
notre IDS avec un autre outil en occurrence ici dans notre cas Swatch. Ce que nous
allons faire par la suite, mais tout d’abord, 

Qu’est-ce que Swatch ?

Swatch est un parseur de logs, qui va permettre au serveur d’envoyer des mails
d’alertes dès qu’une alerte de haute priorité sera détectée dans les fichiers journaux de
Snort. 
(Ps: pour le bon fonctionnement de Swatch, il est souvent nécessaire d’installer le
paquet Postfix ou dovecot qui sont des serveurs de messagerie électronique, si le
serveur ne les possède pas encore nous ajoutons soit l’un ou les deux avec les
commandes « apt-get install postfix » ou « apt-get install dovecot-imapd », et « apt-get
install dovecot-pop3d ») 

A présent passons à la mise en place de Swatch au sein de notre réseau.

Installation et Configuration de Swatch

Pour débuter notre installation, nous pouvons créer un dossier que l’on nommera
swatch,

Puis se rendre à cette adresse, sur le site de sourceforge pour télécharger Swatch.

Une fois le téléchargement terminé, nous copions le nouveau fichier (swatchdog-


3.2.4.tar.gz) dans le dossier que nous avons créé précédemment, puis nous
décompressons le fichier avec la commande « tar –xzf swatchdog-3.2.4.tar.gz »
Ensuite, nous entrons dans le dossier décompressé et nous exécutons la
commande « perl Makefile.PL », à la suite de l’exécution de cette commande, nous
obtenons quelques erreurs (précédé du mot « warning »)    
Ceci est dû au fait qu’il manque ces librairies perl sur notre serveur. Pour corriger ces
erreurs, il faut se rendre sur le site search.cpan.org
Et rechercher une à une chacune des librairies signalées manquante et les
télécharger ; par exemple pour la première Date ::Calc,
Puis on la télécharge.

Une fois la librairie Date::Calc téléchargé, on s’y prend un peu comme précédemment
et en essayant d’exécuter la librairie, nous obtenons une fois de plus des erreurs : 
Tout simplement parce que presque chacune des librairies précédemment signalées
manquante ont besoin de la présence sur le serveur d’autres librairies également en
d’autres termes ces librairies dépendent d’autres librairies pour pouvoir s’installer et
Swatch pour pouvoir s’installer à son tour a besoin de toutes ces librairies.

En général « l’architecture » des dépendances peut se traduire ainsi :


(Ps: du moins sur la majorité des systèmes où j’ai eu à installer Swatch ces
dépendances apparaissaient le plus fréquemment de cette manière, sur d’autres
systèmes, on peut observer une de plus ou moins encore)  

Ainsi, une fois qu’on a téléchargé toutes les librairies perl dont on a besoin et après les
avoir décompressé

Il faut les installer dans cet ordre précis :


En exécutant pour chaque librairie, l’ensemble des commandes suivantes :

    (1)  perl Makefile.PL


    (2)  make
    (3)  make test
    (4)  make install
    (5)  make realclean

Et enfin, nous pouvons nous rendre dans Swatch et l’installer sans aucun souci, en
commençant tout d’abord avec la commande « perl Makefile.PL » ;
Nous poursuivons avec la commande « make » ;

Puis, avec « make test » ;


Ensuite, avec la commande « make install » ;
Et enfin, avec la commande « make realclean ».

Maintenant que notre outil Swatch est bien installé. Nous allons à présent créer un petit
fichier de configuration nommé .swatchrc,

Qui est une sorte de script pour demander un certain nombre d’actions à réaliser à
Swatch en occurrence l’envoie automatique par email en cas de détection d’une alerte
prioritaire.    
Notre fichier .swatchrc est organisé comme suit :
watchfor /Priority\ : 1/ on demande à Swatch de surveiller les alertes de priorité 1,
mail addresses=admin\@jacquesgoueth.com on indique l’adresse email de
l’administrateur qui va recevoir le mail,
exec="echo SNORT ALERTE: PRIORITE 1" ce message sera affiché au niveau de la
console à chaque fois que Swatch trouvera dans les logs une alerte prioritaire,
throttle 00:00:10 permet de limiter le nombre de fois où un évènement doit apparaitre
dans  les fichiers journaux enfin de déclencher une alerte. 

Ainsi, à chaque fois que Snort va détecter une alerte de priorité 1, Swatch qui scrute les
fichiers logs de Snort en temps réel va prendre connaissance de l’alerte et l’envoyer par
mail à l’administrateur.

On relance Snort en lui demandant cette fois-ci d’inscrire non plus les alertes
directement au niveau de la console, mais plutôt de les inscrire dans un fichier journal
(log)
On démarre également Swatch avec la commande « swatchdog –c .swatchrc –t
/var/log/snort/alert » 

A présent, notre système est opérationnel : l’IDS Snort va détecter les éventuelles
intrusions et Swatch va alerter via email l’administrateur du réseau le cas échéant.

Ainsi lorsqu’un Hacker déclenche un scan sur le réseau,


Swatch détecte dans le fichier log de Snort qu’il y a une intrusion de priorité 1 au sein
du réseau,

Et va envoyer tel qu’on la définit dans le fichier de configuration .swatchrc un email à


l’administrateur qu’il pourra consulter depuis le navigateur internet de son ordinateur ou
depuis son Smartphone
A présent, vous savez comment mettre en place un IDS en occurrence Snort au sein
d’un réseau informatique, de même comment le configurer, écrire des règles
personnalisées pour répondre à une situation précise  et surtout comment être notifié
via email grâce à l’outil Swatch en cas d’intrusion sur le réseau.

Merci d’avoir suivi le tutoriel jusqu’à la fin.

Vous aimerez peut-être aussi