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ègleflags
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éeExemple : (flags:A;ack:0;msg:"NMap TCP ping")
TTL
Teste la valeur du TTLExemple : (alert tcp any any -> any any(msg: “Traceroute";TTL:1)
resp
Met en œuvre des réponses flexiblesExemple : (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.
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.