0% ont trouvé ce document utile (0 vote)
220 vues28 pages

Rapport: Université Mohammed Premier, Oujda Faculté Multidisciplinaire, Nador Département D'informatique Maroc

Ce rapport présente la mise en œuvre d'un Système de Détection d'Intrusions (IDS) utilisant des modèles d'apprentissage automatique, notamment Random Forest et Support Vector Machine (SVM), pour détecter des attaques informatiques sur des ensembles de données NSL KDD et CIC-IDS-2018. L'IDS surveille le trafic réseau et génère des alertes en cas d'activités suspectes, ayant été testé avec une attaque de type force brute sur le protocole SSH. Le projet inclut également l'utilisation du framework CICFlowMeter pour l'analyse en temps réel du trafic réseau.

Transféré par

CHAYMAE RAMI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
220 vues28 pages

Rapport: Université Mohammed Premier, Oujda Faculté Multidisciplinaire, Nador Département D'informatique Maroc

Ce rapport présente la mise en œuvre d'un Système de Détection d'Intrusions (IDS) utilisant des modèles d'apprentissage automatique, notamment Random Forest et Support Vector Machine (SVM), pour détecter des attaques informatiques sur des ensembles de données NSL KDD et CIC-IDS-2018. L'IDS surveille le trafic réseau et génère des alertes en cas d'activités suspectes, ayant été testé avec une attaque de type force brute sur le protocole SSH. Le projet inclut également l'utilisation du framework CICFlowMeter pour l'analyse en temps réel du trafic réseau.

Transféré par

CHAYMAE RAMI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Mohammed Premier, Oujda

Faculté multidisciplinaire, Nador


Département d’informatique
⋄ Maroc ⋄

Rapport
Module : La sécurité des données
Data Science and Intelligent Systems .

Par

Rami Chaymae

SYSTÈME DE DÉTECTION D’INTRUSION

Encadré par :
Prof EL Mekkaoui Khalid

Academic year : 2022/2023


1
Résumé
Dans le paysage numérique actuel, où les menaces en ligne évoluent constamment et deviennent
de plus en plus sophistiquées, les Systèmes de Détection d’Intrusions (IDS) jouent un rôle fon-
damental dans la préservation de la sécurité et de l’intégrité des systèmes informatiques. Les
IDS sont des outils essentiels qui permettent de surveiller en permanence le trafic réseau, les
activités des utilisateurs, et les comportements des applications à la recherche d’activités sus-
pectes ou malveillantes. Dans le cadre de ce projet, nous avons mis en œuvre un système de
détection d’intrusion (IDS) qui repose sur deux modèles d’apprentissage automatique, à savoir
Random Forest et Support Vector Machine (SVM). L’objectif principal de notre travail était
de parvenir à une détection efficace des attaques informatiques au sein de deux ensembles de
données distincts, à savoir NSL KDD et CIC-IDS-2018, grâce à l’application de ces modèles
d’apprentissage automatique, précédés d’une analyse exploratoire des données et d’un prétrai-
tement approprié. Pour évaluer les performances de notre IDS, nous avons soumis le système
à des tests d’attaques, notamment une attaque de type force brute sur le protocole SSH. De
plus, nous avons déployé le framework CICFlowMeter pour surveiller en temps réel et analyser
le trafic réseau. Chaque fois que notre IDS détecte une activité suspecte ou une tentative d’at-
taque, il génère automatiquement une alerte, avertissant ainsi les administrateurs en charge de
la sécurité.

2
Abstract
In today’s digital landscape, where online threats are constantly evolving and becoming increa-
singly sophisticated, Intrusion Detection Systems (IDS) play a fundamental role in preserving
the security and integrity of IT systems. IDSs are essential tools for continuously monitoring
network traffic, user activity and application behavior for suspicious or malicious activity. In
this project, we implemented an intrusion detection system (IDS) based on two machine lear-
ning models, namely Random Forest and Support Vector Machine (SVM). The main objective
of our work was to achieve effective detection of computer attacks within two distinct data-
sets, namely NSL KDD and CIC-IDS-2018, through the application of these machine learning
models, preceded by exploratory data analysis and appropriate pre-processing. To evaluate the
performance of our IDS, we subjected the system to attack tests, including a brute-force attack
on the SSH protocol. In addition, we deployed the CICFlowMeter framework to monitor and
analyze network traffic in real time. Whenever our IDS detects suspicious activity or an attack
attempt, it automatically generates an alert, notifying the administrators in charge of security.

3
Table des figures

1.1 Bootstrap Aggregating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9


1.2 SVM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.1 Le concept de KNIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11


2.2 NSL-KDD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Les classes de NSL-KDD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Les variables uniformes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Description de la base de données. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Le nombre d’occurrences de chaque catégorie dans quelques variables. . . . . . . 15
2.7 Corrélation entre les variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.8 Les étapes de RFE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.9 La matrice de confusion de Random Forest. . . . . . . . . . . . . . . . . . . . . 17
2.10 Le rapport de classification de Random Forest. . . . . . . . . . . . . . . . . . . . 17
2.11 La matrice de confusion de SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.12 Le rapport de classification de SVM . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.13 NSL-KDD en KNIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.14 MetaNode de visualiser les données. . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.15 MetaNode de preprocessing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.16 MetaNode de Random Froset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.17 MetaNode de SVM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.18 La déstribution des classes dans CSE-CIC-IDS2018 . . . . . . . . . . . . . . . . 20
2.19 La matrice de confusion de Random Forest. . . . . . . . . . . . . . . . . . . . . 20
2.20 Le rapport de classification de Random Forest. . . . . . . . . . . . . . . . . . . . 20
2.21 La matrice de confusion de SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.22 Le rapport de classification de SVM . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.1 Logo CICFlowmeter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22


