Un système de détection d'intrusion (ou IDS : Intrusion Detection System) est un mécanisme destiné à repérer des activités anormales ou suspectes sur la cible analysée (un réseau ou un hôte). Il permet ainsi d'avoir une connaissance sur les tentatives réussies comme échouées des intrusions.
Les familles de systèmes de détection d'intrusion
Il existe trois grandes familles distinctes d’IDS :
Les NIDS (Network Based Intrusion Detection System), qui surveillent l'état de la sécurité au niveau du réseau.
Les HIDS (HostBased Intrusion Detection System), qui surveillent l'état de la sécurité au niveau des hôtes.
Les IDS hybrides, qui utilisent les NIDS et HIDS pour avoir des alertes plus pertinentes.
Les HIDS sont particulièrement efficaces pour déterminer si un hôte est contaminé et les NIDS permettent de surveiller l’ensemble d’un réseau contrairement à un HIDS qui est restreint à un hôte.
NIDS (IDS réseau)
Introduction
Un NIDS se découpe en trois grandes parties : La capture, les signatures et les alertes.
Capture
La capture sert à la récupération de trafic réseau. En général cela se fait en temps réel, bien que certains NIDS permettent l'analyse de trafic capturé précédemment.
La plupart des NIDS utilisent la bibliothèque standard de capture de paquet libpcap. La bibliothèque de capture de paquets Packet Capture Library est portée sur quasiment toutes les plateformes, ce qui permet en général aux IDS réseau de suivre.
Le fonctionnement de la capture d'un NIDS est donc en général fortement lié à cette libpcap. Son mode de fonctionnement est de copier (sous Linux) tout paquet arrivant au niveau de la couche liaison de données du système d'exploitation. Une fois ce paquet copié, il lui est appliqué un filtre BPF (Berkley Packet Filter), correspondant à l'affinage de ce que l'IDS cherche à récupérer comme information.
Il se peut que certains paquets soient ignorés car sous une forte charge, l'OS ne le copiera pas.
Le comportement de la libpcap est différent dans le monde BSD, puisqu'il lui attache le fichier périphérique /dev/bpf, permettant ainsi aux NIDS de ne pas avoir besoin des droits super utilisateur pour capturer le trafic mais simplement de pouvoir lire sur ce fichier sur lequel les filtres sont directement compilés.
Aussi, le trafic analysé n'est pas forcément égal à celui du trafic entrant, étant donné que la libpcap agit à une couche en dessous du pare-feu (qui agit au niveau réseau).
Signatures
Les bibliothèques de signatures (approche par scénario) rendent la démarche d'analyse similaire à celle des antivirus quand ceux-ci s'appuient sur des signatures d'attaques. Ainsi, le NIDS est efficace s'il connaît l'attaque, mais inefficace dans le cas contraire. Les outils commerciaux ou libres ont évolué pour proposer une personnalisation de la signature afin de faire face à des attaques dont on ne connaît qu'une partie des éléments. Les outils à base de signatures requièrent des mises à jour très régulières.
Les NIDS ont pour avantage d'être des systèmes temps réel et ont la possibilité de découvrir des attaques ciblant plusieurs machines à la fois. Leurs inconvénients sont le taux élevé de faux positifs qu'ils génèrent, le fait que les signatures aient toujours du retard sur les attaques de type 0day et qu'ils peuvent être la cible d'une attaque.
Alertes
Les alertes sont généralement stockées dans le syslog. Cependant il existe une norme qui permet d'en formaliser le contenu, afin de permettre à différents éléments de sécurité d'interopérer. Ce format s'appelle IDMEF (pour Intrusion Detection Message Exchange Format) décrit dans la RFC4765. IDMEF est popularisé par le projetPrelude, qui offre une infrastructure permettant aux IDS de ne pas avoir à s'occuper de l'envoi des alertes. Cela permet aux IDS de n'avoir qu'à décrire les informations qu'il connaît et Prelude se charge de le stocker pour permettre une visualisation humaine ultérieurement.
La recherche de motif (pattern matching)
La recherche de motif est ce qui permet à un NIDS de trouver le plus rapidement possible les informations dans un paquet réseau. Il existe différents algorithmes de recherche de motif. Il y a ceux qui sont conçus pour renvoyer des négatifs le plus rapidement possible comme E2xB, d'autres comme Boyer-Moore (BM) qui sont intéressants lorsqu'il y a peu d'informations stockées en mémoire. Il est convenu que BM est plus efficace que les autres quand il y a moins de 100 signatures. Il existe aussi des extension à Boyer-Moore qui s'affranchissent de ces restrictions. Ou encore des algorithmes qui sont plus précis et donc plus intéressants dans le cas des NIDS comme Knuth-Morris-Pratt (KMP).
Dans le cas d'un NIDS, la recherche de motif est souvent le nœud d'étranglement. Pouvant consommer plus de quatre-vingt pourcent de temps de calcul.
E2xb a été spécialement conçu pour répondre aux besoins des NIDS. Il s'agit d'un algorithme de recherche de motif de domaine spécifique à la détection d'intrusion. C'est un algorithme d'exclusion car il part du principe que la plupart des paquets réseau ne correspondent pas à une signature qui identifie une tentative d'intrusion.