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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal Hambourg
Le #884335
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.

Jean-Marc Molina
Le #884333
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.

Riquer Vincent
Le #884147
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 ...

Jean-Marc Molina
Le #884145
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.

Jean-Marc Molina
Le #883747
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)
[--] »

Pascal Hambourg
Le #883746
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.


Publicité
Poster une réponse
Anonyme