IDS-IPS

NIDS & NIPS (Network Intrusion & Prevention System)

Un peu d'histoire

Historiquement TCPDump représente le premier NIDS. Le principe de fonctionnement d'un NIDS est basé sur le fait qu'un interface de la machine faisant office de NIDS aura une interface en mode « promiscuous », faisant remonter tous les paquets qu'elle voit transiter sur le réseau, même si ces derniers ne sont pas à destination de la machine elle même.
Lorsqu'une intrusion sera détectée, le NIDS enverra un avertissement à l’administrateur (par Syslog, logfile, mail etc).

Positionnement au sein du réseau

L'idéal est d'avoir une machine disposant de plusieurs interfaces réseaux. Ainsi, on utilisera une interface spécifiquement pur effectuer le monitoring du réseau, et on utilisera une interface différente pour envoyer les notifications à l'administrateur.

On voit sur le schéma précédent que si l'on place notre NIDS en position 3, on analysera les paquets transitant entre internet et notre réseau interne ainsi que notre DMZ, mais l'on n'analysera pas les flux internes entre notre réseau et la DMZ. De plus, positionner le système de NIDS en amont du routeur/firewall fera que l'on recevra énormément de trafic à analyser, le firewall n'ayant pas déjà effectué un premier filtrage.
En position 2, on analysera le flux internet/DMZ, et réseau/DMZ, mais pas internet/réseau interne.
Enfin en position 1, on analysera le flux entre le réseau interne et internet/DMZ.
Pour optimalité, il faudrait placer des NIDS en positions 1 et 2.

Snort

Nous allons étudier Snort, NIDS le plus répandu et utilisé.

Quelques caractéristiques :

> Open source
> Peu couteux en ressources
> Pas d’interface graphique
    De base, Snort ne possède pas d'interface graphique. Cependant, il existe un grand nombre d'interface graphique développées par des organismes tiers, le plus souvent en utilisant la technologie Php/Mysql.
> Grande base de signatures mise à jour
> Gestion du réassemblage
> Analyse protocolaire (ex:ping of death) et pattern matching
> 3 modes de fonctionnement :
    Sniffer de paquets
    Logger de paquets
    Détection / Prévention d’intrusions
> Langage de description des règles

Créer ses propres règles

La syntaxe générale des règles est la suivante :

Action protocole @src #port_src ->|<> @dest #port_dest [(options_de_règle)]

Où Action peut avoir les valeurs :
alert : remontera une alerte à l'administrateur.
log : enregistrera la détection dans un fichier de journal.
pass : ne rien effectuer.
activate : permet d'activer une autre règle, qui sera alors de type dynamic.
dynamic : définit une règle qui sera activable par une autre.

Et protocole :
tcp/udp/icmp

Options de règle

La syntaxe des options d'une règle est la suivante :
(mot_clé:valeur;mot_clé2:valeur2;…)

15 mots clés sont disponibles : ack,msg, flags, react, resp, content-list, …
msg
Description de la règle
flags
Test des drapeaux TCP (ACK, SYN…), opérateur logique (+,*,!)
Exemple : (flags:SF;msg:"SYN FIN scan")
ack
Teste le champ d’acquittement TCP pour une valeur donnée
Exemple : (flags:A;ack:0;msg:"NMap TCP ping")
TTL
Teste la valeur du TTL
Exemple : (alert tcp any any -> any any(msg: “Traceroute";TTL:1)
resp
Met en œuvre des réponses flexibles
Exemple : (alert tcp any any -> 192.168.0.1/24 1524 (flags:S; resp:rst_all; msg: "Root shell backdoor attempt";)
Valeur : rst_all - envoie des paquets TCP_RST dans les deux directions
react
Réponse active (block, msg) sur connexions HTTP.
Exemple : (alert tcp any any <> 192.168.0.1/24 80 (content-list: "adults"; msg: “Adult sites"; react: block,msg)

Réponse des NIPS

Un NIPS pourra générer des paquets de type TCP FIN et ICMP Host Unreachable pour bloquer les tentatives d'intrusion.

Cependant, dans le cas de faux positif, on fermera des connexions non malicieuses.
C'est pourquoi pour certaines alertes on va préférer les enregistrer dans de fichiers de log plutôt que d’avoir une réponse fermant la connexion des hôtes.


Autres actions possibles des NIPS :

> Reconfiguration d’équipements tiers
> Envoi d’un trap SNMP à un agent de supervision
> Envoi d’un E-mail à un ou plusieurs utilisateurs
> Journaliser une attaque
> Sauvegarder les paquets suspicieux
> Démarrage d’une application
> Envoi d’un RST_KILL : construction d’un paquet TCP FIN.
> Notification visuelle d’une alerte.

D'autres N-IDS/N-IPS

parmi la multitude de NIDS/NIPS, on peut aussi citer WatchGuard, NetScreen, TopLayer, etc.