# Systèmes de détection et de prévention d'intrusions dans les systèmes distribués

Les systèmes de détection et de prévention d'intrusions dans les systèmes distribués permettent de repérer et d’empêcher l'intrusion d'un utilisateur malveillant dans un système distribué comme une grille informatique ou un réseau en nuage.
En effet, les infrastructures distribuées utilisent des technologies ainsi que des architectures liées à la virtualisation, aux protocoles d'internet ou intégrées. Cela peut donc attirer des attaquants souhaitant tirer profit des vulnérabilités inhérentes à ces technologies.
De plus, les systèmes distribués sont souvent vulnérables à certaines attaques telles que l'usurpation de l'adresse MAC, l'usurpation d'adresse IP, l'empoisonnement du cache DNS, les attaques par déni de service, etc.
De par leur nature figée, les IDPS traditionnels ne sont pas adaptés à la nature changeante des systèmes distribués. De nombreuses recherches ont donc été effectuées pour trouver des techniques permettant de répondre aux challenges inhérents à ces architectures.

## Notions
### Définitions

Les systèmes de détection d'intrusion (ou IDS : Intrusion Detection System) ont pour fonction la surveillance d’événements se produisant dans un système informatique ou dans un réseau. Ils ont pour but d'analyser les signaux permettant de détecter de possibles violations ou des menaces de violations des politiques de sécurité ou de l'utilisation normale de ces politiques$^,$.
Différentes approches de détection sont utilisées dans les IDS :
* Statistique : contrôle les données, le trafic réseau et le profil de l'utilisateur à la volée
* Motifs : recherche des schémas connus d'intrusion
* Règles : vérifie que les droits des systèmes sont bien respectés, que le comportement des utilisateurs n'est pas anormal
* États : s'assure de la logique des actions et des données
* Heuristique : vérifie les données en utilisant des technologies basée sur l'apprentissage.
Les systèmes de prévention d'intrusion (ou IPS : Intrusion Prevention System) ont pour but de détecter les intrusions sur un ordinateur et d'essayer de les arrêter.
Les systèmes de détection et de prévention d'intrusion (ou IDPS : intrusion and prevention detection systems) sont des systèmes ayant pour but de détecter mais aussi de prévenir les attaques et de les remonter à la personne chargée de la sécurité$^,$.
Les problématiques d'IDPS dans des systèmes distribués peuvent être abordées par le biais de l'informatique en nuage car, elles en sont un sous-ensemble et héritent de toutes les problématiques liées aux systèmes et aux réseaux$^,$$^,$$^,$.

### Problématique

L'augmentation rapide et continuelle de l'utilisation des outils informatiques distribués dans des secteurs comme les hôpitaux, l'armée, l'industrie etc. rendent leur protection de plus en plus importante car leur compromission peut avoir des effets dramatiques.
Dans la lutte contre ces attaques, l'utilisation des IDPS est maintenant devenue de plus en plus importante car ils permettent l'identification, la journalisation et la prévention d'incidents. Ils ont aussi pour but d'informer les personnes chargées de la sécurité et permettent aussi de dissuader les individus de violer leurs politiques de sécurité$^,$.

## Techniques
### Prévention
#### IDPS basés sur des hyperviseurs

En raison de la nature figée des systèmes qu'ils surveillent, les IDPS traditionnels ont généralement des politiques de sécurité statiques et des besoins en matière de sécurité stable qui ont été identifiés au cours du temps. A contrario, dans des environnements utilisant des machines virtuelles, les machines peuvent être ajoutées et supprimées dynamiquement et les besoins en matière de sécurité de chaque machine peuvent être différents$^,$.
Un modèle d'IDPS (CIDPS : Cloud IDPS) basé sur un hyperviseur (ou moniteur) a donc été proposé pour résoudre ce problème et ainsi permettre la sécurisation de plusieurs machines dans des environnements virtuels. Il a été prouvé que l'utilisation des hyperviseurs peut améliorer la détection et la prévention d'attaques car les CIDPS ont un contrôle total sur les ressources du système ainsi que sur les états des machines virtuelles. Ce modèle ne présente pas de solution en cas d'effondrement du système provoqué par une attaque importante sur le système.

#### Technique basée sur la détection d'anomalie

