vendredi 14 juillet 2017

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.

A très bientôt !!!  

2 commentaires :