3.2 Scan de port. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 Logo nmap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4 La commande de Moteur de script Nmap. . . . . . . . . . . . . . . . . . . . . . 24
3.5 Logo Hydra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6 La commande de Hydra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7 Alerte d’attaque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4
Table des matières

Introduction générale 6

1 Les modèles d’apprentissage automatique : 8


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Random Forest : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.1 Arbre de décision : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Bootstrap Aggregating : . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Support Vector Machine (SVM) : . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Bases de données 11
2.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 NSL-KDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 A propos du data : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Analyse Exploratoire des Données (EDA) : . . . . . . . . . . . . . . . . 13
2.2.3 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
[Link] Nettoyage et transformation des données . . . . . . . . . . . . . 15
[Link] Réduction de dimensions . . . . . . . . . . . . . . . . . . . . . 16
[Link] Création des collection d’entrainement et de test . . . . . . . . 16
2.2.4 Résultat des modéles : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.5 Projet final en Knime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.6 Avantage et inconvénient de knime . . . . . . . . . . . . . . . . . . . . . 19
2.3 CSE-CIC-IDS2018 : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Déploiement : 22
3.1 CICFlowmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Attack SSH Brute Force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.1 Définition : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.2 Moteur de script Nmap (NSE) : . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.3 Hydra : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Alerte d’avertissement : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Conclusion générale 26

5
Introduction générale

Un Système de Détection d’Intrusion (IDS) est un outil de sécurité informatique conçu


pour surveiller un réseau informatique afin de détecter les activités suspectes, les tentatives d’in-
trusion ou les violations de sécurité. Son objectif principal est d’identifier les comportements
anormaux ou malveillants qui pourraient indiquer une tentative d’accès non autorisé, une ex-
ploitation de vulnérabilité ou d’autres menaces à la sécurité. Un IDS fonctionne en analysant
le trafic réseau, les journaux d’événements, les fichiers système et d’autres sources de données
pour identifier les schémas ou les signatures qui correspondent à des attaques connues ou à des
comportements inhabituels. Lorsqu’une activité suspecte est détectée, l’IDS peut déclencher
des alertes, envoyer des notifications aux administrateurs système. Les IDS sont un élément
essentiel de la sécurité informatique et sont utilisés pour protéger les réseaux et les systèmes
contre les menaces potentielles.
Les IDS se divisent généralement en deux catégories principales : les NIDS (Network
Intrusion Detection Systems) et les HIDS (Host Intrusion Detection Systems). Les NIDS sont
positionnés stratégiquement pour surveiller le trafic entrant et sortant à la recherche des at-
taques. Ils sont particulièrement efficaces pour détecter les menaces qui traversent le réseau.
Les HIDS, en revanche, sont déployés sur des hôtes individuels, tels que des serveurs ou des
ordinateurs de bureau, et se concentrent sur la surveillance de l’activité locale. Ils scrutent les
fichiers système, les journaux d’événements et d’autres aspects spécifiques à l’hôte pour détec-
ter les intrusions ou les comportements anormaux. Combinés, ces deux types d’IDS offrent une
protection complète, permettant de détecter et de répondre aux menaces à la fois au niveau du
réseau et de l’hôte, renforçant ainsi la sécurité globale des systèmes informatiques.
Il existe deux principales méthodes pour créer un IDS :

1. IDS basé sur les signatures : Ce type d’IDS compare les données collectées à une
base de données de signatures connues d’attaques ou d’anomalies. Si une correspondance
est trouvée, une alerte est déclenchée. Cependant, les IDS basés sur les signatures ont
tendance à être moins efficaces pour détecter de nouvelles menaces pour lesquelles il
n’existe pas encore de signature connue.
2. IDS basé sur le comportement : Les IDS basés sur le comportement surveillent les
modèles de trafic ou de comportement normaux sur le réseau ou le système. Ils identifient
les déviations par rapport à ces modèles et déclenchent des alertes en cas de comportement
anormal, même s’il n’y a pas de signature spécifique associée.

L’IDS est un outil complémentaire aux firewalls, les systèmes de prévention d’intrusion
(IPS) et les antivirus pour renforcer la sécurité globale d’un environnement informatique.
Dans le cadre de ce projet, nous avons entrepris l’implémentation d’un système de dé-
tection d’intrusion (IDS) basé sur deux modèles d’apprentissage automatique : Random Forest
et Support Vector Machine (SVM). Notre objectif principal était de détecter efficacement les