Des travaux ont été effectués afin de tester un IDS basé sur la détection d'anomalie au niveau applicatif (et plus précisément sur une application en mode SaaS). Les chercheurs sont partis du postulat suivant : l'intrusion dans un système arrive le plus généralement lorsque le code de l'application est en train d’être exécuté. Ils ont donc testé différentes techniques basées sur la détection d'anomalie et ont démontré que cette technique pouvait être efficace pour détecter les intrusions qui n’étaient pas encore connues. Leur expérience n'a par contre pas donné d'information quant à la bonne façon de prévenir les attaques.
L'apprentissage automatique est une autre méthode qui a été utilisée pour « former » les systèmes à faire de la détection d'anomalie.
Kleber Vieira a par exemple, utilisé des réseaux de neurones artificiels pour détecter des attaques. Dans cette expérience, chaque nœud d'un système distribué analyse les événements relatifs à ses ressources et informe ses voisins s'il a détecté une intrusion. Les chercheurs ont prouvé que l'utilisation de cette technique permet d'avoir des coûts de traitement faibles tout en gardant des performances satisfaisantes dans des implémentations réelles$^,$. L’inconvénient de cette solution est qu'elle ne permet pas de prévenir les attaques.

### Détection
#### Système centralisé

Wang et al. ont proposé un IDS collaboratif en utilisant une gestion centralisée, permettant une détection rapide avec une bonne précision. Le système manque de scalabilité. Les performances sont diminuées quand le gestionnaire central reçoit une trop grosse quantité de données. Un point individuel de défaillance est également induit par la présence du gestionnaire central. Une autre solution proposée se base sur une instance d’IDS par utilisateur du cloud, qui transmet des informations à un gestionnaire central. Comme la solution précédente, celle-ci présente un point individuel de défaillance.

#### P2P

Afin de pallier les problèmes liés au point unique de défaillance, une solution distribuée utilisant le P2P a été proposée. Même si cette solution résout le problème originel, elle en apporte un nouveau : sa nature distribuée la rend vulnérable à des attaques de grande envergure.

#### Système autonome

Un système autonome a pour but de pouvoir s'adapter aux changements de contexte en s'auto-gérant, s'auto-réglant, s'auto-configurant, s'auto-diagnostiquant et s'auto-réparant.
De telles solutions sont très adaptées à la nature changeante des systèmes distribués qui les rendent difficile à surveiller avec des moyens traditionnels. Des expériences ont été menées pour essayer de faire en sorte que le système de détection s'adapte automatiquement à ces changements.
Par exemple, Smith et al. ont proposé un système de détection d'anomalies autonome fonctionnant dans un environnement à grande échelle. Il exploite une collection de techniques ayant pour but la collecte et l'analyse automatique des données collectées. Ces données sont ensuite transformées dans un format unique, permettant ainsi de ne garder que les informations importantes. Leurs travaux prouvent que ce système autonome est efficace tout en utilisant peu de ressources. Leur système ne permet pas l'automatisation de la prévention d'intrusion car les alertes sont remontées aux administrateurs système pour validation.

#### Exploration de données

L'utilisation de techniques d'exploration de données sur les contrôleurs de machines virtuelles a permis un fort taux de détection sur des serveurs virtuels. Les chercheurs ont démontré qu'il était possible de détecter en moyenne 93 % des attaques avec 3 % de faux positifs.

#### Évaluation et analyse des risques

Lee et al. ont proposé un IDS basé sur l'évaluation des risques. Leur solution, appelée AAA, est basée sur un module permettant de gérer l'authentification, les autorisations et la journalisation. Quand un utilisateur essaie d’accéder au système sous surveillance, AAA vérifie les informations de l'utilisateur. Si l'utilisateur est authentifié, AAA récupère son niveau d'anomalie et choisit un système d'exploitation ayant l'IDS avec le niveau de sécurité correspondant à celui de l'utilisateur installé. Les niveaux de sécurité sont divisés en trois catégories distinctes : haute, moyenne et basse. Un niveau de sécurité haut essaie de détecter toutes les attaques, un faible essaie de détecter les attaques les plus courantes.
Les informations concernant l'utilisateur, les journaux système, et les transactions effectuées par l'utilisateur sont stockées dans une base de données ; celles concernant les données de l'utilisateur sont stockées dans un centre de données, permettant ainsi une bonne isolation.
Le problème de cette méthode est qu'elle n'est pas assez solide pour détecter des attaques distribuées car chaque IDS travaille de manière indépendante. De plus, elle nécessite un grand nombre de systèmes d'exploitation pour les utilisateurs de haut niveau.

#### Système de détection et de prévention d'intrusion réseau basée sur la virtualisation

