janvier 2026
Définition du problème
Les attaques réseau génèrent souvent des comportements atypiques : volumes de trafic inhabituels, connexions répétées vers plusieurs ports ou fréquences anormales. L'objectif de ce travail est de détecter automatiquement ces anomalies à partir de données réseau, en utilisant des techniques de machine learning non supervisées.
Structure du jeu de données
Les données utilisées dans ce projet sont synthétiques et simulées afin de reproduire des comportements réseau réalistes. Elles incluent majoritairement du trafic normal ainsi qu'une faible proportion de connexions suspectes simulant des attaques réseaux telles que des scans de ports ou de tentatives d'intrusion.
normal_data = pd.DataFrame({
"dst_port": np.random.choice([80, 443, 22], n_normal),
"packet_count": np.random.normal(40, 10, n_normal).astype(int),
"bytes_sent": np.random.normal(1500, 300, n_normal).astype(int),
"connection_duration": np.random.normal(60, 15, n_normal),
"connections_per_min": np.random.normal(5, 2, n_normal)
})
Normalisation des variables
Avant l'entraînement du modèle, les variables ont été normalisées afin d'assurer une pondération équitable des variables.
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(data[features])
Un modèle Isolation Forest a ensuite été entraîné pour détecter automatiquement les connexions réseau anormales, sans utiliser de labels, ce qui correspond à un contexte réaliste de surveillance réseau.
from sklearn.ensemble import IsolationForest
# Entraînement du modèle Isolation Forest
model = IsolationForest(
n_estimators=100,
contamination=0.05,
random_state=42
)
model.fit(X_scaled)
Détection des anomalies
Le modèle attribue une étiquette à chaque connexion : normale ou suspecte.
data["anomaly"] = model.predict(X_scaled)
Le graphique met en évidence une séparation claire entre le trafic réseau normal et les connexions suspectes. Les anomalies détectées se caractérisent par une fréquence de connexions plus élevées et des volumes de données atypiques, illustrant des comportements proches de scans de ports ou de tentatives d'intrusion.
Visualisation 3D du trafic réseau
L'analyse du trafic réseau à l'aide d'un modèle Isolation Forest a permis d'identifier automatiquement un ensemble restreint de connexions suspectes. Les visualisations 2D et 3D montrent une séparation claire entre le trafic normal et les anomalies, ces dernières présentant des fréquences de connexions élevées, des volumes de données atypiques et des données de connexion plus courtes.
ax.scatter(
anomalies["connections_per_min"],
anomalies["bytes_sent"],
anomalies["connection_duration"],
label="Connexions suspectes",
alpha=0.9
)
Les connexions détectées comme anomalies ne correspondent pas nécessairement à des attaques avérées, mais à des comportements statistiquement inhabituels. Ce type d'approche est particulièrement adapté aux environnements réseau où les signatures d'attaques ne sont pas toujours connues à l'avance.
Exemples de connexions détectées comme suspectes.
Le tableau ci-dessous présente quelques exemples de connexions identifiées comme anomalies par le modèle. Ces observations présentent des caractéristiques inhabituelles, telles qu'un nombre élevé de connexions par minute, un volume de données important ou une durée de connexion anormalement courte.
| nbr | dst_port | packet_count | bytes_sent | connection_duration | connections_per_min |
|---|---|---|---|---|---|
| 294 | 12 | 206 | 4526 | 1.295091 | 47.145271 |
| 285 | 419 | 273 | 4745 | 3.438603 | 43.482801 |
| 290 | 316 | 177 | 3913 | 2.598580 | 39.505380 |
| 292 | 244 | 249 | 3670 | 16.871548 | 38.770788 |
Ce projet illustre comment des techniques de machine learning non supervisées peuvent être utilisées pour détecter automatiquement des comportements réseau atypiques, constituant une première brique vers un système de détection d'intrusions.
Les données utilisées étant synthétiques, les résultats visent principalement à démontrer la méthodologie. Une amélioration future consisterait à appliquer ce modèle à des données réelles de trafic réseau, à intégrer davantage de variables (adresses IP, pays d'origine, protocoles) et à combiner les résultats avec des règles de sécurité.