关于限制ICMP回显(ICMP Echo Reply)及TTL超时响应(ICMP Time Exceeded)可防止简单的网络探测和减轻DDoS攻击对网络的影响

首先对ICMP报文内容进行简单的介绍:

ICMP(Internet Control Message Protocol)报文的内容主要由报头和可选的数据负载组成,其结构相对简单,旨在携带网络层的控制信息和差错报告。下面是ICMP报文的一般格式:

  1. 报头(Header):

    • 类型(Type): 1字节,定义了ICMP报文的类型,取值范围从0到255,每个值对应一种特定的ICMP消息类型,如Echo Request (8)、Echo Reply (0)、Destination Unreachable (3)等。
    • 代码(Code): 1字节,为类型提供附加信息,进一步区分相同类型内不同情况的子类型,如在Destination Unreachable (类型3) 中,代码可以指明不可达的具体原因。
    • 校验和(Checksum): 2字节,覆盖整个ICMP报文,用于检测报文在传输过程中的完整性。计算方法是对ICMP报文的头部和数据执行二进制反码求和。
  2. 数据负载(Data):

    • 这部分是可变长度的,其内容和格式取决于ICMP报文的类型和代码。例如:
      • 对于Echo Request/Reply(类型8/0),数据负载通常包含发送方放置的信息,如发送时间戳或者自定义数据,以帮助进行回声测试或测量往返时间。
      • 对于Destination Unreachable (类型3),可能包含原始无法送达的数据报文的IP头部以及前8字节的数据,以便源主机知道哪个数据包未送达及原因。
      • 对于Time Exceeded (类型11),也可能携带导致TTL过期的数据包的部分内容,以供诊断。

ICMP报文由于其轻量级和功能多样性,在网络故障排除、路径探测、以及网络性能监测等方面发挥着重要作用。

ICMP报文内容

Type

Code

描述

0

0

Echo Reply(回显应答),用于响应Echo Request,常用于ping命令以检测目标的可达性。

3

0

Destination Unreachable - Net Unreachable(目标不可达 - 网络不可达),表示无法到达目标网络。

3

1

Destination Unreachable - Host Unreachable(目标不可达 - 主机不可达),表示目标主机不存在或不可达。

3

2

Destination Unreachable - Protocol Unreachable(目标不可达 - 协议不可达),目标主机不支持请求数据报中的协议。

3

3

Destination Unreachable - Port Unreachable(目标不可达 - 端口不可达),目标主机上的端口没有进程监听。

5

0

Redirect - For Network(重定向 - 对网络),路由器通知主机应该使用另一个网关。

8

0

Echo Request(回显请求),用于测试目的地址的可达性和响应时间,是ping命令的核心部分。

11

0

Time Exceeded(超时),当IP数据包生存时间(TTL)减少到0时产生。

12

0

Parameter Problem(参数问题),指出IP头或数据报中有错误的参数。

4

0

Source Quench(源抑制),已废弃,在旧版TCP/IP中用于拥塞控制,现已被更现代的机制替代。

13

0

Timestamp Request(时间戳请求),请求接收方填充当前时间并回送。

14

0

Timestamp Reply(时间戳应答),回应Timestamp Request,携带接收和发送时间戳。

15

0

Information Request(信息请求),主要用于早期ARPANET,现在很少使用。

16

0

Information Reply(信息应答),响应Information Request,同样很少使用。

ICMP回显(Internet Control Message Protocol Echo)是ICMP协议中的一部分,主要用于网络诊断和探测。它包含两种类型的报文:ICMP回显请求(Echo Request)和ICMP回显应答(Echo Reply)。

ICMP回显请求(Echo Request)

  • 类型(Type): 8
  • 代码(Code): 0
  • 用途:由源主机发送给目标主机,用于测试目标主机是否可达以及网络连接状况。
  • 数据内容:请求报文的数据部分可以包含任何数据,通常用于填充或调整数据包的大小,以便进行网络测试或测量延迟等。数据部分还包含一个16位的标识符(Identifier  ID)和一个16位的序列号(Sequence Number   Seq),标识符用于匹配请求和响应,序列号用于区分多个请求。

