Pour les deux configurations étudiées ci-avant, aucune distinction de protocole n'a été effectuée. Pour affiner le processus d'enregistrement et de suivi des communications réseau, il est possible de distinguer les caractéristiques de chacun des protocoles autorisés.
Le protocole ICMP décrit dans le document standard RFC792 Internet Control Message Protocol est une pièce essentielle du modèle TCP/IP. Il est principalement utilisé pour rapporter les conditions d'erreurs sur les réseaux. Cependant, les caractéristiques actuelles du protocole ne recommandent aucun contrôle de validation sur les messages d'erreur reçus. Ce protocole laisse donc la porte ouverte à une grande variété d'attaques qui peuvent être effectuées contre TCP à l'aide de messages ICMP. Ces attaques comprennent la réinitialisation de connexion, la réduction du débit de sortie, les dégradations de performances. Toutes ces attaques peuvent être réalisées depuis des réseaux distants, sans la nécessité d'analyser les paquets qui correspondent à la connexion TCP attaquée.
Alors que les implications sur la sécurité du protocole ICMP sont connues depuis longtemps, tous les systèmes n'ont pas mis en application des contrôles de validation sur les messages d'erreur reçus pour réduire au minimum l'impact de ces attaques.
Au niveau du noyau Linux, les responsables du sous-système
réseau ont décidé de ne plus traiter les messages de type 4
source-quench.
On dispose des ressources suivantes pour débuter l'étude du protocole ICMP.
-
La liste des types de messages ICMP est enregistrée par l'Internet Assigned Numbers Authority (IANA) : ICMP parameters.
-
Le Tutoriel iptables contient une section complète de présentation des caractéristiques du protocole ICMP.
-
Avec le protocole TCP, il est possible d'identifier les phases d'établissement, de maintien et de libération de connexion.
-
Avec le protocole UDP, il n'y a pas grand chose à identifier puisque ce protocole n'est pas orienté connexion et que le nombre des champs de l'en-tête est très limité.