6
attaques informatiques sur deux ensembles de données, NSL KDD et CIC-IDS-2018, en utili-
sant ces modèles d’apprentissage automatique aprés une analyse exploratoire des données et
preprocessing. Afin d’évaluer les performances de notre IDS, nous avons réalisé des tests d’at-
taques, notamment une attaque de type SSH brute force. Nous avons également déployé le
framework CICFlowMeter pour surveiller et analyser le trafic réseau en temps réel. Lorsque
notre IDS détecte une activité suspecte ou une attaque, une alerte est générée pour avertir les
administrateurs de sécurité. Ce rapport présente en détail notre méthodologie, nos résultats et
nos conclusions, démontrant ainsi l’efficacité de notre système de détection d’intrusion dans la
protection des systèmes informatiques contre les menaces en ligne

7
1 Les modèles d’apprentissage automatique :

1.1 Introduction
L’apprentissage automatique, également connu sous le nom de machine learning, est une
discipline au sein de l’intelligence artificielle. Il repose sur l’idée fondamentale que les ordina-
teurs peuvent apprendre à partir de données et améliorer leurs performances dans des tâches
spécifiques sans une programmation explicite. Les systèmes d’apprentissage automatique uti-
lisent des algorithmes comme Random Forest, Support Vector Machine (SVM), les réseaux de
neuronnes,etc, pour analyser les données, identifier des modèles et prendre des décisions auto-
nomes. Ces modèles sont formés à l’aide de données d’entraînement, ajustant leurs paramètres
internes pour mieux représenter les caractéristiques et les relations des données. Une fois for-
més, ces modèles peuvent généraliser leurs connaissances pour effectuer des prédictions précises
sur de nouvelles données non vues. L’apprentissage automatique est devenu essentiel dans de
nombreux domaines, de la reconnaissance d’image à la recommandation de contenu, offrant des
solutions puissantes pour résoudre une gamme variée de problèmes complexes.

1.2 Random Forest :


1.2.1 Arbre de décision :
Les arbres de décision sont des algorithmes de ML polyvalent qui peuvent effectuer des
tâches de classification et de régression. Ce sont des algorithmes très puissants, capables de
s’adapter à des ensembles de données complexes.

Le critère d’évaluation des partitions caractérise l’homogénéité des sous-ensembles obte-


nus par division de l’ensemble. Ces métriques sont appliquées à chaque sous-ensemble candidat
et les résultats sont combinés pour produire une mesure de la qualité de la séparation. Il existe
un grand nombre de critères de ce type, les plus utilisés sont l’indice de diversité de Gini, il
mesure avec quelle fréquence un élément aléatoire de l’ensemble serait mal classé si son éti-
quette était choisie aléatoirement selon la distribution des étiquettes dans le sous-ensemble. Il
atteint la valeur 0 lorsque tous les éléments de l’ensemble sont dans une même classe de la
variable-cible.

8
1.2.2 Bootstrap Aggregating :
En effet, l’arbre de décision est performant avec le jeu d’entraînement mais il n’est pas
assez flexible pour donner de bonnes performances sur des données de test. Or, le but des algo-
rithmes est de pouvoir classifier des données dont nous ne connaissons pas encore la prédiction.
Alors, RF ont vu le jour. Cet algorithme permet d’utiliser plusieurs arbres de décision afin de
créer une forêt et d’améliorer la généralisation de l’ensemble du modèle. Nous empruntons la
théorie de l’ensemble Learning, ce qui donne des modèles de meilleure qualité. La technique
utilisée est Bootstrap Aggregating(Bagging).

Figure 1.1 – Bootstrap Aggregating.

Le bagging est une méthode de ML permettant d’améliorer la performance et la stabilité


des algorithmes. Il permet de réduire la variance du modèle et de limiter son surapprentissage.
Concrètement, le bagging réalise un échantillonnage des données et entraîne l’algorithme de fa-
çon séparée sur chacun de ces échantillons. Il assemble ensuite les résultats des modèles obtenus.

Le bagging est donc une méthode particulièrement mise en pratique pour améliorer l’ap-
prentissage des arbres de décision, considérés comme des classifieurs faibles car ils ont des
performances limitées et sont assez instables. Chaque arbre de décision est entraîné sur un
sous-ensemble du dataset et donne un résultat. Tous les arbres de décision aboutissent à des
résultats qui sont combinés afin de donner une réponse finale. Pour faciliter la compréhension,
nous pouvons dire que chaque arbre « vote » oui ou non. Et c’est la réponse finale qui obtient
la majorité de votes. En classification, nous parlons d’un “vote des modèles”.

Comme vous pouvez le voir, les arbres de décision sont assez intuitifs et leurs décisions
sont faciles à interpréter, nous appelons ce genre de modèle : des boîtes blanches. En revanche,
d’autres algorithmes comme RF sont généralement considérés comme des modèles de boîte
noire.

1.3 Support Vector Machine (SVM) :


Les machines à vecteurs de support, ou support vector machine (SVM), sont des modèles
de machine learning supervisés centrés sur la résolution de problèmes de discrimination et de
régression mathématiques. Ce modèle a été rapidement adopté en raison de sa capacité à tra-
vailler avec des données de grandes dimensions, ses garanties théoriques et les bons résultats
réalisés en pratique. Requérant un faible nombre de paramètres, les SVM sont appréciées pour

9
leur simplicité d’usage.

Le principe des SVM consiste à ramener un problème de classification ou de discrimination


