Bonjour,
Il faudrait que tu donnes un peu plus de précisions, à savoir, question en premier lieu cruciale : sur quel OS ? Syn Flood distribué (utilisant des decoys) ou venant d'un seul host ?
Par exemple, sous Linux, la détection de syn flood est assez simple : il suffit d'analyser de façon régulière /proc/net/tcp et d'analyser la proportion de sockets positionné à SYN_RECV (Cf. man netstat). Sous Windows, c'est déjà plus compliqué, il faut au moins intégrer du sniffing (http://www.tcpdump.org/pcap.htm). Et dresser des statistiques. Cette solution est aussi retenue sous Linux si tu veux réellement faire un système de détection des intrusions complet et non seulement une détection de syn flood. Maintenant, la méthode bête et méchante : pour chaque paquet SYN reçu tu créé une structure lambda, pour chaque ACK tu la supprime. Ensuite, régulièrement, tu supprimes les SYN dont la durée de timeout a été dépassée. Si le nombre de SYN n'ayant pas abouti dépasse un certain seuil prédéfini, PAF. L'intégration de l'IA se fait à ce niveau précis. Comment fixer un seuil évolutif, en fonction des demandes d'un réseau non connu à l'avance ? En général, une période appellée "échantillonage" est lancée en premier lieu, dressant des statistiques sur la circulation, les pics de circulation, etc.. Notamment, on peut chercher pendant par exemple 2 jours le nombre maximum de connexion en attente active de confirmation sur le réseau et fixer le seuil de détection à 200% de ce maximum (ce qui est peu, on s'en rend vite compte à l'utilisation).
On peut donc avoir par exemple une entité de sniffing, une entité d'intégration à des statistiques, une entité qui recherche les SYN et les ACK, et une entité qui vérifie périodiquement la proportion de SYN et qui les compare aux stats.
Il faut savoir que l'application de l'IA en sécurité informatique est typiquement de type statistique.
Bonne chance,
-- Page personnelle : http://consulting.bases-hacking.org/
|