Rapport Pfe Nids

42
ISET NABEUL – Département informatique Informatique réseaux Projet de fin d’études 1 Introduction générale Le présent rapport contient une description détaillée du processus de réalisation de nôtre projet de fin d’étude qui consiste à développer une application permettant la détection des intrusions dans un réseau. En fait nôtre rapport a été structuré en trois chapitres. Le premier chapitre intitulé Etat de l’art qui comporte une description détaillé de la future application réalisée ainsi que son cadre. Nous avons réservé le second chapitre pour détailler l’étude conceptuelle. Dans le troisième chapitre nous avons donné une présentation assez détaillée des modules réalisés dans le cadre de notre projet.

description

PFE: NIDS (Système de détection d'intrusions réseau).

Transcript of Rapport Pfe Nids

Page 1: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 1

Introduction générale

Le présent rapport contient une description détaillée du processus de réalisation de nôtre projet de fin d’étude qui consiste à développer une application permettant la détection des intrusions dans un réseau.

En fait nôtre rapport a été structuré en trois chapitres.

Le premier chapitre intitulé Etat de l’art qui comporte une description détaillé de la future application réalisée ainsi que son cadre.

Nous avons réservé le second chapitre pour détailler l’étude conceptuelle.

Dans le troisième chapitre nous avons donné une présentation assez détaillée des modules réalisés dans le cadre de notre projet.

Page 2: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 2

Chapitre 1

Etat de l’art

Page 3: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 3

I. Problématique

Les systèmes d’information sont aujourd’hui de plus en plus ouverts sur Internet. Cette ouverture, a priori bénéfique, pose néanmoins un problème majeur : il en découle un nombre croissant d’attaques. La mise en place d’une politique de sécurité autour de ces systèmes est donc primordiale.

Outre la mise en place de pare-feux et de systèmes d’authentification de plus en plus sécurisés, il est nécessaire, pour compléter cette politique de sécurité, d’avoir des outils de surveillance pour auditer le système d’information et détecter d’éventuelles intrusions.

En effet de plus en plus d’entreprises subissent des attaques qui peuvent entraîner des pertes conséquentes. Le besoin des entreprises en sécurité informatique est de plus en plus important, et un élément essentiel d’une bonne politique de sécurité est l’utilisation d’un système de détection d’intrusion.

Afin de détecter les attaques que peut subir un système, il est nécessaire d’avoir un logiciel spécialisé dont le rôle serait de surveiller les données qui transitent sur ce système, et qui serait capable de réagir si des données semblent suspectent. Plus communément appelé IDS (Intrusion Detection Systems), les systèmes de détection d’intrusions conviennent parfaitement pour réaliser cette tâche.

Page 4: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 4

II. Présentation du projet

Notre projet intitulé « Développement d’une solution de détection d’intrusion » consiste à détecter toute tentative d’attaque réseau grâce à un système de détection d’intrusion.

Notre future application permettra de :

Analyser les paquets qui transitent dans le réseau Envoyer un SMS à l’administrateur pour notifier une intrusion Journaliser les attaques Notifier les alertes dans une console de management

En fait notre application peut tourner sous trois modes :

1) Renifleur réseau (Sniffer)

Dans ce mode, notre application lit les paquets circulant sur le réseau et les affiches d’une façon continue sur l’écran.

2) Packet Logger

Dans ce mode, notre application enregistre les paquets capturés sur le réseau dans des fichiers organisés par type de protocole.

3) Détecteur d’intrusion

Dans ce mode, l’IDS analyse le trafic réseau, compare ce trafic avec des signatures d’attaques défini dans une base de données.

Lors de détection d’une intrusion, l’administrateur sera notifié par SMS et par la console de management au même temps.

Page 5: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 5

III. Cadre du projet

Le sujet qui nous a été proposé consiste à développer un système de détection d’intrusion réseau, au profil de l’agence nationale de sécurité informatique (ANSI), qui est lancé en 1990 comme "Unité de gestion par Objectifs pour la réalisation du développement de la sécurité informatique" au sein du secrétariat d'état en informatique, dont le rôle était de suivre de prés les derniers développements en matière de sécurité Informatique et de veiller à l'amélioration de la sécurité des applications et infrastructures nationales critiques et qui a été crée ensuite comme une entreprise publique à caractère non administratif dotée de la personnalité morale et de l’autonomie financière qui a pour objectif d’effectuer un contrôle générale des systèmes informatiques et des réseaux relevant des divers organismes publics et privés.

L'agence effectue un contrôle général des systèmes informatiques et des réseaux relevant des divers organismes publics et privés, elle est chargée des missions suivantes:

Veiller à l'exécution des orientations nationales et de la stratégie générale en matière de sécurité des systèmes informatiques et des réseaux

