赞
踩
首先对ICMP报文内容进行简单的介绍:
ICMP(Internet Control Message Protocol)报文的内容主要由报头和可选的数据负载组成,其结构相对简单,旨在携带网络层的控制信息和差错报告。下面是ICMP报文的一般格式:
报头(Header):
数据负载(Data):
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回显最常见的应用实例是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超时响应在以下场景中常见:
因此,TTL超时响应是网络通信中一个重要且实用的机制,既有助于维护网络的稳定运行,也方便网络诊断和安全防护。
不响应ICMP回显(Echo)请求: ICMP回显请求通常指的是“ping”操作,用来测试目标主机是否可达。当配置系统或网络设备“不响应ICMP回显请求”,意味着当收到ping这样的ICMP Echo Request时,系统不会返回ICMP Echo Reply。这样做可以提高安全性,因为外部用户无法轻易验证系统是否存在或在线,从而增加了攻击者收集网络信息的难度。
限制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超时的响应,例如直接丢弃TTL=1的ICMP报文:
- system-view
- icmp ttl-exceeded drop
注意:具体命令可能根据设备型号和操作系统的不同而有所变化,具体可查阅官方产品文档或在评论区留言讨论
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。