什么是ICMP协议,如何防护ICMP攻击

一.什么是ICMP 

ICMP(Internet  Control Message  Protocol)是互联网控制报文协议,是TCP/IP协议族的一个子协议。它主要用于在IP网络中传递控制信息和错误消息,是IP协议的补充。ICMP协议是一种无连接协议,它不需要建立连接,也不需要维护状态,只需要发送报文和接收报文。

ICMP协议常用于网络故障诊断、网络管理和网络控制等方面,可以用来检测网络是否可达、计算延迟、跟踪网络路径、控制流量等。ICMP协议的报文分为两种:差错报文和询问报文。差错报文用于通知发送端有错误发生,询问报文用于向目的主机发出请求,获取网络状态和信息。

常见的ICMP报文包括ping请求和ping响应报文、traceroute报文、路由器通告报文、源站选路报文、重定向报文等。在网络通信中,ICMP协议通常与其他协议一起使用,如ping命令使用ICMP协议来测试网络是否可达,traceroute命令使用ICMP协议来追踪网络路径。

 二.IDMP的工作原理

 ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。

在网络中经常会使用到ICMP协议,比如经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文,IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。 

 

 

 三.如何在网络故障排除中使用ICMP

1.使用Ping测试连通性

Ping是一种基于ICMP的网络诊断工具,通过发送ICMP回显请求(Echo Request)报文并等待回显应答(Echo Reply)报文来检测两个网络节点之间的连通性。Ping可以帮助您确定网络节点是否在线,以及网络延迟(往返时间,RTT)。

2.使用Traceroute诊断路径问题

Traceroute是另一种基于ICMP的网络诊断工具,通过发送一系列具有递增生存时间(TTL)的ICMP报文来确定数据包在网络中的传输路径。Traceroute可以帮助您识别网络中的路由问题、循环和延迟瓶颈。

3.分析ICMP错误报文

在网络故障排除过程中,关注ICMP错误报文(如目的不可达、超时、重定向等)可以帮助您发现网络问题的根源。例如,目的不可达报文可能表明路由问题或防火墙阻止了数据包的传输。

4.使用ICMP路由器发现

ICMP路由器发现报文可以帮助您了解网络中的路由器配置和拓扑。这对于诊断路由问题和优化网络性能非常有用。

5.监控ICMP流量

通过监控网络中的ICMP流量,您可以发现异常行为(如ICMP洪水攻击)和潜在的网络问题。例如,大量的ICMP源抑制报文可能表明网络存在拥塞问题。

6.使用专业的网络分析工具

许多网络分析工具(如Wireshark)支持ICMP报文的捕获和分析。这些工具可以帮助您更深入地了解网络中的ICMP通信,从而更有效地进行故障排除。

四.ICMP的攻击方式

1.ICMP转向连接攻击

攻击者主要是使用ICMP【时间超出】或【目标地址无法连接】的消息。这两种ICMP消息都会导致一台主机迅速放弃连接。攻击只需伪造这些ICMP消息中的一条,并发送给通信中的两台主机或其中的一台,就可以利用这种攻击,接着通信连接就会被切断。

当其中一台主机错误地认为信息的目标地址不在本地网络中的时候,网关通常会使用ICMP转向消息。如果攻击者伪造出一条转向消息,它就可以导致另外一台主机经过攻击者主机向特定连接发送数据包。

2.ICMP数据包放大

攻击者向安全薄弱网络所广插的地址发送伪造的ICMP响应数据包,然后都向受害主机系统发送ICMP响应的答复信息,占用了目标系统的可用带宽并导致合法通信的服务拒绝。

3.死Ping攻击

由于早期路由器对包的最大尺寸都有限制,许多操作系统对 TCP/IP的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生尺寸超过ICMP上限的包,也就是加载的尺寸超过64KB上限时,就会出现内存分配错误,导致 TCP/IP崩溃,致使接收方宕机。

4.ICMP Ping淹没攻击

大量的Ping信息广播淹没了目标主机的系统,使得它不能够对合法的通信作出响应。

5.ICMP nuke攻击

nuke发送出目标主机的操作系统无法处理的信息数据包,从而导致该系统宕机。