ICMP回显应答(Echo Reply)

  • 类型(Type): 0
  • 代码(Code): 0
  • 用途:作为对ICMP回显请求的响应,由目标主机发回给源主机,确认收到了请求并提供响应。
  • 数据内容:应答报文的数据部分会复制请求报文中的数据内容,包括标识符和序列号,使得源主机可以确认收到的响应与之前发送的请求相对应。

ICMP回显最常见的应用实例是ping命令。当在命令行输入ping 目标IP地址时,系统就会发送一个ICMP回显请求到指定的IP地址,如果目标可达,它会回复一个ICMP回显应答。通过测量请求与应答之间的时间差,可以评估网络延迟,而是否收到应答则可以用来判断目标主机是否在线或可达。


TTL(Time to Live)超时响应是ICMP(Internet Control Message Protocol)中的一种错误消息类型,具体为类型为11、代码为0的ICMP报文,称为“Time Exceeded”。这种报文在网络中被用来通知数据包的发送方,数据包在到达目的地之前因为生存时间耗尽而被丢弃了。

当一个IP数据包在网络中传输时,它会携带一个TTL值,这个值是一个8位的无符号整数,初始值由发送方设置,通常操作系统会有默认值,比如Linux默认是64,Windows默认是128。每经过一个路由器,这个TTL值会被减1。如果TTL减到0,路由器就不会再转发这个数据包,而是丢弃它,并且生成一个ICMP Time Exceeded消息发回给数据包的源头,表明数据包没有达到目的地就“死亡”了。

TTL超时响应在以下场景中常见:

  1. 网络诊断:使用traceroute/tracert命令时,就是故意设置IP数据包的TTL值从1开始递增,通过接收ICMP Time Exceeded消息来确定数据包到达每一跳路由器所需的时间以及路径。
  2. 检测环路:TTL有助于防止数据包在网络中无限循环。如果一个数据包因为路由错误而在网络中不断循环,每次经过路由器TTL都会减1,最终会因为TTL减到0而被丢弃,并触发TTL超时响应,这可以视为一种网络健康检查机制。
  3. 安全策略:一些安全设备或策略会利用TTL超时作为一种防御机制,比如通过降低传出数据包的TTL值,可以限制数据包在网络中的传播范围,从而增加攻击者探测或利用网络结构的难度。

因此,TTL超时响应是网络通信中一个重要且实用的机制,既有助于维护网络的稳定运行,也方便网络诊断和安全防护。


  1. 不响应ICMP回显(Echo)请求: ICMP回显请求通常指的是“ping”操作,用来测试目标主机是否可达。当配置系统或网络设备“不响应ICMP回显请求”,意味着当收到ping这样的ICMP Echo Request时,系统不会返回ICMP Echo Reply。这样做可以提高安全性,因为外部用户无法轻易验证系统是否存在或在线,从而增加了攻击者收集网络信息的难度。

  2. 限制ICMP TTL超时(Time Exceeded)响应: 当一个数据包在网络中传输时,其头部包含一个TTL(Time to Live)字段,用于限制数据包在网络中的生存时间,避免循环路由等问题。每当数据包经过一个路由器,TTL值就会减1,当TTL减至0时,路由器会丢弃该数据包并通常会向数据包的发送方发送一个ICMP Time Exceeded消息。如果你配置系统“限制ICMP TTL超时响应”,则意味着即使数据包因TTL耗尽被丢弃,也不一定发送这种错误通知,这同样可以作为一种安全措施,因为这减少了对外部潜在攻击者的信息暴露。


    使用ACL(Access Control List ,访问控制列表)限制ICMP TTL超时响应以及ICMP Echo Reply响应:

