# Principes et architecture des systèmes de détection d'intrusion

Les principes et architecture des systèmes de détection d'intrusion (IDS) définissent les solutions adoptées pour l'IDS.
On peut distinguer trois couches nécessaires pour un IDS :
* la surveillance du système d'information
* le scannage des sources d'informations (que l'on nomme probing)
* les décisions prises lors de l'évaluation positive d'une intrusion.
Selon les choix effectués lors de la conception d'un IDS, certaines parties de l'architecture peuvent changer. les systèmes de détection d'intrusion distribués (DIDS) combine les contraintes des systèmes distribués et des IDS.
La technique d'analyse des données peut éventuellement modifier l'architecture en ajoutant la couche de traitement des données propre à la technique utilisée. Par exemple, lors de l'utilisation de réseaux neuronaux, les données doivent être traduites en données compréhensible pour le réseau et le résultat doit être traduit.
On peut ensuite considérer que le cloud computing pose de nouvelles contraintes sur l'architecture d'un IDS, notamment pour la détection d'intrusion dans les machines virtuelles. On utilise alors des Hypervisor-Based IDS afin de pouvoir détecter les intrusions sur ces machines virtuelles.

## Composants d'un IDS

Les IDS ont trois composants nécessaires, qui sont :
* le composant de surveillance du système d'information (Probing), qui surveille le (ou les) système d'information (SI)
* le composant de monitoring, qui fait la synthèse des données récoltés par le composant de surveillance du système d'information
* le composant de décision.
On ne considère pas l'interface utilisateur, qui ne constitue pas une fonctionnalité nécessaire au bon fonctionnement d'un IDS.

### Surveillance du système d'Information

La couche de surveillance du système d'information est chargée d'enregistrer toutes les actions. Les actions viennent soit :
* du trafic réseau (NIDS) ;
* du Système d'exploitation (HIDS).
Ces actions peuvent être de différentes sortes (lectures, écriture de fichiers, authentification...) et sont ensuite enregistrées en logs, qui sont envoyés à la couche surveillance afin d'être analysés.

### Monitoring

La couche de monitoring va analyser les logs. Son but est d'évaluer les menaces pesant sur le système d'information en recherchant des événements notables. Les logs sont regroupés afin de distinguer des motifs permettant de distinguer une action connue, qui est alors évaluée. Ces événements sont alors classés en événements notables ou non.
Dans le cas où les événements sont notables, l'IDS va évaluer la menace du système d'information.
Pour les HIDS, les événements notables peuvent être :
* authentification ratée
* accès à /etc/passwd
Pour les NIDS, les événements notables peuvent être :
* rlogin
* connexions telnet
Après avoir identifié la menace de notre Système d'Information , il va alors indiquer son jugement sur la sécurité du réseau ou des systèmes et transmettre sa décision à la couche décision.

### Décisions

Si la couche surveillance juge que le système a été compromis, l'IDS peut prendre plusieurs décisions :
* La première est de prévenir l'administrateur du système d'information afin qu'il puisse prendre les décisions qui s'imposent ;
* la deuxième est d'effectuer une action définie à l'avance par l'administrateur système afin d’empêcher l'intrusion (ou la ralentir).

## Variations des architectures
### NIDS et IDS Hybride

Dans le cas des deux IDS suivants, un composant de prévention peut être ajouté. Il est situé avant la couche de surveillance du SI et permet d’empêcher certaines menaces. Par exemple, afin de limiter l'intrusion sur un réseau, l'IDS peut refuser de prendre certains paquets qu'il considère comme néfastes.
Pour cela, il utilise des techniques de détection à base de signature (voir ci-dessous).

### IDS distribués

Les IDS distribués couvrent un système entier comportant plusieurs ordinateurs.
Le système doit être capable de traiter plus d'informations, celles-ci venant de plusieurs ordinateurs. De plus chaque couche peut être distribuable. Par conséquent, une couche de communication doit être intégrée dans chaque composant pour que le système puisse fonctionner correctement.
De plus, le flot de données étant généralement trop important pour la couche de monitoring, il est nécessaire de la diviser en 2 parties.
La première partie est située sur la même machine que la couche probing, qui va d'abord traiter les logs pour ne garder que les événements notables. Ces événements sont alors envoyés à la seconde partie, qui reçoit tous ces événements notables pour tirer des conclusions sur :
* l'état du système local,
* l'état du système global.
Les IDS non-distribués n'ont eux aucune latence puisque toutes les données se trouvent sur le même ordinateur.

### Architecture à base d'agents