Suivre l'exécution des plans et des programmes relatifs à la sécurité informatique dans le secteur public à l'exception des applications particulières à la défense et à la sécurité nationale et assurer la coordination entre les intervenants dans ce domaine

Assurer la veille technologique dans le domaine de la sécurité informatique

Etablir des normes spécifiques à la sécurité informatique et élaborer des guides techniques en l'objet et procéder à leur publication

Veiller à l'exécution des réglementations relatives à l'obligation de l'audit périodique de la sécurité des systèmes informatiques et des réseaux

Page 6: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 6

IV. Etude théorique

a) Les différents types d’attaques

L’informatique étant un domaine très vaste, le nombre de vulnérabilités présentes sur un système peut donc être important. Ainsi, les attaques visant ces failles peuvent être à la fois très variées et très dangereuses.

1) Les attaques réseaux

Ce type d’attaque se base principalement sur des failles liées aux protocoles ou à leur implémentation.

i. Les techniques de scan

Les scans de ports ne sont pas des attaques à proprement parler. Le but des scans est de déterminer quels sont les ports ouverts, et donc en déduire les services qui sont exécutés sur la machine cible.

ii. IP Spoofing

Le but est de se faire passer pour une autre machine en truquant les paquets IP. Cette technique peut être utile dans le cas d’authentifications basées sur adresse IP.

iii. ARP Spoofing

Cette technique permet de rediriger le trafic d’une machine vers une autre. Grâce à cette redirection, une personne mal intentionnée peut se faire passer pour une autre. De plus, le pirate peut rerouter les paquets qu’il reçoit vers le véritable destinataire, ainsi l’utilisateur usurpé ne rendra compte de rien.

iv. DNS Spoofing

Le but de cette attaque est de fournir de fausses réponses aux requêtes DNS, c'est-à-dire indiquer une fausse adresse IP pour un nom de domaine.

v. Fragments attacks

Cette technique permet de passer outre les protections des équipements de filtrage IP.

Page 7: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 7

vi. TCP Session Hijacking

Le but de cette attaque est de rediriger un flux TCP afin de pouvoir outre passer une protection par mot de passe.

2) Les attaques applicatives

Les attaques applicatives se basent sur des failles dans les programmes utilisés, ou encore des erreurs de configuration.

i. Les problèmes de configuration

Il est rare que les administrateurs réseaux configurent correctement un programme, ils se contentent d’utiliser les configurations par défaut. Celles-ci sont souvent non sécurisées afin de faciliter l’exploitation du logiciel.

ii. Les bugs

Liés à un problème dans le code source, ils peuvent amener à l’exploitation de failles. On ne peut rien faire contre ce type de problèmes, si ce n’est attendre un correctif de la part du développeur.

iii. Les buffer overflows

Issus d’une erreur de programmation, ils permettent l’exploitation d’un shellcode à distance. Ce dernier permettra à une personne mal intentionnée d’exécuter des commandes sur le système distant, pouvant aller jusqu’à sa destruction.

iv. Les scripts

Ils s’exécutent sur un serveur et renvoie un résultat au client.

v. Les injections SQL

Le but des injections SQL est d’injecter du code SQL dans une requête de base de données. Ainsi, il est possible de récupérer des informations se trouvant dans la base ou encore détruire des données.

vi. Man in the middle

Cette attaque permet de détourner le trafic entre deux stations. Totalement transparente pour le client, le pirate joue le rôle de proxy. Il accédera ainsi à toutes les communications et pourra en obtenir les informations sans que l’utilisateur s’en rende compte.

Page 8: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 8

b) Les différents types de systèmes de détection d’intrusion

Un système de détection d’intrusion est un ensemble de composants logiciels et matériels dont la fonction principale est de détecter et analyser toute tentative d’effraction.

Il existe trois grandes familles distinctes d’IDS :

Les systèmes de détection d’intrusions réseau « NIDS » (Network Based Intrusion Detection System), qui surveillent l'état de la sécurité au niveau du réseau.

Les systèmes de détection d’intrusions de type hôte « HIDS » (Host Based Intrusion Detection System), qui surveillent l'état de la sécurité au niveau des hôtes.

Les systèmes de détection d’intrusions hybrides, qui utilisent les NIDS et HIDS pour avoir des alertes plus pertinentes.

1) Les méthodes de détection d’intrusions

Les méthodes de détection d'intrusions utilisées à l'heure actuelle reposent essentiellement sur l'observation d'événements et leur analyse. La collecte d'informations constitue donc la première étape dans tout système de détection d'intrusions.

Il s'agit d'une part des informations fournies par le journal système, les journaux propres à certaines applications comme les serveurs de courrier électronique, mais aussi de données provenant de sondes installées par les outils de détection eux-mêmes.