Une solution, appelée VMFence, a été développée et se base sur des machines virtuelles qui surveillent les paquets transitant sur le réseau ainsi que les données présentes sur les autres machines virtuelles. Le but de cette solution est de ne pas avoir à installer des IDS sur chacune des instances de machine virtuelle. Le problème de cette technique est que les IDS n'ont aucun contrôle sur les instances de machines virtuelles, les rendant vulnérable à des attaques de l’intérieur.

#### Agent logiciel

Deux modèles basés sur l'utilisation d'agents logiciels ont été proposés : le premier, utilise les réseaux pair à pair (P2P) et le deuxième, un mélange d'agents mobiles et fixes distribués sur les différents nœuds du système. Ces deux approches permettent une bonne évolutivité mais ne permettent pas une robustesse suffisante car les agents logiciels ne peuvent pas partager assez d'information entre eux.

#### Système de détection et de prévention distribué, collaboratif et orienté par les données

Zargar et al. ont proposé un système de détection et de prévention distribué, collaboratif et guidé par les données (ou DCDIDPS : Distributed, Collaborative, and Data driven Intrusion Detection and Prevention system). Ce système travaille au niveau du réseau des machines hôtes mais aussi à des niveaux spécifiques aux plateformes applicatives. Cette solution permet de maximiser les taux de détection car elle surveille les changements système et le transfert de paquets. Ce modèle propose aussi une gestion de confiance entre les revendeurs de cloud pour harmoniser leurs IDPS respectifs et assurer ainsi une meilleure détection et protection$^,$.

## Architecture
### Système de détection d'intrusion machine

Dans les systèmes distribués, les systèmes de détection d'intrusion machine (HIDS : Host based intrusion detection systems) sont placés sur les machines hôtes, les machines virtuelles ou les hyperviseurs afin de détecter des comportements anormaux. Pour ce faire, ils analysent les journaux, les politiques d'accès et/ou les informations d'authentification. De nombreux travaux ont été basés sur cette architecture$^,$$^,$.

### Système de détection d'intrusion réseau

Un système de détection d'intrusion réseau (NIDS : Network based intrusion detection system) surveille le trafic réseau pour détecter des activités malicieuses comme des attaques par déni de service, des balayages de port ou des tentatives d'intrusions. L'information ainsi collectée est comparée avec des attaques connues. Les NIDS sont particulièrement efficaces pour trouver des intrus dans le réseau car ils comparent leurs comportements à une liste qui existe déjà en temps réel. Les NIDS surveillent principalement les adresses IP ainsi que les headers de chaque paquet. Ils utilisent des techniques de détection basées sur des signatures numériques ou de détection d'anomalie. Leur problème principal est que ces méthodes ne sont pas efficaces si le trafic utilise des techniques de chiffrement.

### Système de détection distribué

Un système de détection et de prévention distribué (Distributed intrusion detection system (DIDS)) est constitué de nombreux IDS (ou NIDS, HIDS, etc.) dans un large réseau, chacun communiquant les uns avec les autres ou avec un serveur central. Les composants du système de détection collectent des informations et les convertissent dans une forme standard qui sera passé à un analyseur centralisé. Ce dernier est une machine qui agrège de l'information à partir de multiples IDS et qui les analyse. Une combinaison faite de méthodes de détection basées sur la recherche d'anomalie et de signature est utilisée pour analyser les données récoltées.
Les DIDS peuvent aussi étendre les détecteurs d'intrusions non distribués en vérifiant le trafic réseau et en agrégeant toutes les informations venant de détecteurs individuels. Une fois que les informations venant de chaque système ainsi que du réseau ont été collectées dans une machine centrale, elles peuvent être analysées comme si elles faisaient partie d'un système unique, utilisant une combinaison d'approches basées sur les anomalies et les abus.

### Système de détection d'intrusion basé sur les hyperviseurs

Un système de détection d'intrusion basé sur les hyperviseurs (Hypervisor-based intrusion detection system) est une plateforme qui s’exécute au niveau de la couche hyperviseur. Il permet la surveillance et l'analyse des communications entre les machines virtuelles, dans le réseau virtuel formé par les hyperviseurs. Ces formes d'IDS permettent d'avoir une bonne disponibilité des informations.

## Perspective

Les IDPS distribués ont été capables de protéger dans un réseau de grande envergure, mais leur utilisation et leur déploiement dans le cloud computing présente de nombreuses difficultés et reste à faire$^,$.