à un hyperplan dans lequel les données sont séparées en plusieurs classes dont la frontière est
la plus éloignée possible des points de données (ou "marge maximale").

Figure 1.2 – SVM.

Le concept de frontière implique que les données soient linéairement séparables. Pour y
parvenir, les SVM font appel à des noyaux, c’est-à-dire des fonctions mathématiques permettant
de projeter et séparer les données dans l’espace vectoriel, les "vecteurs de support" étant les
données les plus proches de la frontière. C’est la frontière la plus éloignée de tous les points
d’entraînement qui est optimale, et qui présente donc la meilleure capacité de généralisation.

1.4 Conclusion
Dans la conclusion de ce chapitre, nous pouvons constater que Random Forest (Forêt
Aléatoire) et Support Vector Machine (Machine à Vecteurs de Support, SVM) sont deux mo-
dèles d’apprentissage automatique puissants et largement utilisés pour résoudre une variété de
problèmes. Chacun de ces modèles présente des avantages spécifiques et des domaines d’appli-
cation appropriés.
Random Forest est réputé pour sa capacité à gérer des ensembles de données complexes,
à identifier des relations non linéaires et à traiter des caractéristiques importantes. Il excelle
dans la classification et la régression, et est particulièrement résistant au surapprentissage.
D’un autre côté, SVM est connu pour sa capacité à trouver des frontières de décision
optimales dans des espaces de données de grande dimension. Il est efficace pour la classification
binaire et peut également être étendu à des problèmes de classification multiclasse. SVM est
apprécié pour sa robustesse en présence de données bruyantes et son efficacité dans la séparation
de classes linéairement non séparables grâce à des noyaux personnalisés.

10
2 Bases de données

2.1 Introduction :
Dans l’ère moderne de l’analyse de données et de la science des données, l’accès à une
multitude d’outils et de ressources est essentiel pour résoudre des problèmes complexes et
extraire des informations précieuses à partir de données hétérogènes. Ce chapitre se penche
sur l’exploration et l’analyse de deux ensembles de données distincts, une tâche qui exige une
approche polyvalente et une combinaison d’outils puissants. Nous explorerons l’utilisation de
deux de ces outils essentiels : KNIME, une plateforme d’analyse de données visuelle, et Python,
un langage de programmation polyvalent et puissant.
KNIME Analytics Platform est un logiciel libre et open source de type ETL (Extract
Transform Load) développé par la société suisse [Link] AG. C’est un véritable couteau
suisse de la Data Science !

Figure 2.1 – Le concept de KNIME.

Basé sur le concept « Low code / No code », cet outil puissant offre une large gamme
de fonctionnalités permettant, aux novices comme pour les experts de la donnée, d’élaborer
des workflows afin d’explorer, d’analyser et de transformer les données de manière efficace et
intuitive.
Principalement, il écrit à partir du langage compilé Java, KNIME Analytics Platform
fournit une portabilité sur l’ensemble des principaux OS du marché : Windows, Mac et Linux
(client lourd).
Le concept de KNIME Analytics Platform repose sur l’utilisation de nœuds interconnectés
pour représenter les différentes étapes du processus d’analyse de données.

11
Ces nœuds peuvent être combinés et configurés de manière flexible afin de créer des
workflows spécifiques de traitement des données.
Un workflow peut également être encapsulé dans un nœud spécifique appelé composant
afin d’en glober la complexité d’un processus de traitement.
Aujourd’hui, le KNIME met à disposition des utilisateurs :
— 16 608 Workflows
— 4 386 Nœuds
— 1 443 Composants
— 226 Extensions

2.2 NSL-KDD
2.2.1 A propos du data :
NSL-KDD, acronyme de "NSL-Knowledge Discovery in Databases" est une base de don-
nées largement utilisée dans le domaine de la sécurité informatique et de la détection d’intru-
sions. Cette base de données a été développée en réponse aux limitations de la célèbre base
de données KDD Cup 99, qui est devenue obsolète en raison de l’évolution des menaces et
des techniques d’intrusion. NSL-KDD a été conçue pour servir de banc d’essai plus réaliste et
plus actuel pour les chercheurs et les professionnels de la sécurité. Elle contient un ensemble
de données synthétiques basées sur le trafic réseau, avec une variété d’activités normales et
d’intrusions simulées.
Bien que cette nouvelle version de l’ensemble de données KDD souffre encore de certains
des problèmes et qu’elle ne soit peut-être pas parfaitement représentative des réseaux réels
existants, en raison du manque d’ensembles de données publiques pour les IDS basés sur les
réseaux, nous pensons qu’elle peut encore être utilisée comme ensemble de données de référence
efficace pour aider les chercheurs à comparer les différentes méthodes de détection des intrusions.
En outre, le nombre d’enregistrements dans les ensembles de formation et de test du
NSL-KDD est raisonnable, mais dans l’étude de la base de données, on fait la concaténation
de train data et set data.
Fichiers de données :

KDDTrain+.ARFF : L’ensemble des données NSL-KDD avec les étiquettes binaires au