Le rôle des outils de détection d'intrusions consiste alors à exploiter cette masse d'informations, appelée audit, de manière à y détecter des événements signalant potentiellement une intrusion.

Deux approches ont été proposées à ce jour, l'approche comportementale et l'approche par scénario. La première se base sur l'hypothèse que l’on peut définir un comportement normal de l'utilisateur et que toute déviation par rapport à celui-ci est potentiellement suspecte. La seconde s'appuie sur la connaissance des techniques employées par les attaquants : on en tire des scénarios d'attaque et on recherche dans les traces d'audit leur éventuelle survenue.

Page 9: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 9

i) L’approche comportementale

La détection d'anomalies consiste à définir, dans une première phase, un certain comportement du système, des utilisateurs et des applications. Considéré comme normal. Dans une seconde phase, on observe l'entité ainsi modélisée et tout écart par rapport au comportement de référence est signalé comme étant suspect.

Cette approche recouvre en fait deux problèmes distincts : la définition du profil d'une part, la spécification des critères permettant d'évaluer le comportement observé par rapport à ce profil d'autre part.

Le principal investissement lors de la mise en œuvre d'un détecteurd'anomalies est la construction du profil. Cette étape est délicate, car le profil doit refléter à la fois une certaine politique de sécurité (par exemple, il ne doit pas être possible de déclencher un «reboot» du système via une simple requête HTTP), le fonctionnement naturel des applicatifs exploités (par exemple, un serveur HTTP émet à destination d'un client distant si et seulement s'il reçoit une requête de sa part) et les habitudes éventuellement très disparates des utilisateurs (par exemple, dans une entreprise, un ingénieur commercial accédera très régulièrement aux pages HTML contenant les descriptions techniques des produits, mais probablement jamais au contrat passé avec la société de restauration.). Le profil peut donc contenir des règles impératives imposées par l'administrateur et/ou des règles empiriques, «apprises» en cours de fonctionnement.

La mise en service d'un détecteur d'anomalies est donc précédée d'une phase d'apprentissage au cours de laquelle le profil, initialement construit uniquement à partir d'une politique de sécurité, évolue, afin que toute utilisation jugée normale soit reconnue comme telle. Dans certains cas, cet apprentissage continue également après la mise en service : le profil évolue constamment afin de suivre au mieux l'utilisation réelle du système.

Page 10: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 10

ii) L’approche par scénario

Le principe commun à toutes les techniques de cette classe consiste à utiliser une base de données, contenant des spécifications de scénario d'attaques (on parle de signatures d'attaque et de base de signatures).

Le détecteur d'intrusions confronte le comportement observé du système à cette base et lève une alerte si ce comportement correspond à l'une des signatures.

V. Solution adoptée

Nous avons opté à une approche par scénario. L'approche comportementale souffre de quelques défauts intrinsèques :

Les données utilisées en apprentissage doivent être exemptes d'attaques

En cas de modifications subites de l'environnement de l'entité modélisée, cette entité changera sans doute brutalement de comportement. Des alarmes seront donc levées. Pour autant, ce n'est peut-être qu'une réaction normale à la modification de l'environnement,

Enfin, un utilisateur malicieux peut habituer le système (soit pendant la phase d'apprentissage, soit en exploitation si l'apprentissage est continu) à des actions malveillantes, qui ne donneront donc plus lieu à des alertes.

Page 11: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 11

Chapitre 2Spécification des besoins et étude conceptuelle

Page 12: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 12

I. Introduction :

Nous avons opté pour la spécification des besoins et l’élaboration du dossier

conceptuel à l’utilisation du langage UML.

Notre étude se limitera à l’utilisation des cas d’utilisation pour la

spécification des besoins et les diagrammes de séquence et de classe pour la

conception.

II. Spécification des besoins selon le cas d’utilisation:

a) Description des acteurs

1) Système de détection d’intrusion

C’est un acteur système, c’est l’acteur principal et il a pour rôle de détecter et de notifier les intrusions.

2) Administrateur réseau

L’administrateur a pour rôle de configurer le système (Voir Annexe A et B)

de détection d’intrusion et de gérer les alertes en cas de détection d’intrusion.

3) Base de données

La base de données est un acteur système, elle enregistre les signatures des attaques utilisées pour l’identification des intrusions.

b) Description des cas d’utilisation

1) Configurer le système de détection d’intrusion

i) Acteur :

Administrateur réseau

ii) Actions :

La configuration consiste a :

Choisir l’interface réseau utilisée pour la capture de paquet

Page 13: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 13

Choisir l’expression filtre (voir Annexe E) a utiliser lors de la capture

Activer le mode espion (voir Annexe F) Activer l’enregistrement automatique des paquets capturés Activer l’option de notification par SMS Saisir le numéro du téléphone a notifié par SMS Activer l’option de notification par console Saisir l’adresse IP de la machine oŭ se trouve la console de

