Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pare-feu et paquets ICMP Type 11 (Time Exceeded)

6 réponses
Avatar
Jean-Marc Molina
Bonjour,

J'utilise Sygate Personal Firewall comme pare-feu et je me demande si je
dois autoriser ou non l'envoi de paquets "ICMP Type 11 (Time Exceeded)" par
certains programmes : serveur MySQL, sauvegarde de données. Ces envois de
paquets m'étonnent car d'après l'article "ICMP Time Exceeded" [1] de
Wikipedia il semble que ce message ICMP soit envoyé en cas de problème. Dans
l'article "Les Firewalls" de Stéphane Catteau on peut lire « Autorisez les
paquets ICMP [.] "Time Exceeded for a Datagram" à rentrer ; » donc j'imagine
qu'il faut par contre les interdire à sortir. Pour l'instant je refuse
systématiquement l'envoi de tels paquets.

Sinon j'aimerai aussi comprendre pourquoi de tels paquets sont envoyés. Au
départ je pensais que c'était un paquet spécial permettant aux logiciels de
se mettre à jour mais la lecture de l'article Wikipedia m'a fait comprendre
que ça n'avait rien à voir. Ces paquets sont envoyés à un problème sur le
réseau mais lequel ? Le refus d'un précédent envoi ou de la réception d'un
paquet ?

Merci par avance pour votre aide et bonne journée,
JM.

Notes :
* [1] http://en.wikipedia.org/wiki/ICMP_Time_Exceeded

6 réponses

Avatar
Pascal Hambourg
Salut,


J'utilise Sygate Personal Firewall comme pare-feu et je me demande si je
dois autoriser ou non l'envoi de paquets "ICMP Type 11 (Time Exceeded)" par
certains programmes : serveur MySQL, sauvegarde de données. Ces envois de
paquets m'étonnent car d'après l'article "ICMP Time Exceeded" [1] de
Wikipedia il semble que ce message ICMP soit envoyé en cas de problème. Dans
l'article "Les Firewalls" de Stéphane Catteau on peut lire « Autorisez les
paquets ICMP [.] "Time Exceeded for a Datagram" à rentrer ; » donc j'imagine
qu'il faut par contre les interdire à sortir. Pour l'instant je refuse
systématiquement l'envoi de tels paquets.


Le message ICMP de type 11 a deux formes :
- "time to live exceeded in transit", code 0
- "fragment reassembly time exceeded", code 1

Une simple machine "hôte" (par opposition à un routeur) n'est pas censée
émettre le code 0. En revanche elle peut émettre le code 1. Mais c'est
une fonctionnalité intégrée à la pile TCP/IP du système et transparente
pour les applications, elles ne sont pas censées l'envoyer elles-même.

Sinon j'aimerai aussi comprendre pourquoi de tels paquets sont envoyés.


- Type 11 code 0 "time to live exceeded in transit" :

Un routeur peut détruire un paquet et renvoyer à son émetteur un message
d'erreur ICMP type 11 code 0 lorsque ce paquet est trop "vieux". Cet
"âge" est matérialisé par un champ de l'en-tête IP, le TTL (Time to
Live, ou durée de vie restante) dont la valeur est diminuée de un à
chaque fois que le paquet traverse un routeur. Lorsque le TTL atteint
zéro, le paquet "meurt". Le but est d'éviter qu'un paquet circule
indéfiniment sur le réseau par exemple à cause d'une boucle de routage.

- Type 11 code 1 "fragment reassembly time exceeded" :

Lorsque la taille d'un datagramme IP est supérieure au MTU d'une liaison
(taille maximum de paquet pouvant être transmise sur cette liaison), le
datagramme doit être fragmenté en morceaux de taille inférieure ou égale
à ce MTU et chaque fragment est transmis individuellement au
destinataire du datagramme. Celui-ci doit recevoir tous les fragments
pour reconstituer (réassembler) le datagramme originel complet. Si un
seul fragment manque, le datagramme incomplet ne peut être accepté. Les
fragments peuvent prendre des chemins différents, arriver dans le
désordre, avec des délais différents... La pile TCP/IP du destinataire
s'impose une limite de temps à partir de la réception du premier
fragment pour recevoir tous les fragments restants. Si cette limite de
temps est dépassée, le datagramme incomplet est détruit et un message
d'erreur ICMP type 11 code 1 est envoyé à l'émetteur du datagramme original.