6.通过ICMP进行攻击信息收集

通过Ping命令来检查目标主机是否存活,依照返回的TTL值判断目标主机操作系统。

五.ICMP攻击的防御方式

1.对ICMP数据包进行过滤

虽然很多主机防火墙可以对ICMP数据包进行过滤,但对于没有安装防火墙的主机,可以使用系统自带的防火墙和安全策略对ICMP进行过滤。

2.修改TTL值

许多入侵者会通过Ping目标主机,用目标返回TTL值来判断对方操作系统。既然入侵者相信T TL值所反映出来的结果,那么只要修改TTL值,入侵者就无法得知目标主机操作系统了。

六.选择专业的高防防护团队

德迅云安全高防服务器:德迅云安全部署的T级别数据中心,具备完善的机房设施,核心骨干网络有效保证高品质的网络环境和丰富的带宽资源。搭载赠送:自主化管理平台、德迅卫士(主机安全防火墙)、WEB云防护(一站式网站安全加速)、1V1专家技术支撑,竭诚为您提供安全、可靠、稳定、高效的服务体验。

1.海量DDoS清洗:大防护带宽,平均延迟小于50ms,从容应对大流量攻击.

2.全方位防护全面:支持SYN Flood、ACK Flood、ICMP Flood、UDP Flood、NTP Flood、DNS Flood、HTTP Flood、CC攻击等常见攻击类型的防护。

3.全业务支持:支持TCP、UDP、HTTP/HTTPS等协议,满足游戏、APP、网站、金融等各种类型的业务需求。

4.指纹式防御算法:指纹式防御算法

### ICMP协议简介与使用说明 ICMP(Internet Control Message Protocol)是一种网络层协议,主要用于在IP网络中传递控制消息和错误报告[^1]。尽管它不用于传输应用程序数据,但它对于发送网络设备间的控制信息至关重要。通过这些信息,管理员可以判断网络是否正常运作,并获得关于问题的诊断详情。 #### 基本功能 - **错误报告**:当路由器无法转发数据包时,会向源主机发送ICMP报文以告知具体原因,例如目的地不可达、超时等。 - **网络探测工具的支持**:许多常用的网络诊断工具依赖于ICMP实现其功能,像ping命令就是基于ICMP回声请求/应答机制工作的[^4]。 #### 故障排查方法论 ##### Ping 测试 Ping是最基础也是最有效的检测两台计算机间连通性的手段之一。执行ping操作实际上是向目标机器发送一系列的小型数据包,等待回应的时间长短反映了链路质量的好坏程度。如果收到回复时间较长或者根本没有得到反馈,则表明可能存在线路拥塞或者是防火墙阻止等问题。 ```bash ping www.example.com ``` 上面这个简单的Linux shell命令将会持续不断地向example网站发射信号直到手动终止为止;期间产生的统计结果可以帮助分析平均延迟、丢失率等情况。 ##### Traceroute 追踪路径 Traceroute显示了从您的位置到另一个节点沿途经过的所有跳数及相应耗时。这对于定位哪一段连接出现了异常特别有用。不同的操作系统下有不同的名字形式,在类Unix系统里叫traceroute而在Windows里面叫做tracert. ```bash traceroute www.google.com # 或者 Windows 下 tracert www.google.com ``` 上述命令将揭示到达Google服务器所经历的主要路由环节,每一步骤都附带有关延时的信息。 #### 注意事项 虽然ICMP有助于发现一些低级别的通信障碍,但由于缺乏重传机制等原因使其不适合用来保障高层级服务的质量。另外值得注意的是并非所有的丢包情形都会引发相应的ICMP通告,特别是由于中间节点缓存满载而导致的数据舍弃现象就不会激活此类警讯,这类状况更多依靠诸如TCP之类的更高层次协定去识别并应对[^2]。 --- ### 示例代码片段 这里给出一个利用Python编写简易版Ping程序的例子: ```python import os hostname = "google.com" response = os.system("ping -c 1 " + hostname) if response == 0: print(hostname, 'is up!') else: print(hostname, 'is down!') ``` 该脚本尝试联系指定域名一次,依据返回码判定可达性状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值