management Activer l’option de journalisation des attaques

2) Gérer les alertes

i) Acteur :

Administrateur réseau

ii) Actions :

Lors de détection d’intrusion, l’administrateur consulte le journal système pour voir le type d’attaque et selon le cas, il peut reconfigurer le pare-feu pour bloquer l’intrus.

3) Détecter les intrusions

i) Acteur :

Système de détection d’intrusions

ii) Actions :

Capturer les paquets transitant sur le réseau Transformer les paquets en une structure de données Analyser les paquets

Page 14: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 14

4) Notifier les intrusions

i) Acteur :

Système de détection d’intrusions

ii) Actions :

Lors de détection d’une intrusion, les actions effectuées sont :

Envoyer un SMS à l’administrateur Envoyer une alerte vers la console de management Journaliser l’attaque

c) Diagramme de cas d’utilisation

Figure 1 - Diagramme de cas d’utilisation

Page 15: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 15

III. Diagrammes de séquence

a) Cas d’utilisation: configurer le système

1) Modifier les options de capture

Pour modifier les options de capture, l’administrateur consulte le menu Capture > Options > Options de capture (voir Annexe A).

Figure 2 – Modifier les options de capture

Page 16: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 16

2) Modifier les options de notification

Pour modifier les options de notification, l’administrateur consulte le menu Notification > Options > Options de notification (voir Annexe B).

Figure 3 – Modifier les options de notification

Page 17: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 17

3) Ajout d’une signature

L'administrateur consulte le menu Signatures > Ajouter. Une fois la boite de dialogue affichée, il saisie la nouvelle signature, une petite description et choisi la catégorie de la signature via la liste déroulante (voit Annexe C)

Figure 4 – Ajouter une signature

4) Supprimer une signature

Pour supprimer une signature, l’administrateur consulte le menu Signature > Supprimer. Une fois la boite de dialogue affichée, l’administrateur saisie la signature a supprimé et valide en cliquant sur le bouton « Supprimer » (voir

Annexe D).

Page 18: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 18

Figure 5 – Supprimer une signature

b) Cas d’utilisation: Détecter les intrusions

La classe sniffer lance la capture via la fonction pcap_loop (voir Annexe G), transforme les paquets en une structure de données via la fonction decode, enregistre les paquets dans les fichiers de dump via la fonction pcap_dump (voir Annexe

H).

La classe detect, vérifie la conformité de paquets avec une analyse protocolaire via la fonction verif_packet () et vérifie aussi si le paquet correspond à une signature dans la base des signatures.

Figure 6 - Détecter les intrusions

Page 19: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 19

c) Cas d’utilisation: Notifier les intrusions

Lors de détection d’une intrusion la classe « notificateur » journalise les attaques dans le système via la fonction syslog, notifie l’administrateur par SMS via la fonction sendsms et envoie une alerte vers la console de management via la fonction sendconsole.

Figure 7 - Notifier les intrusions

Page 20: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 20

d) Cas d’utilisation: Gérer les alertes

Dès qu’il sera notifié, l’administrateur doit consulter les journaux système et selon le type d’attaque, il peut reconfigurer le pare-feu pour bloquer l’intrus.

Figure 8 - Gérer les alertes

IV. Diagramme de classes

Classe main : C’est l’interface graphique de l’application.

Classe createdb : Permet la création et l’initialisation de la base de données.

Classe configure : Permet de mettre à jour les options de capture ainsi que les options de notification.

Classe capture : Permet de traiter les paquets capturés.

Classe analyse : Permet d’analyser les paquets.

Classe notificateur : Cette classe permet de notifier les attaques.

Page 21: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 21

a) Description des classes

1) Classe main

Attribut Description Fonction RoleCreateMenu() Créer le menu principalCreateCapture() Créer le menu CaptureCreateSign() Créer le menu SignaturesCreateNotif() Créer le menu Notification

2) Classe createdb

Attribut Description Fonction Rolesid Id senseur Create_tab() Créer une tableinetraface Nom de l’interface Insert_to() Inserer dans une tablefiltre L’expression filtremotif La signaturedesc Description du motifdump Si = 1 Enregistrer les paquetspromisc Si = 1 Activer le mode espionsendsms Si = 1 Activer la notification par SMStel Numero de telephonesendconsole Si = 1 Activer la notification par conosoledest IP destinataire

3) Classe configure

Attribut Description Fonction RoleCaptureOptions() Mettre à jour les options de captureNotifOptions() Mettre à jour les options de notification

4) Classe capture

Attribut Description Fonction RoleHandle Descripteur de paquet Pcap_loop() Capturer les paquetsDevice Interface de capture Pcap_dump() Enregistrer les