format ARFF.
KDDTrain+.TXT : L’ensemble des données de l’entraînement NSL-KDD, y compris les
étiquettes de type d’attaque et le niveau de difficulté au format CSV.
KDDTrain+_20Percent.ARFF : Un sous-ensemble de 20% du fichier KDDTrain+.arff.
KDDTrain+_20Percent.TXT : Un sous-ensemble de 20% du fichier KDDTrain+.txt.
KDDTest+.ARFF : L’ensemble de test NSL-KDD complet avec des étiquettes binaires au
format ARFF.
KDDTest+.TXT : L’ensemble des tests NSL-KDD, y compris les étiquettes de type d’at-
taque et le niveau de difficulté, au format CSV.
[Link] : Un sous-ensemble du fichier KDDTest+.arff qui n’inclut pas les en-
registrements avec un niveau de difficulté de 21 sur 21.
[Link] : Un sous-ensemble du fichier KDDTest+.txt qui n’inclut pas les enre-
gistrements avec un niveau de difficulté de 21 sur 21.

12
2.2.2 Analyse Exploratoire des Données (EDA) :
L’Analyse Exploratoire des Données (EDA) est une étape cruciale dans tout projet d’ap-
prentissage automatique. Elle consiste à explorer et à analyser en profondeur un jeu de données
pour en extraire des informations pertinentes et en comprendre la structure, les tendances et
les relations entre les différentes variables. L’EDA permet aux scientifiques des données et aux
analystes de mieux appréhender leurs données avant de les utiliser pour construire des modèles
prédictifs ou pour prendre des décisions éclairées.

L’objectif principal de l’EDA est de découvrir des motifs cachés, d’identifier des anoma-
lies, d’évaluer la qualité des données, de détecter des valeurs manquantes ou aberrantes, et de
comprendre les interactions potentielles entre les caractéristiques du jeu de données.

Le jeu de données "NSL-KDD Dataset" comporte un total de 148511 lignes et 43


colonnes, ce qui nous donne un aperçu de sa taille et de sa complexité.

Figure 2.2 – NSL-KDD.

La variable cible est ’attack’. Cette variable joue un rôle central dans notre projet de pré-
diction précise des attaques, car elle détermine la classe à prédire. Il y’a 40 types d’attaques,
mais c’est possibles de les classer dans 5 classes :

Figure 2.3 – Les classes de NSL-KDD.

On rearque ici qu’il y’a un déséquilibre entre les classes . On peut réduire le nombre de
classes à deux classes.

13
Nous avons constaté maintenant que les deux classes
cibles sont équilibrées. Cela signifie que le nombre d’ins-
tances appartenant à la classe 0 ’Normal’ est approxi-
mativement égal au nombre d’instances appartenant à la
classe 1 ’attaque’. En ayant des classes équilibrées, nous
nous assurons que notre modèle est exposé à un nombre
égal d’exemples positifs et négatifs lors de l’apprentissage,
ce qui lui permet de mieux généraliser et de produire des
prédictions plus justes et équilibrées pour les deux classes.
Cela améliore la performance globale du modèle et per-
met de mieux identifier les cas d’attaques.
Nous avons esnuite distingué les variables categorique et numerique présentes dans le
jeu de données. Parmi les variables categorique, nous avons identifié 3 variables de ce type
(’protocol_type’, ’flag’ , ’service’ ). En ce qui concerne les variables numerique, nous en avons
recensé ceux qui reste. Nous remarquons qu’il y a une variable avec une seule valeur possible .

Figure 2.4 – Les variables uniformes.

Ensuite, nous avons résumé ses principales caractéristiques concernant les variables quan-
titatives. Nous avons déterminé leur valeur maximale (Max) et minimale (Min), ainsi que leur
moyenne et leur écart-type (Standard Deviation). Ces statistiques nous ont permis de mieux
comprendre la répartition des données dans chaque variable.

Figure 2.5 – Description de la base de données.

Enfin, nous avons également examiné le pourcentage des valeurs manquantes pour chaque
variable et les valeurs redandantes en utilisant les deux fonctions suivantes : [Link]().sum() ,
[Link]().sum() . Cela nous a permis d’identifier qu’il n y’a pas des valeurs manquantes
et qu’il existe 610 ligne deplicat .
Nous pouvons utiliser les "Count Plots". Ils sont des représentations visuelles qui per-
mettent d’afficher le nombre d’occurrences de chaque catégorie dans une variable catégorielle.
Ces graphiques sont particulièrement utiles pour explorer la distribution des valeurs dans une
variable catégorielle et pour obtenir un aperçu des fréquences relatives de chaque catégorie

14
Figure 2.6 – Le nombre d’occurrences de chaque catégorie dans quelques variables.

On remarque pour la variable ’protocol_type’ que la catégorie ’tcp’ est très peu fréquente
par rapport aux autres catégories. Ce déséquilibre peut avoir des implications importantes lors
de l’entraînement de modèles de machine learning, car le modèle pourrait avoir du mal à géné-
raliser correctement pour les catégories moins fréquentes.

Enfin, on peut déterminer la corrélation. C’est une mesure statistique qui évalue la rela-
tion ou l’association entre deux variables. Elle indique dans quelle mesure les changements dans
une variable sont liés aux changements dans une autre variable. On remaque qu’il y’a des fortes
corrélations significatives entre les variables dans une dataset, cela signifie que les fluctuations
ou les changements dans une variable sont linéairement associés aux fluctuations d’une autre
variable. Et voici les fortes corrélation trouvé :

