一.什么是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.指纹式防御算法:指纹式防御算法