paquetsPromisc Mode espion Print_payload() Afficher les paquetsFiltre Expression filtre

Page 22: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 22

5) Classe analyse

Attribut Description Fonction RolePayload Le paquet Verif_packet() Verifier la conformité du paquetHeader L’en-tête du paquet Check_packet() Recherche du motif

6) Classe notificateur

Attribut Description Fonction RoleTel Numero de Telephone Sendsms() Envoyer un SMS à

l’administrateurIpdest IP destinataire sendConsole() Envoyer une alerte vers la

consoleSendsms Activer la notification par

SMSSyslog() Journaliser l’attaque

Sendconsole Activer la notification par console

Log Activer la journalisation

Page 23: Rapport Pfe Nids

ISET NABEUL – Département informatique

Projet de fin d’études

b) Diagramme de classes

Département informatique Informat

Figure 9 – Diagramme de classe

Informatique réseaux

23

Page 24: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 24

Chapitre 3

Réalisation

Page 25: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 25

I. Introduction

Après avoir achevé la phase conceptuelle, nous allons présenter dans cette partie l’étape de la réalisation de notre application en évoquant les choix techniques et l’environnement de travail.

a) Environnement matériel

Processeur Intel Core Duo 1.60 GHz Mémoire 2 Go Os : Windows XP Pro sp3 et Redhat Fedora 10

HP Compaq 6820s

Processeur Intel Core Duo 1.60 GHz Mémoire 1 Go Os : Windows XP Pro sp3 et Redhat Fedora 10

HP Compaq 6720s

8 ports 10/100Mbps Auto-MDI

D-Link DES-1008D

Page 26: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 26

b) Environnement logiciel

1) Code blocks

i. Description

Code::Blocks est un environnement de développement gratuit et multi-plateforme (Linux et Windows), développé pour coller au mieux aux demandes des utilisateurs. Conçu autour d'une architecture de plugins, il est ainsi extensible et configurable très facilement ce qui lui permet d'évoluer très vite. L'un de ses principaux atouts est de pouvoir s'interfacer avec la plupart des compilateurs gratuits du marché : VC++ toolkit, MinGW, ... Une version contenant MinGW est d'ailleurs disponible si vous ne possédez pas encore de compilateur.

ii. Caractéristiques

Code::Blocks offre a priori toutes les fonctionnalités sympathiques qu'on est en droit d'attendre d'un EDI, tant au niveau de l'interface que de l'éditeur de texte ou de la compilation.

Open source (sous license GPL2) Multi-plateforme (utilise WxWidgets) Extensible via un système de plugins Support de plusieurs compilateurs (Visual C++ 2003, MinGW, Borland C++ 5.5,

Digital Mars, Open Watcom) Peut compiler directement ou via un makefile Support de templates de projets (possibilité d'écrire des templates

personnalisés) Gestion des espaces de travail (workspaces) Importation des projets VC++ et Dev-C++ Interfaçage avec GDB pour le debugging Coloration syntaxique Repliage de code Code-completion Explorateur de classes Indentation automatique Outils externes configurables Gestion des listes de "TODO"

Page 27: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 27

iii. Installation

Via la ligne de commande:

# yum install codeblocks xterm

iv. Configuration

Via la ligne de commande installer le paquet devel correspondant:

# yum install freeglut-devel

« Setting > compiler and debuger > Linker settings »

Cliquer sur le bouton « ajouter » et entrer: glut

« valider »

« Setting > Global variables »

il faut mettre pour les architectures 32 bits:

base : /usr/

include : /usr/include/

lib : /usr/lib

il faut mettre pour les architectures 64 bits:

base : /usr/

include : /usr/include/

lib : /usr/lib64

2) Libpcap

i. Description

La libpcap est une bibliothéque de fonctions sert d'interface à la capture de paquets et est indépendante du système.

En clair la libpcap permet d'écouter le réseau aves ses propres filtres puisqu'elle inclus un mécanisme de filtrage basé sur le Berkeley packet filter.

Page 28: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 28

ii. Installation

Libpcap est disponible dans le site de l’outils TCPDump

http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz

Après la récupération de l’archive

Fenêtre du Terminal :

# tar zxvf libpcap-*.tgz./configure# make#make install#make install-incl#make install-man

iii. Compilation

Pour compiler le code source, il fault ajouter l’expression –lpcap

3) MySQL

i. Description

C’est le moteur de base de données (libre) le plus connu et le plus répandu.

ii. Installation

L’installation de MySQL est très simple grâce à YUM

# yum install mysql-server

Plusieurs paquets sont disponibles :

mysql : les outils (clients) en ligne de commande

mysql-embedded : la bibliothèque pour les applications intégrant le serveur

mysql-devel : les entêtes et bibliothèques pour les développeurs

Page 29: Rapport Pfe Nids