Figure 2.7 – Corrélation entre les variables.

2.2.3 Preprocessing
[Link] Nettoyage et transformation des données
D’aprés EDA , Il y a des lignes redondantes qu’ il faut supprimer par data.drop_duplicates().
Il faut encore supprimer le variable uniforme ’num_outbound_cmds’, et supprimer encore les
variables qui ont causer des fortes corrélation.

On a encore utiliser la fonction get_dummies() qui peut être très utile pour préparer
des données catégorielles pour l’apprentissage automatique, car elle permet de traiter les va-
riables catégorielles de manière numérique, ce qui peut améliorer les performances des modèles.

Puis, data est passé à la phase de la normalisation. La normalisation est une technique de
prétraitement des données utilisée en statistiques et en apprentissage automatique pour mettre

15
toutes les variables ou caractéristiques d’un ensemble de données sur une échelle commune. Il
existe différentes techniques de normalisation, mais l’une des plus couramment utilisées est la
"normalisation RobustScaler" et c’est le type qu’on a utilisé et se trouve dans la bibliothéque
sklearn.

[Link] Réduction de dimensions


Concernant la réduction de dimensions, la méthode utilisé c’est RFE ( Recursive Feature
Elimination ).
RFE est est une méthode de sélection des caractéristiques permettant d’identifier les
caractéristiques clés d’un ensemble de données. Le processus consiste à développer un modèle
avec les caractéristiques restantes après avoir supprimé à plusieurs reprises les parties les moins
significatives jusqu’à ce que le nombre souhaité de caractéristiques soit obtenu. Bien que RFE
puisse être utilisée avec n’importe quelle méthode d’apprentissage supervisé, les machines à
vecteurs de support (SVM) constituent l’appariement le plus populaire.

Figure 2.8 – Les étapes de RFE.

[Link] Création des collection d’entrainement et de test


La création de collections d’entraînement et de test est une étape essentielle dans le
développement de modèles d’apprentissage automatique. L’objectif est de diviser notre jeu de
données en deux ensembles distincts : l’ensemble d’entraînement et l’ensemble de test.
L’ensemble d’entraînement est utilisé pour entraîner le modèle, c’est-à-dire pour lui per-
mettre d’apprendre à partir des données disponibles. L’ensemble de test, quant à lui, est utilisé
pour évaluer lesperformances du modèle sur des données inédites, c’est-à-dire des données sur
lesquelles il n’a pas été entraîné.
La division de l’ensemble de données en un ensemble d’entraînement et un ensemble de
test doit être réalisée de manière aléatoire et équitable, afin d’obtenir des résultats fiables.
La division réalisée est d’environ 70% des données pour l’ensemble d’entraînement et 30%
pour l’ensemble de test. Cependant, ces proportions peuvent varier en fonction de la taille de
l’ensemble de données et des exigences spécifiques du problème.

16
Le code fourni utilise la fonction train_test_split de la bibliothèque scikit-learn pour
diviser un ensemble de données normalisées en ensembles d’entraînement et de test.

2.2.4 Résultat des modéles :


Random Forest : Voici les résultats des modéles :

Figure 2.9 – La matrice de confusion de Figure 2.10 – Le rapport de classification de


Random Forest. Random Forest.

La valeur d’Accuracy : 0.9948833539952665.

SVM : Voici les résultats des modéles :

Figure 2.11 – La matrice de confusion de Figure 2.12 – Le rapport de classification de


SVM . SVM .

La valeur d’Accuracy : 0.9346106164769525.

2.2.5 Projet final en Knime


Dans le cadre de notre projet de traitement de données avec KNIME, nous avons utilisé
une variété de nœuds de différents types pour accomplir diverses tâches d’analyse et de prétrai-

17
tement. Parmi les types de nœuds que nous avons exploité, on peut citer les nœuds de lecture de
données pour importer nos ensembles de données, les nœuds de transformation pour nettoyer
et préparer nos données, les nœuds de modélisation pour créer des modèles d’apprentissage au-
tomatique, et les nœuds de visualisation pour représenter graphiquement nos résultats. Grâce
à l’ensemble de fonctionnalités offertes par KNIME et à la diversité des nœuds à notre disposi-
tion, nous avons pu mener à bien notre projet d’analyse de données avec efficacité et précision,
et voici le résultat trouvé :

Figure 2.13 – NSL-KDD en KNIME.

Les métanœuds (ou metanodes) sont une fonctionnalité puissante dans KNIME qui per-
met aux utilisateurs de regrouper des nœuds, des sous-flux de travail ou des opérations com-
plexes en une seule entité ou unité. Ils sont utilisés pour plusieurs raisons importantes dans
KNIME notemment organisation et structuration .

Figure 2.14 – MetaNode de visualiser les don-


Figure 2.15 – MetaNode de preprocessing.
nées.

18
Figure 2.16 – MetaNode de Random Froset. Figure 2.17 – MetaNode de SVM.

2.2.6 Avantage et inconvénient de knime