Avatar
Jean-Marc Molina
Pascal Hambourg wrote:
Une simple machine "hôte" (par opposition à un routeur) n'est pas
censée émettre le code 0. En revanche elle peut émettre le code 1.
Mais c'est
une fonctionnalité intégrée à la pile TCP/IP du système et
transparente pour les applications, elles ne sont pas censées
l'envoyer elles-même.


Je vérifierai quel est le code la prochaine fois que mon pare-feu affiche la
boîte de dialogue. À mon avis code 1 car certains programmes ne fonctionnent
qu'en client, cas de Cobian Backup que j'utilise pour sauvegarder mes
données.

Ce qui m'étonne aussi c'est que les programmes envoient ces paquets en même
temps. Parfois 3 programmes d'un coup, une autre fois seulement le logiciel
de sauvegarde.

Merci pour cette réponse éclaire et détaillée.

Avatar
Riquer Vincent
Jean-Marc Molina wrote:
Ce qui m'étonne aussi c'est que les programmes envoient ces paquets en même
temps. Parfois 3 programmes d'un coup, une autre fois seulement le logiciel
de sauvegarde.


Cela dit, ICMP est une partie cruciale d'IP, en filtrer trop risque de
poser bien plus de problèmes que de tout laisser passer...
En général, il vaut mieux limiter le nombre de paquets ICMP par unité de
temps que de bloquer ICMP.

Exemple de problèmes qu'on risque de rencontrer en étant trop sévère vis
à vis d'ICMP en général :

* Plus de connectivité parce qu'on casse le mécanisme de découverte du
PMTU (par exemple si l'ISP change le MTU sans prévenir -- cas vécu)

* On arrive pas à savoir où une liaison est défaillante avec
traceroute/tracepath car on ne reçoit pas les ICMP type 11 code 0

* On perd du temps à attendre le time-out TCP (ou on perd des paquets en
UDP) parce qu'on ne reçoit pas le ICMP type 11 code 1 sur des paquets
fragmentés.

IP ne fait qu'un "best effort" pour livrer les paquets, et ICMP sert à
prévenir qu'il n'y est pas parvenu, donc ICMP est important.

Bien sûr il vaut mieux quand même se protéger des floods ICMP, encore
que je ne sais pas si cette technique est encore très utilisée ...

Avatar
Jean-Marc Molina
Riquer Vincent wrote:
Bien sûr il vaut mieux quand même se protéger des floods ICMP, encore
que je ne sais pas si cette technique est encore très utilisée ...


Merci encore pour ces précisions. Sinon il ne s'agit pas d'un "flood"
puisque les paquets sont envoyés, je n'en reçois pas. Par contre il m'arrive
parfois de recevoir des avertissements concernant des tentatives de
connexions à certains ports. J'imagine que des "hackers" passent leur temps
à scanner les IPs pour trouver une faille quelconque à exploiter.

Avatar
Jean-Marc Molina
Jean-Marc Molina wrote:
Je vérifierai quel est le code la prochaine fois que mon pare-feu
affiche la boîte de dialogue. À mon avis code 1 car certains
programmes ne fonctionnent qu'en client, cas de Cobian Backup que
j'utilise pour sauvegarder mes données.


C'est donc bien le code 1, extrait des infos détaillées d'une boîte de
dialogue affichée par le pare-feu :
« [--]
File Description : NT Kernel & System (ntoskrnl.exe)
File Path : C:WINNTsystem32ntoskrnl.exe
[--]

Connection origin : local initiated
Protocol : ICMP
[--]
ICMP Type : 11 (Time Exceeded for Datagram)
ICMP Code : 1 (Fragment Reassembly Timer Expired - from host)
[--] »

Avatar
Pascal Hambourg
Jean-Marc Molina wrote:

Je vérifierai quel est le code la prochaine fois que mon pare-feu
affiche la boîte de dialogue. À mon avis code 1 car certains
programmes ne fonctionnent qu'en client, cas de Cobian Backup que
j'utilise pour sauvegarder mes données.



Le code des messages ICMP "Time Exceeded" n'a n'a rien à voir avec le
fonctionnement de programmes en client ou serveur mais avec le
fonctionnement de la machine en routeur (passerelle) ou en simple "hôte"
(station ou serveur).

C'est donc bien le code 1, extrait des infos détaillées d'une boîte de
dialogue affichée par le pare-feu :
« [--]
File Description : NT Kernel & System (ntoskrnl.exe)
File Path : C:WINNTsystem32ntoskrnl.exe


C'est le noyau du système, et donc probablement la pile TCP/IP, qui
envoie ce message. Il n'y a aucune raison de le bloquer. En revanche si
c'était une application lambda ce serait plus surprenant.