ISET NABEUL – Département informatique

Projet de fin d’études

mysql-libs : les bibliothèques dynamiques nécessaires aux programmes utilisant MySQL

mysql-bench : les tests de performance

mysqlclient10 : bibliothèques de compatibilité pour MySQL 3.23.x

mysqlclient14 : bibliothèques de compatibilité pour MySQL 4.1.x

iii. Activation

Pour activer le service :

# service mysqld start

Pour lancer MySQL automatiquement au demarrage de la machine

# chkconfig mysqld on

4) GTK2+

i. Description

GTK+ est un ensemble de bibliothèques logicielles, permettant de réaliser des interfaces graphiques.

ii. Installation

La version la plus récente est disponible sur

Il faut créer le répertoire /opt/gtk

# mkdir -p /opt/gtk

Ensuite il faut extraire les archives

$ cd ~/gtk+-2.10$ tar -zxf atk-1.10.3.tar.gz$ tar -zxf cairo-1.2.0.tar.gz

Département informatique Informat

: les bibliothèques dynamiques nécessaires aux programmes utilisant MySQL

: les tests de performance

: bibliothèques de compatibilité pour MySQL 3.23.x

: bibliothèques de compatibilité pour MySQL 4.1.x

Pour lancer MySQL automatiquement au demarrage de la machine :

GTK+ est un ensemble de bibliothèques logicielles, permettant de réaliser des

La version la plus récente est disponible sur : ftp://ftp.gtk.org/pub/gtk/

/opt/gtk, commencons par le créer :

Ensuite il faut extraire les archives :

.tar.gz.tar.gz

Informatique réseaux

29

: les bibliothèques dynamiques nécessaires aux programmes utilisant MySQL

GTK+ est un ensemble de bibliothèques logicielles, permettant de réaliser des

ftp://ftp.gtk.org/pub/gtk/

Page 30: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 30

$ tar -zxf glib-2.12.0.tar.gz$ tar -zxf gtk+-2.10.0.tar.gz$ tar -zxf pango-1.13.2.tar.gz

Définir deux variables d'environnement :

$ export KG_CONFIG_PATH=/opt/gtk/lib/pkgconfig/:$PKG_CONFIG_PATH

Cette variable permet à l'utilitaire pkg-config de trouver les fichiers .pc qui lui permet

de récupérer les informations sur les bibliothèques telles que les options de compilation

pour gcc.

$ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

Cette variable permet à l'éditeur de lien ld de trouver nos bibliothèques nouvellement

installées.

iii. Compilation

Pour compiler :

$ gcc `pkg-config --cflags --libs gtk+-2.0` main.c

5) Gammu

i. Description:

Gammu est un logiciel de gestion de téléphones portables, open-source, fonctionnant sous Linux et Windows. Il est hérité de Gnokii, spécialisé pour les téléphones Nokia.

Gammu permet :

L'envoi de SMS (avec ou sans accusés de réception) La gestion du répertoire La gestion des appels La création de sauvegardes (messages, répertoire…)

ii. Installation

Gammu est disponible dans le dépôt de Fedora :

# yum install gammu

Page 31: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 31

6) L’API MySQL

i. Description

Pour Accéder à la base de données avec le langage C, nous avons utilisé l’API MySQL.

ii. Installation

Sous Fedora, avec la commande YUM

# yum install libmysqlclient15-dev

iii. Utilisation

Pour se connecter à la base de données utilisant l’API MySQL, il faut mettre #include <winsock.h> avant #include <MYSQL/mysql.h>

iv. Compilation

Lors de compilation du code source, il faut ajouter l’expression –lmysqlclientainsi que –L/usr/lib/mysql

Page 32: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 32

Conclusion générale

En raison d'évolution des techniques d’attaque, nous recommandons

fortement de mettre en œuvre un système de détection d’intrusion. En effet,

notre application permet de détecter les intrusions réseau en se basant sur la

recherche de motif.

L’application développée a été en totalité conçue et réalisée, elle a été par la

suite testée et validée.

En guise de perspectives, nous pouvons étendre ce projet en ajoutant des

modules qui permettent de :

Interagir avec d’autres systèmes de détection d’intrusion Décrypter les flux crypté pour pouvoir analyser le trafic réseau

Toutefois, et nous terminerons par ceci, même si une certaine maturité dans ce domaine commence à se sentir, le plus important reste de savoir de quoi il faut se protéger. Les failles les plus répandues proviennent généralement de l’intérieur de l’entreprise, et non de l’extérieur. Des mots de passe simples, des droits d’accès trop élevés, des services mal configurés, ou encore des failles dans les logiciels restent la bête noire en matière de sécurité.

Page 33: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 33

Annexes

Page 34: Rapport Pfe Nids

ISET NABEUL – Département informatique

