Solution 1 :
ICMP est bien plus que "traceroute" et "ping". Il est utilisé pour les commentaires lorsque vous exécutez un serveur DNS (port inaccessible) qui, dans un serveur DNS moderne, peut en fait aider à sélectionner une autre machine pour interroger plus rapidement.
ICMP est également, comme mentionné ci-dessus, utilisé pour la découverte de chemin MTU. Il y a de fortes chances que votre système d'exploitation définisse "DF" (ne pas fragmenter) sur les paquets TCP qu'il envoie. Il s'attend à récupérer un paquet ICMP "fragmentation requise" si quelque chose le long du chemin ne parvient pas à gérer cette taille de paquet. Si vous bloquez tous les ICMP, votre machine devra utiliser d'autres mécanismes de secours, qui utilisent essentiellement un délai d'attente pour détecter un "trou noir" PMTU et n'optimiseront jamais correctement.
De plus, vous devez vous demander pourquoi vous voulez bloquer ICMP. Qu'essayez-vous spécifiquement d'empêcher ici ? Il est assez clair que vous ne comprenez pas à quoi sert ICMP, ce qui est plutôt courant. Je serais extrêmement prudent en bloquant quelque chose que vous ne comprenez pas entièrement.
Pour rendre encore plus difficile l'apprentissage à ce sujet, de nombreux livres de pare-feu courants disent "bloquer ICMP" - il est clair que leurs auteurs n'ont jamais lu de RFC ou ont dû résoudre des problèmes liés à de tels conseils. C'est un mauvais conseil de bloquer tous les ICMP.
Maintenant, limiter le débit peut aussi faire mal. Si votre machine est occupée, ou même si elle ne l'est pas, vous pouvez obtenir une bonne quantité de trafic ICMP. Mon serveur Web reçoit probablement environ 10 à 100 paquets ICMP par minute, dont la plupart sont des découvertes PMTU. Même si quelqu'un choisit d'attaquer mon serveur avec des paquets ICMP d'un certain type, ce n'est vraiment pas si grave. Si votre machine accepte ne serait-ce qu'une seule connexion TCP (ssh, http, mail, etc.), il y a de fortes chances qu'il s'agisse d'un vecteur d'attaque plus important qu'un ICMP incompris ne le sera jamais.
Solution 2 :
ICMP est utilisé pour une gamme de fonctions de diagnostic (par exemple ping, traceroute) et de contrôle de réseau (par exemple découverte PMTU). Le blocage aveugle d'ICMP cause toutes sortes de brûlures d'estomac à d'autres personnes, et à moins que vous ne sachiez exactement ce que vous faites, vous devriez le laisser tranquille.
Solution 3 :
Je n'ai jamais compris pourquoi les gens horloge ICMP, comme dit ci-dessus, cela ne cause que des maux de tête à vous-même et aux autres. Vous pouvez déterminer si un hôte est en place assez facilement et tant qu'il est suffisamment limité pour ne pas être utilisé comme DOS, je n'ai jamais entendu de raisons impérieuses de le bloquer. (Si quelqu'un peut trouver une raison, merci de poster)
Solution 4 :
vous pouvez simplement essayer de limiter icmp de cette façon, il ne peut pas être utilisé comme attaque DOS. mais il existe beaucoup trop d'outils de dépannage comme ping, mtr (j'oublie l'équivalent Windows), traceroute (tracert), qui utilisent icmp. les laisser tomber entièrement est tout simplement insensé. C'est un bon moyen de vérifier si votre instance est active même si vous ne pouvez vous connecter à aucun port.
--limit 10/second
à vos règles ICMP est probablement une limite décente compte tenu de ce qu'un ordinateur peut réellement gérer.
Solution 5 :
Voici un autre point de vue, dans l'esprit de ce que suggère la théorie de la sécurité. D'autres affiches ont raison de dire que les pratiques de sécurité sont souvent trop zélées, mais il y a une bonne base pour la plupart d'entre elles.
La théorie de la sécurité est généralement que vous n'activez que CE DONT VOUS AVEZ BESOIN. D'autres choses (qui pourraient être utiles - par exemple, les réponses ping) peuvent être utilisées par un attaquant pour délimiter votre système, ou éventuellement comme vecteur d'attaque pour une vulnérabilité encore à découvrir.
Donc, en regardant les types de messages ICMP, de quoi avez-vous BESOIN pour un fonctionnement normal et correct de votre système ?
- réponse en écho (ping) - pas tellement
- destination inaccessible :de nombreuses informations utiles s'y trouvent. Désactivez-le et vous interrompez l'accès à votre serveur pour certains clients.
- source quench - obsolète depuis 1995, et apparemment supprimé des implémentations hôtes depuis (au plus tard) 2005. tools.ietf.org/html/rfc6633#section-1.
- redirection - presque certainement pas
- publicité et sollicitation de routeur - inutile si vous configurez statiquement vos routes, et pourrait être utilisé pour le DoS. Je le bloquerais à moins que vous ne sachiez que vous en avez besoin, et si vous en avez besoin, codez peut-être une règle pour n'accepter les informations que des routeurs connus possibles.
- ttl dépassé - pas seulement pour traceroute, vous indique que votre trafic n'atteint pas sa destination
...etc. Si vous voulez vraiment comprendre cela, découvrez les différents types ICMP et à quoi ils servent. L'article de wikipedia est un bon point de départ.
En pratique, le plus moche est la redirection; si vous voulez simplement faire quelque chose de rapide et d'utile, bloquez-le et autorisez le reste.
J'ajouterais que le suivi des connexions IPtables permettra le retour approprié des paquets ICMP pour les connexions actives. Donc, si vous utilisez conntrack, vous devriez pouvoir bloquer la plupart des entrées ICMP, tant que vous acceptez les paquets RELATED (avant de bloquer ICMP dans votre ensemble de règles).