KNIME offre de nombreux avantages qui en font une plateforme d’analyse de données po-
pulaire. Tout d’abord, sa facilité d’utilisation en fait un outil accessible aux non-informaticiens,
aux personnes sans expérience en développement, ainsi qu’à ceux qui n’ont pas de formation en
informatique. Grâce à son interface graphique intuitive composée de nœuds et de connexions,
il n’est pas nécessaire de maîtriser des langages de programmation tels que Python ou R pour
créer des modèles prédictifs, des règles d’association ou des systèmes de recommandation.
En ce qui concerne les inconvénients, KNIME présente quelques limites. Il peut être diffi-
cile de répondre à des besoins spécifiques complexes, et certaines fonctions ont des capacités et
des paramètres limités. Le déploiement de modèles peut être un défi. Enfin, l’un des principaux
inconvénients de KNIME est sa lenteur, ce qui peut être un facteur limitant pour certaines
analyses de données.
C’est pour cela dans la base de données suivante, on a travaillé diretement par python.

2.3 CSE-CIC-IDS2018 :
L’ensemble de données final comprend sept scénarios d’attaque différents : Brute-force,
Heartbleed, Botnet, DoS, DDoS, attaques Web et infiltration du réseau de l’intérieur. Il com-
prend 80 caractéristiques extraites du trafic capturé à l’aide de CICFlowMeter-V3.
CSE-CIC-IDS2018 est une base de données qui contient un ensemble de fichiers CSV. Les
fichiers CSV sont couramment utilisés pour stocker des données tabulaires, ce qui en fait un
choix pratique pour représenter les données de trafic réseau et les informations sur les activités
normales et malveillantes dans le contexte de la sécurité informatique.
Chaque fichier CSV peut représenter différents aspects des données, tels que les caractéris-
tiques du trafic réseau, les étiquettes indiquant si une observation est normale ou malveillante,
les horodatages, les adresses IP, les ports, etc.
Il n y’a pas une grande différence entre la préparation des deux bases de données :
NSL-kdd et CSE-CIC-IDS2018. Donc voici la distribution des classes aprés un échantillonnage
aléatoire de 10 000 observations de chaque classe d’étiquettes présentes dans les DataFrames
respectifs.

19
Figure 2.18 – La déstribution des classes dans CSE-CIC-IDS2018

Les résultats des modéles :


Random Forest : Voici les résultats des modéles :

Figure 2.19 – La matrice de confusion de Figure 2.20 – Le rapport de classification de


Random Forest. Random Forest.

La valeur d’Accuracy : 0.930993075291198 .

SVM : Voici les résultats des modéles :

Figure 2.21 – La matrice de confusion de Figure 2.22 – Le rapport de classification de


SVM . SVM .

20
La valeur d’Accuracy : 0.7063603250210143 .

2.4 Conclusion
Dans ce chapitre, nous avons entrepris une étude approfondie des ensembles de données
à travers deux phases cruciales : l’Exploratory Data Analysis (EDA) et le prétraitement des
données. Notre objectif principal était d’explorer, de comprendre et de préparer les données
pour une analyse plus poussée à l’aide de modèles Random Forest et Support Vector Machine
(SVM).
Au cours de l’EDA, nous avons plongé dans les ensembles de données, en examinant leurs
caractéristiques, leurs distributions, leurs corrélations et en identifiant les potentielles anomalies
ou valeurs aberrantes. Cette phase nous a permis d’acquérir une vision approfondie de la nature
de nos données, ce qui s’est avéré essentiel pour la suite de notre analyse.
Le prétraitement des données a été une étape cruciale où nous avons nettoyé les données
en gérant les valeurs manquantes, en effectuant des encodages adéquats pour les variables
catégorielles, et en normalisant ou en mettant à l’échelle les données selon les besoins. Cette
étape a également inclus la sélection des caractéristiques et la réduction de la dimensionnalité
pour optimiser la performance de nos modèles.
Nous avons ensuite appliqué deux modèles de machine learning, à savoir Random Forest
et SVM, sur nos ensembles de données préparés. Les résultats obtenus ont montré que le mo-
dèle Random Forest a produit des performances remarquables, démontrant sa capacité à bien
généraliser les données et à fournir des prédictions précises.

21
3 Déploiement :

3.1 CICFlowmeter
CICFlowMeter représente un atout essentiel pour les professionnels de la sécurité infor-
matique et de la gestion des réseaux. Conçu spécifiquement pour l’analyse en temps réel du
trafic réseau, cet outil open source offre une version complète de fonctionnalités puissantes. Il se
distingue par sa capacité à capturer et à analyser des données de trafic réseau en provenance de
diverses sources, notamment des commutateurs, des routeurs et d’autres périphériques réseau.
Parmi ses points forts, CICFlowMeter excelle dans l’extraction d’informations cruciales telles
que les adresses IP source et de destination, les ports, les protocoles, les volumes de données, et
les durées de connexion, permettant ainsi une compréhension approfondie du flux de données.

Figure 3.1 – Logo CICFlowmeter.

CICFlowMeter va plus loin en générant des rapports détaillés sur le trafic réseau, fournis-
sant ainsi des statistiques précises, des graphiques illustratifs et des résumés de flux complets.
Ces données sont des atouts précieux pour les administrateurs de sécurité, car elles leur per-
mettent de prendre des décisions éclairées en matière de gestion de la sécurité du réseau. Dans
son ensemble, CICFlowMeter s’impose comme un outil essentiel pour la surveillance et l’ana-
lyse du trafic réseau, contribuant ainsi à renforcer la sécurité et la gestion efficace des réseaux
informatiques.

