Dois-je bloquer ICMP ?

Dois-je bloquer ICMP pour des raisons de sécurité ou de performance ?

Beaucoup de personnes pensent, à tort, qu’ICMP présente un risque de sécurité pour le réseau. Dès lors, ICMP est bloqué sur les firewalls et parfois même sur les routeurs et autres équipements réseau. C’est peut-être vrai si on autorise tout ICMP, mais c’est certainement faux si on autorise uniquement les bonnes choses de manière restrictive.

Comme nous allons le voir, ICMP est essentiel au bon fonctionnement du réseau. De plus, il simplifie grandement le dépannage de problèmes réseau complexes.

1. Ping ou echo request et echo reply

Nous connaissons tous « ping » et nous l’utilisons beaucoup. À l’intérieur du réseau, il n’y aucune bonne raison de bloquer le ping et les réponses. Certaines personnes prétendent que d’autoriser le ping permet de rendre les équipements découvrables par le réseau. Si vous êtes vraiment soucieux du risque de découvrabilité de votre réseau, utilisez de la micro-segmentation et souvenez-vous que votre serveur écoute certainement déjà sur un port, par exemple le port 443 pour votre serveur web intranet.

Nous avons déjà tous entendu la phrase plutôt triste « de toute manière, la passerelle n’a jamais répondu » en essayant de dépanner un problème de réseau, sans savoir si nous faisons face à un problème de connectivité physique, d’isolation L2, ou de règles d’un firewall.

Pour cette raison, autorisez les messages suivants :

IPv4

Echo request (type 8, code 0)
Echo reply (type 0, code 0)

IPv6

Echo Request (Type 128, Code 0)
Echo Reply (Type 129, Code 0)

2. Fragmentation requise

Indispensable au bon fonctionnement du protocole TCP, Path MTU Discovery est une technique qui permet de déterminer la taille MTU du chemin entre la source et la destination. On admettra que l’équipement présentant le plus petit MTU définira la taille maximale du MTU à utiliser.

Si deux hôtes distants on un MTU plus faible que celui communiqué localement, il y a de fortes probabilités pour que la communication ne fonctionne pas correctement de bout en bout et que votre trafic finisse discrètement dans un trou noir.

En IPv4, on utilise un drapeau « DF » (don’t fragment) qui retournera « fragmentation required », alors qu’en IPv6, les paquets ne sont pas fragmentés par le routeur et retourne un « packet too big » comprenant la taille MTU à honorer. Sans cette réponse, la source effectuera une retransmission, qui continuera en boucle d’essayer de transmettre sur le lien, comme si celui-ci présentait une perte de paquets. Cette erreur est particulièrement pernicieuse à dépanner, car la communication TCP est bel et bien établie.

Dans les systèmes d’exploitation modernes, une solution a été imaginée autour de la RFC 4821 pour régler ce problème en se reposant sur la technique de PLPTUD, qui découvre le MTU du chemin en augmentant progressivement le MSS jusqu’à trouver la bonne valeure pour le chemin. Mais autoriser ICMP permet de s’affranchir de beaucoup de problèmes.

IPv4

Fragmentation required (Type 3, Code 4)

IPv6

Packet too big (Type 2, Code 0)

3. Traceroute

Traceroute est un outil permettant de faire du dépannage réseau avancé. Il permet de savoir beaucoup de choses et fonctionne de manière assez spéciale en envoyant un paquet avec un TTL de 1 au premier routeur qui répondra avec un message Time exceed et son adresse IP, puis la source incrémentera le TTL ainsi de suite afin de construire une vue d’ensemble du chemin.

Lorsque vous faites un traceroute et que chaque saut répond avec trois étoiles * * * cela signifie que les messages ICMP time exceeded sont bloqués.

Si vous désirez en savoir plus sur traceroute, voici une vidéo qui vous en dira plus que vous pouvez souhaiter en savoir sur le sujet (en anglais) :

Explication du fonctionnement de traceroute

Dès lors, autorisez les messages ICMP suivants :

IPv4

Time exceeded (Type 11, Code 0)

IPv6

Time exceeded (Type 3, Code 0) 

Photo d’illustration par Giuseppe Milo

0

Publié par

Greg

Greg

Greg est l’instigateur du blog graycode. À travers ce blog, mon but est de partager des informations pour les lecteurs débutants ou avancés qui souhaitent découvrir de nouveaux sujets, partager et comparer leurs connaissances et faire profiter les autres du savoir qui est a porté de clavier. J’aime parler infrastructure, réseau, cloud, sécurité et technologies au sens large, avec une grande passion pour tout ce qui touche au MP-BGP. Je partage des exemples directement sortis de mon lab personnel.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

treize − 1 =