Dans un système de détection d'intrusion distribué, en cas de défaillance d'un composant, tout le système ne fonctionne plus. Dans un système a base d'agents, chaque agent est indépendant. Si on perd un agent, l'IDS se base sur les agents restants afin de continuer la surveillance du système d'information.
Dans ces IDS, chaque types d'agent se charge soit :
* de la surveillance du système d'information
* de la surveillance
* des décisions.
Plusieurs agents peuvent donc se charger de la même tache.
Pour que le système ne puisse plus fonctionner, il faut que tous les agents d'un type doivent tomber en panne.

## Moyens de détection d'intrusion

En général, il y a deux techniques d'analyses des données reçues par le module de détection des événements :
* Détection à base de signature
* Détection comportementale.
Les deux techniques de détection peuvent être utilisées simultanément dans un IDS.

### Détection à base de signature

La technique de détection basée sur les signatures essaye d'associer l'activité de l'ordinateur avec des signatures d'attaques connus. Cette techniques utilise donc une connaissance des différentes attaques existantes.
Ces signatures sont des règles définies statiquement qui caractérisent le comportement d'un utilisateur. Ces règles qui peuvent être statiques (basées sur un choix de sécurité) ou dynamique (basées sur des techniques d'apprentissage temporelle).
Afin de réaliser ces règles, on peut utiliser des techniques probabilistes, des techniques a base d'état, de règles, ...

### Détection comportementale

La technique de détection des anomalies considère qu'un événement qui est différent du fonctionnement normal du système qu'on a enregistré précédemment signifie que le système a été compromis. Afin de pouvoir dire qu'un système est normal ou pas, il faut donc l'avoir entraîné précédemment en lui faisant comprendre ce qu'est un système normal.
Après cette phase d’entraînement, le système informera n'importe quelle activité suspicieuse.
Afin de réaliser cela, plusieurs techniques sont possibles :
* Apprentissage automatique (Réseau de neurones...)
* Data Mining.
Pour réaliser ces techniques, il faut donc ajouter un module de communication et de traitement des informations compatible avec la technique. Par exemple, pour un réseau de neurones, il faut traduire les audits records en données compatible avec un réseau de neurones a l'entrée et la sortie du réseau.

### Avantages et Inconvénients des techniques

Les techniques à base de signature ont pour avantage de pouvoir fonctionner assez rapidement, leur initialisation étant très courte. Par contre, il est nécessaire, pour chaque nouvelle attaque, de pouvoir développer des règles qui permettent de stopper l'attaque. De plus, il est possible que les attaques évoluent, ce qui doit faire qu'on doit modifier des règles, ce qui est pénible à mettre à jour.
Dans les cas de la détection comportementale, cela est très chronophage en temps afin de détecter les attaques mais après initialisation le système peut potentiellement détecter des attaques inconnues ce qui peut permettre d'avancer la connaissance en matière d'attaques.

## Cloud computing et nouveau type d'IDS

L'apparition du cloud a développé de nouvelles problématiques. En effet, le cloud utilise de nombreuses machines virtuelles qui sont changées constamment d'endroit ou de propriétaire.
De plus, deux personnes veulent pouvoir détecter si le système est compromis :
* L'utilisateur de la machine virtuelle ou du service.
* Le fournisseur de la machine virtuelle ou du client.
Afin de surveiller ces machines virtuelles, un nouveau type d'IDS est apparu, les IDS basés sur les hyperviseurs. Ces IDS se basent eux sur les différentes métriques récupérées sur les différentes machines virtuelles comme le nombre de paquets transmis/reçus, les appels de lecture ou d'écriture des blocs ou l'utilisation du CPU, permettent de détecter les intrusions.

## Historique

L'apparition des premiers IDS remonte à 1987 avec l'IDS nommé IDES développé par Dorothy Denning. Cet IDS apparaissant avant l'usage d'internet ou de réseaux développés, il s'agissait d'un HIDS.
À la suite apparaissent les NIDS, qui remontent au début des années 1990.
Jusqu'aux années 1990, les systèmes n'utilisaient que des détections a base de signature. Avec le progrès des techniques de détection (découverte de patterns dans les communications réseaux), les IDS à base d'Anomaly detection commencent à apparaître. On note aussi l'apparition des DIDS en 1994 qui permet alors de gérer un parc de machines.
Les IDS explosent à l'arrivée du cloud computing, on note alors l'apparition de nouvelles contraintes (apparition des IDS pour hyperviseurs, multiplication du parc de machines à surveiller...). Cela entraîne donc l'apparition des Hypervisor-based IDS.