Chapitre II –
Conception de Modèles de Clustering
et classification pour la détection
d’intrusions
II.1. Introduction
Dans ce qui suit, nous présentons tout d’abord le DataSet que nous avons considéré,
l’architecture générale de notre modèle. Ensuite, nous présentons notre premier modèle basé
sur la technique de Clustering k-means classique. Puis, nous proposons un deuxième modèle k-
means amélioré, nommé Modèle A, et enfin notre un troisième modèle qui est k-means
amélioré avec seuils de tolérance, nommé Modèle B.
Nous avons considéré le DataSet NSL KDD 2009, qui est une base contenant les
connaissances extraites à partir de processus de KDD. Ces caractéristiques sont dévoilées sur la
Figure II.1 suivante :
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions
Le DataSet est un ensemble d’instances (individus), où chaque instance est une collection
d’attributs. Nous présentons quelques exemples d’instances comme suit :
Exemple1 :
0,tcp,private,REJ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,10,0.00,0.00,1.00,1.00,0.04,0.06,
0.00,255,10,0.04,0.06,0.00,0.00,0.00,0.00,1.00,1.00,anomaly
Exemple2 :
2,tcp,ftp_data,SF,12983,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00
,0.00,134,86,0.61,0.04,0.61,0.02,0.00,0.00,0.00,0.00,normal.
amélioration, ensuite le «modèle B» qui est un algorithme k-means amélioré et avec seuils de
tolérance.
minimale (l’objet le plus proche). Pour cela nous utilisons la distance euclidienne. Aussi, nous
devons choisir pour une première fois K instances du DataSet aléatoirement, représentant ainsi,
les centres de gravitées de nos K clusters. Ensuite, pour chaque instance (objet), calculer la
distance de chacune avec les K centroides et affecter chacune au cluster (groupe) le plus
proches, puis recalculer leurs centroides.
Ce dernier est un vecteur qui représente le centre de gravité d’une classe, ces
cordonnées sont égales à la somme des cordonnées de même classe divisée par le nombre
d’élément de cette classe (dans notre cas nous avons toujours deux centroides). La
classification se fait sur plusieurs itérations jusqu’à ce que nous trouvions l’état stable où, le
résultat de classement doit être égal à celle-ci de l’itération qui précède.
En conséquence, nous devons spécifier le label de chaque cluster, dans notre cas
ANOMALY ou NORMAL. L’affectation de ces derniers revient à voir la classe majoritaire de
chaque cluster. Et enfin, évaluer notre modèle par le calcule et l’analyse des performances.
A noté que, suite à plusieurs exécutions et essais qui ont été réalisés sur le Modèle
A ( qui sera présenté en détail dans la session suivante), le nombre de cluster retenu est égale à
9.
Autrement dit, le principe de notre premier modèle suit les étapes suivantes :
- Introduire K égale à 9
- Choisir aléatoirement K instances qui représentent les centres de gravité des clusters
(nommé centroïd).
- Exécuter l’algorithme M-means sur le DataSet, ce qui revient à faire pour chaque
instance du DataSet
Calculer la distance (euclidienne) entre chaque instance et les K centres de
gravité.
Affecter l’instance au cluster dans lequel la distance par apport a son centre
de gravité est la minimale (le centre de gravité le plus proche).
Recalculer le centre de gravité de chaque cluster jusqu’à stabilisation des
centres de gravité
- Préciser lequel de ces clusters et Anomaly ou Normal (par classe majoritaire), c’est-à-
dire chaque cluster sera étiqueté par les instances de la classe majoritaire)
- Evaluer le résultat : calculer la Matrice de Confusion et l’Accuracy
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions
Le schéma présenté sur la figure II.4 suivante, décrit en détail l’approche adoptée :
- Il faut séparer les instances de Test environ 10 à 20% de la base Training dans un
fichier à part. Cette base de Test doit contenir les paquets du réseau c’est-à-dire les
instances avec des labels « Normal » et les « Anomaly »
- Puis éclater la Base Training en deux fichiers différents, de telles sortes que le fichier1
ne doit contenir que les instances « Normal » et le fichier2 que les instances
« Anomaly ». Nous avons procédé de cette manière dans le but de donner une
signification correcte à nos clusters. Ceci veut dire le fichier1 va nous former le cluster
des instances normal alors que le fichier2 va nous construire le deuxième cluster des
instances jugées anormal.
- Exécuter l’algorithme M-means séparément, sur le fichier1 et sur le fichier2. Noter que
le nombre de cluster choisi pour fichier1 doit être identique pour fichier2 (le même K)
Le schéma présenté sur la figure II.5 suivante décrit en détail l’approche adoptée
dans ce modèle.
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions
Entrée
- K (nombre de cluster à former)
- Le DataSet
DEBUT
- Déclarer et initialiser la matrice de donné
- Séparer les instances de Test 20% de la base Training dans des matrices de données,
respectivement, Test et train.
- Diviser la matrices de données Train en deux sous matrice différentes M1 et M2, de
telles sortes que le M1 contient que les instances « Normal » et le M2 les instances
« Anomaly »
- Lancer K-means pour matrice de donnée M1
Choisir aléatoirement K instances (K lignes de la matrice de données M1) qui
représentent les centres de gravité des clusters (nommé centroïd).
Initialiser le vecteur clusters_M1 par les K individus(ou instances) choisis
Calculer le centre de gravité global, par la formule suivante :
N : le nombre d’instance
m : la taille de l’instance (nombre d’attribut)
var : un élément d’une instance (attribut)
REPETER
- Calculer la distance entre chaque instance de la matrice de donnée et les K
centres de gravités local, en calculant la distance euclidienne par la formule
suivante : D ( X , Y ) = ² ² ⋯
- Affecter l’instance au cluster dans lequel la distance par apport a son centre
de gravité est la minimale (le centre de gravité le plus proche).
NB : Afin de comparer nos Modèles, nous avons gardé les variables du modèle A :
Nb_Bien_Classée_A, Nb_Mal_Classée_A, Nb_faux_positif_A et Nb_faux_négatif_A.
- Puis éclater la Base Training en deux fichiers différents, de telles sortes que le fichier1
ne doit contenir que les instances « Normal » et le fichier2 que les instances
« Anomaly ». Nous avons procédé de cette manière dans le but de donner une
signification correcte à nos clusters. Ceci veut dire le fichier1 va nous former le cluster
des instances normal alors que le fichier2 va nous construire le deuxième cluster des
instances jugées anormal.
- Exécuter l’algorithme M-means séparément, sur le fichier1 et sur le fichier2. Noter que
le nombre de cluster choisi pour fichier1 doit être identique pour fichier2 (le même K).
- Calculer la distance maximale des instances dans chaque cluster. Ces distances
représentent nos seuils de tolérances.
ENTREE
- K (nombre de cluster à former identique à celui du modèle A)
- Le DataSet
DEBUT
- Déclarer et initialiser la matrice de donné
- Séparer les instances de Test 20% de la base Training dans des matrices de données,
respectivement, Test et train.
- Diviser la matrices de données Train en deux sous matrice différentes M1 et M2, de
telles sortes que le M1 contient que les instances « Normal » et le M2 les instances
« Anomaly »
- Lancer K-means pour matrice de donnée M1
Choisir aléatoirement K instances (K lignes de la matrice de données M1) qui
représentent les centres de gravité des clusters (nommé centroïd).
Initialiser le vecteur clusters_M1 par les K individus(ou instances) choisis
Calculer le centre de gravité global, par la formule suivante :
REPETER
- Calculer la distance entre chaque individu de la matrice de donnée et les K
centres de gravités local, en calculant la distance euclidienne par la formule
suivante : D ( X , Y ) = ² ² ⋯
- Affecter d’instance au cluster dans lequel la distance par apport a son centre de
gravité est la minimale (le centre de gravité le plus proche).
- Recalculer le centre de gravité de chaque cluster et modifier le centroid, ce
qui revient à mettre à jour (réaffecter les nouvelles valeurs) le vecteur
clusters_M2.
Nous utilisons la formule suivante :
FINSI
FAIT
FIN
Algorithme II.3 – Pseudocode Modèle B : K-means amélioré
pour la détection d’intrusion avec seuils
Chapitre II - Conception de Modèles de Clustering et classification pour la détection d’intrusions
NB : Afin de comparer nos Modèles, nous avons gardé les variables du modèle B :
Nb_Bien_Classée_B, Nb_Mal_Classée_B, Nb_faux_positif_B et Nb_faux_négatif_B.
Chapitre III
III.1 Introduction
Ce chapitre est réservé à l’implémentation des modelés et à la présentation des
résultats obtenus lors de leurs applications sur un DataSet composé de paquets capturé depuis
un trafic réseau. Mais également, il relate une étude comparative sur les résultats relevés par
nos modèles.
III.3.1 Lancement des exécutions et affichage des résultats du Modèle K-means pour la
détection d’intrusion
b.1) Statistiques
Chapitre III - Implémentation et étude expérimentale
Graphe III.1 : Graphe des résultats des précisions du modèle K-means pour la détection
d’intrusion sur 10 itérations
b.2) Interprétation
Chapitre III - Implémentation et étude expérimentale
D’après les résultats obtenus lors de l’exécution de notre modèle, sur les itérations,
pour k=9, comme indiqués ci-dessous sur le tableau III.1 et le Graphe III.1, nous distinguons
toujours deux valeur qui sont égales à 58.35% et 61,95%.
Sur 4509 instances de Dataset_Test, il existe dans les premières exécutions 1967
instances classées « normal » et 2542 classées «Anomaly», comme montré sur le graphe
suivant :
b.2) Interprétation
D’après les résultats obtenus lors de l’exécution de notre modèle, sur le première
base de test, pour k variant de 2 à 10, comme indiqués ci-dessous sur le tableau III.3, tableau
III.4, Graphe III.3, Graphe III.4 et Graphe III.5, nous distinguons deux meilleures valeurs
relevées pour la précisions : k=9 et k=8, et sont respectivement égales à 77,60% et 76,62%.
Aussi notre modèle sur Premières Exécutions donne de bon résultats quand les valeurs de K
sont grandes (proche a 10) particulièrement pour une répartition en 9 clusters.
III.3.2.1.2 Secondes Exécutions
Sur 4509 instances de
Dataset_Test, il existe dans les secondes
exécutions 1920 instances classées
« normal » et 2589 classées «Anomaly»,
comme montré sur le graphe suivant :
b.2) Interprétation
D’après les résultats obtenus lors de l’exécution de notre modèle, sur le première
base de test, pour k variant de 2 à 10, comme indiqués ci-dessous sur le tableau III.5, tableau
III.6, Graphe III.7, Graphe III.8 et Graphe III.9, nous distinguons deux meilleures valeurs
relevées pour la précisions : k=9 et k=8, et sont respectivement égales à 79,15% et 77,53%.
Aussi notre modèle sur Premières Exécutions donne de bon résultats quand les valeurs de K
sont grandes (proche a 10) particulièrement pour une répartition en 9 clusters.
b.2) Interprétation
D’après les résultats obtenus lors de l’exécution de notre modèle, sur la première
base de test, pour k variant de 2 à 10, comme indiqués ci-dessous sur le tableau III.7, tableau
III.8, Graphe III.11, Graphe III.12 et Graphe III.13, nous distinguons deux meilleures valeurs
relevées pour la précisions : k=8 et k=9, et sont respectivement égales à 80,84% et 79,33%.
Aussi notre modèle sur Premières Exécutions donne de bon résultats quand les valeurs de K
sont grandes (proche a 10) particulièrement pour une répartition en 8 clusters.
b.2) Interprétation
D’après les résultats obtenus lors de l’exécution de notre modèle, sur la base de
test, et sur plusieurs itérations, comme indiqués ci-dessous sur le Graphe III.15, nous
distinguons une meilleure valeur relevée sur la sixième itération, pour une précision égale à
81.19%.
D’après les résultats obtenus lors de l’exécution de notre modèle sur plusieurs
bases de test, nous concluons que la meilleure valeur de la précision est de 81.19%. A noter
que le temps exécution été en progression (hausse) relativement au nombre d’itérations, avec
un durée moyenne de 252.91 secondes pour chaque itération. Aussi, nous gardons, les résultats
indiqués sur le tableau suivant :
Les résultats relevés sur le Tableau III.11, le Graphe III.16, Graphe III.17 et le
Graphe III.18, présentés ci-dessous, indiquent que :
Tableau III.11 : Résultats obtenus des modèles : K-means classique, Modèle A et Modèle B
Graphe III.16 : Graphe comparatif des Résultats des instances bien classées et instances mal
classées des Modèles : K-means classique, Modèle A et Modèle B
Chapitre III - Implémentation et étude expérimentale
Graphe III.17 : Graphe comparatif des instances identifiées comme faux positives et faux
négatives des modèles : K-means classique, Modèle A et Modèle B
Graphe III.18 : Graphe comparatif des précisions entre les modèles : K-means classique,
Modèle A et Modèle B
Chapitre III - Implémentation et étude expérimentale
Conclusion Générale
Dans ce mémoire, nous avons présenté un état de l’art, dans la quel nous avons
abordé les aspects théoriques de la sécurité informatique, les notions de base sur les systèmes
de détection d’intrusions, et le concept de Machine Learning. Cette État a permis d’avoir une
vue globale de ce qui se fait de nos jours dans le domaine des IDS utilisant les techniques de
machine Learning.