1.创建ACL规则:首先,创建一个ACL规则来匹配并拒绝发送ICMP Time Exceeded和ICMP Echo Reply消息。

system-view
acl number 3000
rule 1 deny icmp icmp-type information-reply (rule 1 deny icmp icmp-type 16 0
)
rule 2 deny icmp icmp-type ttl-exceeded(rule 2 deny icmp icmp-type 11 0
)

  • INTEGER<2000-2999>:这是华为设备中基本访问控制列表(Basic ACL)的编号范围。基本ACL主要依据数据包的源IP地址来过滤流量,常用于简单的网络安全控制,比如限制特定IP地址段的网络访问。

  • INTEGER<3000-3999>:这个范围对应的是高级访问控制列表(Advanced ACL)。与基本ACL相比,高级ACL提供了更丰富的匹配条件,除了源IP地址外,还可以根据目的IP地址、端口号等信息来过滤流量,适用于更复杂、细致的访问控制策略。

  • INTEGER<4000-4999>:这个范围用于指定第二层ACL(L2 ACL)。L2 ACL主要基于MAC地址、VLAN ID或者二层协议类型等第二层信息来过滤数据包,适用于需要在链路层实施访问控制的场景,比如在交换机上基于MAC地址阻止某些设备间的通信。

2.应用ACL到接口:将配置好的ACL应用到出方向的接口上,以阻止这些特定的ICMP响应离开设备

interface GigabitEthernet 0/0/1
traffic-filter outbound acl 3000

这样配置后,从该接口出去的ICMP TTL超时响应和ICMP Echo Reply响应将会被拒绝,从而达到限制这类ICMP报文的目的。请注意,这样的配置也可能会影响网络故障排查和某些依赖ICMP响应的应用,因此在实施前应充分考虑网络管理和维护的需求。

还可以使用专门命令限制ICMP TTL超时响应

华为设备还提供了更直接的命令来处理ICMP TTL超时的响应,例如直接丢弃TTL=1的ICMP报文:

system-view
icmp ttl-exceeded drop 

注意:具体命令可能根据设备型号和操作系统的不同而有所变化,具体可查阅官方产品文档或在评论区留言讨论

  • 34
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在 Windows 7 的防火墙出站规则中禁用 ICMP 类型为 echo-reply(类型 0)、time-exceeded(类型 11)、destination-unreachable(类型 3)的 ICMP 包,您可以按照以下步骤进行操作: 1. 打开控制面板,选择 "系统和安全"。 2. 在 "系统和安全" 页面中,选择 "Windows 防火墙"。 3. 在左侧导航栏中,选择 "高级设置"。 4. 在 "Windows 防火墙与高级安全" 窗口中,选择 "出站规则"。 5. 在右侧窗口中,选择 "新建规则"。 6. 在 "新建出站规则向导" 中,选择 "自定义" 并单击 "下一步"。 7. 在 "程序" 页面中,选择 "所有程序" 并单击 "下一步"。 8. 在 "协议和端口" 页面中,选择 "ICMPv4" 并单击 "自定义"。 9. 在 "自定义 ICMP 设置" 中,找到 "类型" 列表,并移除勾选 "请求(0)"、"超时(11)" 和 "目标不可达(3)"。 10. 单击确定,然后单击 "下一步"。 11. 在 "作用于这些规则的范围" 页面中,选择适用于您的网络连接的选项,并单击 "下一步"。 12. 在 "配置名称" 页面中,为规则命名并提供可选描述。完成后,单击 "完成"。 通过以上步骤,您已成功创建了一个出站规则,在防火墙中禁用了 ICMP 类型为 echo-reply(类型 0)、time-exceeded(类型 11)、destination-unreachable(类型 3)的 ICMP 包。请注意,这只是一种设置方式,具体操作可能因您的网络配置和需求而有所不同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Network 笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值