{"id":77,"date":"2026-08-06T18:49:21","date_gmt":"2026-08-06T18:49:21","guid":{"rendered":"https:\/\/mrnetwork.nl\/index.php\/you-don-t-have-to-block-icmp-completely\/"},"modified":"2026-08-06T19:59:59","modified_gmt":"2026-08-06T19:59:59","slug":"you-don-t-have-to-block-icmp-completely","status":"publish","type":"page","link":"https:\/\/mrnetwork.nl\/index.php\/you-don-t-have-to-block-icmp-completely\/","title":{"rendered":"You don&#8217;t have to block ICMP completely"},"content":{"rendered":"<p><a href=\"\/\" class=\"back-link\">Terug naar home<\/a><\/p>\n<h1>You don&#8217;t have to block ICMP completely<\/h1>\n<div class=\"paragraph\">This is something that I typically see all over the place, security administrators blocking the ICMP (Ping) protocol completely. Normally I am ok with that, after all ping is a troubleshooting tool and in some cases not the best troubleshooting tool to rely on. However, it&#8217;s when people think their network is more secure when they have blocked ICMP. The truth is you can actually allow the ICMP types that are required for troubleshooting purposes without compromising security. So let&#8217;s first consider what ICMP messages we typically use for troubleshooting:<\/div>\n<div class=\"paragraph\">\n<ol>\n<li>Echo Request &#8211; ICMP Type 8 Code 0<\/li>\n<li>Echo Replies &#8211; ICMP Type 0 Code&nbsp;0<\/li>\n<li>Time Exceeded &#8211; ICMP Type 11 Code 0<\/li>\n<li>Fragment needed but DF bit set &#8211; ICMP Type 3 Code 4<\/li>\n<\/ol>\n<\/div>\n<div class=\"paragraph\">Now we all know the echo request is the icmp packet from the host to the target, and the echo reply is response from target back to the host. The time exceeded packet is returned to the host &nbsp;when performing a traceroute. The fragment needed but DF bit set packet is used for path MTU discovery and can used to troubleshoot MTU issues, it basically replies back telling you the packet was dropped because it needed to be fragment but the DF (Do not fragment) bit was set on the packet so it could not be fragmented.<\/div>\n<div class=\"paragraph\">One ICMP parameter that should be blocked are ICMP fragments, fragmented ICMP packets can be used to cause DoS attacks. Remember ICMP packets typically send 64 bytes of data, so you should only see larger ICMP packets or expect fragments when testing MTU. (Other then that I can&#8217;t think of any other legit reason to see large ICMP packets). <a title=\"RFC 1858\" href=\"http:\/\/www.ietf.org\/rfc\/rfc1858.txt\" target=\"_blank\">RFC 1858<\/a> goes pretty in depth concerning the danger of IP Fragments, it&#8217;s definitely worth a read.<\/div>\n<div class=\"paragraph\">Now here is a configuration snippet that accomplishes everything I discussed here:<\/div>\n<div class=\"paragraph\">\n<div class=\"shell-wrap\">\n<p class=\"shell-top-bar\">TERMINAL<\/p>\n<ul class=\"shell-body\">\n<li>Router#sh run | include access-list 150                 <\/li>\n<li>access-list 150 remark ICMP ACL                         <\/li>\n<li>access-list 150 remark Block fragmented ICMP packets    <\/li>\n<li>access-list 150 deny ICMP any any fragments             <\/li>\n<li>access-list 150 remark Permit troubleshooting ICMP types<\/li>\n<li>access-list 150 permit icmp any any acho                <\/li>\n<li>access-list 150 permit icmp any any acho-reply          <\/li>\n<li>access-list 150 permit icmp any any time-exceeded       <\/li>\n<li>access-list 150 permit icmp any any packet-too-big      <\/li>\n<li>access-list 150 remark Deny any other ICMP messages     <\/li>\n<li>access-list 150 deny icmp any any                       <\/li>\n<li>access-list 150 remark Allow Other Traffic              <\/li>\n<li>access-list 150 permit ip any any                       <\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"paragraph\">Now if you want to learn about ICMP in greater detail check out <a title=\"RFC 972\" href=\"http:\/\/tools.ietf.org\/html\/rfc792\" target=\"_blank\">RFC 792<\/a>.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Terug naar home You don&#8217;t have to block ICMP completely This is something that I typically see all over the place, security administrators blocking the ICMP (Ping) protocol completely. Normally I am ok with that, after all ping is a troubleshooting tool and in some cases not the best troubleshooting tool to rely on. However, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"blank","meta":{"footnotes":""},"class_list":["post-77","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/pages\/77","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/comments?post=77"}],"version-history":[{"count":5,"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/pages\/77\/revisions"}],"predecessor-version":[{"id":182,"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/pages\/77\/revisions\/182"}],"wp:attachment":[{"href":"https:\/\/mrnetwork.nl\/index.php\/wp-json\/wp\/v2\/media?parent=77"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}