3.2 Attack SSH Brute Force


3.2.1 Définition :
SSH est l’un des protocoles les plus couramment utilisés dans les infrastructures infor-
matiques modernes, ce qui en fait un vecteur d’attaque précieux pour les pirates. L’un des
moyens les plus fiables d’obtenir un accès SSH à des serveurs consiste à forcer brutalement les

22
informations d’identification. Il existe plusieurs méthodes pour effectuer une attaque SSH par
force brute qui conduira finalement à la découverte d’identifiants de connexion valides.
Bien que ce ne soit pas la seule façon de procéder, nous explorerons des outils tels que
Hydra, et le moteur de script de Nmap pour accomplir cette tâche.
Avant de commencer toute attaque par force brute, nous devons déterminer l’état du
port sur lequel SSH fonctionne. Nous pouvons effectuer un simple scan Nmap pour voir s’il est
ouvert ou non. Tapez la commande suivante : sudo nmap ’adresse IP’

Figure 3.2 – Scan de port.

3.2.2 Moteur de script Nmap (NSE) :


Le Nmap Scripting Engine (NSE) est une fonctionnalité puissante de l’outil de sécurité
réseau Nmap (Network Mapper). Nmap est un scanner de réseau open source largement utilisé
pour découvrir, mapper et auditer les réseaux informatiques. Le NSE étend les capacités de
Nmap en permettant aux utilisateurs d’exécuter des scripts personnalisés pour effectuer diverses
tâches d’analyse et de découverte de services réseau.

Figure 3.3 – Logo nmap.

Tapez la commande suivante :


"sudo nmap ’adresse IP’ -p 22 –script ssh-brute –script-args userdb= ’UserData’,
passdb=’passData’ "
Avec :
* –script ssh-brute : spécifie le script à utiliser.
* –script-args définit les arguments du script, séparés par une virgule.
* userdb=’UsersBDD’ est la liste des noms d’utilisateur que nous souhaitons utiliser.
* passdb=’PasswordsBDD’ est la liste des mots de passe que nous souhaitons utiliser.
NSE affichera les tentatives de force brute et les informations d’identification essayées.
Cela peut prendre un certain temps selon le nombre de noms d’utilisateur et de mots de passe
utilisés.

23
Figure 3.4 – La commande de Moteur de script Nmap.

3.2.3 Hydra :
Hydra est un puissant craqueur de login qui est très rapide et qui supporte un certain
nombre de protocoles différents.

Figure 3.5 – Logo Hydra.

Tapez la commande suivante : " sudo hydra -L ’UserData’ -P ’PassData’ ssh ://’adres-
seIp’ -t 4 "

Figure 3.6 – La commande de Hydra.

3.3 Alerte d’avertissement :


Chaque paquet capturé en temps réel, devient l’entrée du modéle. Si le résultat était une
attaque, une alerte est affiché.

24
Figure 3.7 – Alerte d’attaque.

25
Conclusion générale

En conclusion, notre travail a abouti à la mise en place d’un IDS basé sur les modèles
Random Forest et SVM. Notre objectif principal était de détecter de manière efficace les at-
taques informatiques au sein des ensembles de données NSL KDD et CIC-IDS-2018, en tirant
parti de l’analyse exploratoire des données et du prétraitement. En comparant les résultats des
modéles, Random Forest a donné des bons résultats pour les deux bases de données.
Premièrement, notre IDS a démontré une capacité prometteuse à identifier et à signaler
les activités suspectes et les tentatives d’attaques, ce qui renforce la sécurité des systèmes
informatiques.
Deuxièmement, les tests d’attaques que nous avons réalisés, y compris une attaque de
type SSH brute force, ont révélé que notre système était capable de résister à ces menaces bien
établies.
Troisièmement, le déploiement du framework CICFlowMeter pour la surveillance en
temps réel et l’analyse du trafic réseau a amélioré la réactivité de notre IDS, permettant une
détection rapide des activités malveillantes.
En somme, notre travail a prouvé l’efficacité de notre système de détection d’intrusion
dans la protection des systèmes informatiques contre les menaces en ligne. Toutefois, la sécu-
rité informatique étant un domaine en constante évolution, des améliorations continues seront
nécessaires pour maintenir la robustesse de notre IDS face à de nouvelles menaces. Ce projet
constitue une base solide pour des travaux futurs visant à renforcer davantage la sécurité des
systèmes informatiques contre les intrusions malveillantes.

26
Bibliographie

[1] [Link]

[2] [Link]

[3] [Link]

[4] ASHOOR, Asmaa Shaker et GORE, Sharad. Importance of intrusion detection system
(IDS). International Journal of Scientific and Engineering Research, 2011, vol. 2, no 1, p. 1-4.

[5] OWENS, Jim et MATTHEWS, Jeanna. A study of passwords and methods used in
brute-force SSH attacks. In : USENIX Workshop on Large-Scale Exploits and Emergent
Threats (LEET). 2008.

[6] https ://[Link]

27

Vous aimerez peut-être aussi