Projet de fin d’études

Annexe (A)

Capture > Options > Options de capture

L’administrateur peut saisirpaquet, l’expression filtre (dans cet exemple, seul les paquets à destination du port 80 seront capturés).

Pour capturer tout le trafic réseau, il est nécessaire d’activer le mode espion pour pouvoir capter les paquets à destination des autres machines.

L’administrateur peut enregistrer les paquets capturés en sélectionnant la case à cocher « Enregistrer les paquets

Département informatique Informat

Capture > Options > Options de capture

L’administrateur peut saisir le nom de l’interface réseau utilisée pour la capture de paquet, l’expression filtre (dans cet exemple, seul les paquets à destination du port 80

tout le trafic réseau, il est nécessaire d’activer le mode espion pour pouvoir capter les paquets à destination des autres machines.

L’administrateur peut enregistrer les paquets capturés en sélectionnant la case à Enregistrer les paquets »

Informatique réseaux

34

le nom de l’interface réseau utilisée pour la capture de paquet, l’expression filtre (dans cet exemple, seul les paquets à destination du port 80

tout le trafic réseau, il est nécessaire d’activer le mode espion pour

L’administrateur peut enregistrer les paquets capturés en sélectionnant la case à

Page 35: Rapport Pfe Nids

ISET NABEUL – Département informatique

Projet de fin d’études

Annexe (B)

Notification > Options > Options de notification

Via cette fenêtre, l’administrateur peut choisir le mode de notification.

Pour activer la notification par SMS, l’administrateur doit cocher «et saisir son numéro de téléphone.

Pour qu’il soit notifié via sa console de management, il doit cocher «console » et saisir l’adresse IP de la machine o

Pour activer la journalisation des attaques, il faut cocher «

Département informatique Informat

Notification > Options > Options de notification

Via cette fenêtre, l’administrateur peut choisir le mode de notification.

Pour activer la notification par SMS, l’administrateur doit cocher «et saisir son numéro de téléphone.

Pour qu’il soit notifié via sa console de management, il doit cocher «» et saisir l’adresse IP de la machine oŭ la console est installée.

Pour activer la journalisation des attaques, il faut cocher « Journaliser les

Informatique réseaux

35

Pour activer la notification par SMS, l’administrateur doit cocher « Envoyer un SMS »

Pour qu’il soit notifié via sa console de management, il doit cocher « Notification par

Journaliser les intrusions »

Page 36: Rapport Pfe Nids

ISET NABEUL – Département informatique

Projet de fin d’études

Annexe (C)

Pour ajouter une signature dans la base de données, l’administrateur consulte le menu Signatures > Ajouter.

Une boite de dialogue s’affiche, l’administrateur saisi le nouveau motif, une description sur l’attaque concernée par et clique sur le bouton Ajouter pour enregistrer le nouveau motif dans la base de signatures.

Département informatique Informat

Pour ajouter une signature dans la base de données, l’administrateur consulte le menu Signatures > Ajouter.

Une boite de dialogue s’affiche, l’administrateur saisi le nouveau motif, une description sur l’attaque concernée par le motif, sélectionne la catégorie du motif et clique sur le bouton Ajouter pour enregistrer le nouveau motif dans la base de

Informatique réseaux

36

Pour ajouter une signature dans la base de données, l’administrateur consulte le

Une boite de dialogue s’affiche, l’administrateur saisi le nouveau motif, une le motif, sélectionne la catégorie du motif

et clique sur le bouton Ajouter pour enregistrer le nouveau motif dans la base de

Page 37: Rapport Pfe Nids

ISET NABEUL – Département informatique

Projet de fin d’études

Annexe (D)

Pour supprimer une signature de la base de données, l’administrateur consulte le menu Signatures > Supprimer.

Il saisi le motif à supprimer puis clique sur le bouton Supprimer pour valider.

Département informatique Informat

Pour supprimer une signature de la base de données, l’administrateur consulte le imer.

Il saisi le motif à supprimer puis clique sur le bouton Supprimer pour valider.

Informatique réseaux

37

Pour supprimer une signature de la base de données, l’administrateur consulte le

Il saisi le motif à supprimer puis clique sur le bouton Supprimer pour valider.

Page 38: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 38

Annexe (E)

Le filtre BPF est un langage permettant de filtrer les paquets échangés sur un réseau. Ce langage sert à sélectionner des données transitant sur un réseau selon des critères précis.

Ce langage permet par exemple de savoir :

Qui envoie les données ? Qui reçoit les données ? Quel est le protocole utilisé ? Vers et depuis quel port sont envoyé les données ?

Il existe trois sortes de critères différents :

type

Ce critère indique à quoi correspond le nom ou nombre. Les types possibles sont host (pour hôte), net (pour réseau) et port.

Exemples : host ultra, net 192.168, port 20.

Si aucun critère type n'est spécifié, host sera utilisé.

dir

Ce critère permet de spécifier une direction : depuis (src) ou vers(dst) un id.

Les directions sont src, dst, src or dst et src and dst.

Exemples : src ultra, dst net 192.168, src or dst port ftp-data.

S'il n'y a pas de critère de direction de spécifié, src or dst sera utilisé.

proto

Ce critère permet de spécifier un protocole particulier. les protocoles possibles sont ether, fddi , ip, arp, rarp, decnet, lat, moprc, mopdl, tcp et udp.

Exemples : ether src ultra, arp net 192.168, tcp port 21.

Si aucun proto n'est spécifié, tous les protocoles cohérents avec le type seront pris en compte.

Exemples : net 192.168 <=> (ip or arp or rarp) net ,

port 53 <=> (tcp or udp) port 53.

Page 39: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 39

Annexe (F)

Mode espion aussi appelé Promiscuous mode, en informatique, se réfère à une configuration de la carte réseau, qui permet à celle-ci d'accepter tous les paquets qu'elle reçoit, même si ceux-ci ne lui sont pas adressés.

Ce mode est une fonctionnalité généralement utilisée pour écouter le trafic réseau.

Chaque paquet réseau envoyé inclut l'adresse MAC de la carte réseau destinataire. Quand une carte réseau voit passer un paquet, elle vérifie si elle est la destinataire du paquet ; si elle ne l'est pas, elle ne tient pas compte du paquet ; mais en mode promiscuous, elle traite le paquet dans tous les cas, permettant ainsi à l'ordinateur de pouvoir lire tous les paquets.

Page 40: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 40

Annexe (G)

Les rappels sont utilisés dans pcap également, mais au lieu d'être appelés quand un utilisateur appuis sur une touche, ils sont invoqués lorsque pcap renifle un paquet. Les deux fonctions qu'on peut employer pour définir des rappels sontpcap_loop() et pcap_dispatch().

L'une et l'autre invoquent une fonction de rappel chaque fois qu'un paquet reniflé répond à nos exigences de filtrage (si un filtre quelconque existe, bien sûr ; dans la négative, alors n'importe quel paquet reniflé invoque le rappel).

Le prototype pour pcap_loop() est reproduit ci-dessous :

int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)(void);

Le premier argument est notre gestionnaire de session. Ce qui suit est un entier indiquant à pcap_loop() combien de paquets il devrait renifler avant de revenir à l'état antérieur (une valeur négative signifie qu'il devrait renifler jusqu'à ce qu'une erreur se produise).

Le troisième argument est le nom de la fonction de rappel. Le dernier argument est utile dans quelques applications, mais le plus souvent il est simplement défini à NULL.

Page 41: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 41

Annexe (H)

void pcap_dump(u_char *user, struct pcap_pkthdr *h, u_char *sp)

pcap_dump() écrit un paquet dans le fichier ouvert par pcap_dump_open().Il faut noter que ses arguments sont identiques que ceux utilisés par lafonction de callback utilisé avec pcap_dispatch() ou pcap_loop().

Page 42: Rapport Pfe Nids

ISET NABEUL – Département informatique Informatique réseaux

Projet de fin d’études 42

Netographie

[1] http://cian.developpez.com/uml2/tutoriel/sequence/

[2] http://doc.fedora-fr.org/wiki/Installation_et_configuration_de_MySQL

[3] http://gtk.developpez.com/faq/

[4] http://astuces-securite-pc-mac.blogspot.com/2008/03/detection-des-attaques.html

[5] http://www.madpowah.org/textes/srs/index.html

[6] http://fr.wikibooks.org/wiki/Utilisateur:Rortalo/Sécurité_informatique/Détection_d'intrusion

[7] http://fr.wikipedia.org/wiki/NIDS

[8] http://fr.wikipedia.org/wiki/Algorithme_de_recherche_de_sous-chaîne

[9] http://www.linux-france.org/prj/inetdoc/securite/tutoriel/tutoriel.securite.advanced.outils.html

[10] http://fr.wikipedia.org/wiki/Filtre_BPF

[11] http://fr.wikipedia.org/wiki/Berkeley_sockets

[12] http://www.cgsecurity.org/Articles/sniffer/index.html

[13] http://okki666.free.fr/docmaster/articles/linux068.htm

[14] http://mirror.sweon.net/madchat/coding/c/c.rezo/rawsckt/pcap.manual.txt

[15] http://gammu-sms.blogspot.com/

[16] http://inti.sourceforge.net/tutorial/libinti/threads.html

[17]http://blogs.operationaldynamics.com/andrew/software/gnome-desktop/gtk-thread-awareness.html

[18] http://www.gtk-fr.org/