本文主要是介绍猿创征文|HCIE-Security Day54:anti-ddos设备防御原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
相比防火墙,anti-ddos设备是专门做anti-ddos的,所以很多功能都是防火墙没有的。
TCP防御
针对TCP服务的防御策略包括阻断、限流、防御。
SYN Flood防御
syn flood攻击利用tcp三次握手机制,攻击者向服务器发送大量的syn报文请求,当服务器回应了ACK-SYN报文后,不再继续回应ACK,导致服务器上建立了大量半连接,直至老化,造成服务器的资源被半连接耗尽,正常的请求无法回应。
anti-ddos设备针对SYN Flood攻击,一般采用源认证进行防御。
基本源认证
针对虚假源。
没有报文来回路径一致性要求。
FW仍然处于客户端和服务器之间,对收到的SYN报文进行拦截,与代理方式不同的是,FW会返回一个错误序列号的SYN-ACK报文给客户端。
如果客户端是虚假源,不会发现这个问题,即不会对该错误的SYN-ACK进行回应。如果客户端是真实源,则会发现这个问题,会发送RST报文,请求FW重新发正确的SYN-ACK报文。一旦FW收到这个RST报文,就可以判断这个客户端是真实的,就会将这个客户端的源地址加入白名单,白名单老化前,这个源发出的报文都认为是合法的报文,FW直接放行,不再做验证。因为FW对相同源的SYN报文只做一次验证,所以有效缓解了FW的压力。
局限性在于,如果网络中存在某些设备会丢弃带有错误确认序号的SYN-ACK报文,或者有的客户端不响应带有错误确认序号的SYN-ACK报文,基本源认证就不能生效了。此时可以使用高级源认证。
高级源认证
高级源认证的原理也是Anti-DDoS系统代替服务器向客户端响应SYN-ACK报文,但与基本源认证不同的是,SYN-ACK报文中带有正确的确认序号。真实的客户端收到带有正确确认序号的SYN-ACK报文后,会向服务器发送ACK报文;而虚假源收到带有正确确认序号的SYN-ACK报文,不会做出任何响应。Anti-DDoS系统通过观察客户端的响应情况,来判断客户端的真实性。
1、当连续一段时间内去往目标服务器的SYN报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替服务器向客户端响应带有正确确认序号的SYN-ACK报文。
2、如果这个源是虚假源,是一个不存在的地址或者是存在的地址但却没有发送过SYN报文,不会做出任何响应。
3、如果这个源是真实客户端,则会向服务器发送ACK报文,对收到的SYN-ACK报文进行确认。Anti-DDoS系统收到ACK报文后,将该客户端的源IP地址加入白名单。同时,Anti-DDoS系统会向客户端发送RST报文,要求重新建立连接。
4、后续这个客户端发出的SYN报文命中白名单直接通过。
无论是基本源认证还是高级源认证,其原理都是Anti-DDoS系统发送SYN-ACK报文来对源进行认证,形象点说,Anti-DDoS系统收到SYN报文后会反弹SYN-ACK报文。如果网络中存在海量的SYN报文,同样Anti-DDoS系统也会反弹出去海量的SYN-ACK报文,这样势必就会造成网络拥塞更加严重。
为了避免这个问题,减少反弹的SYN-ACK报文对网络拥塞的影响,Anti-DDoS系统提供了首包丢弃功能。
首包丢弃
TCP协议要求发送端每发送一个报文,就启动一个定时器并等待确认信息,如果在定时器超时前还没有收到确认,就会重传报文。首包丢弃功能就是利用了TCP的超时重传机制,anti-ddos系统对收到的第一个SYN报文直接丢弃,然后观察客户端是否重传,如果重传,再对重传的SYN报文进行源认证,即反弹SYN-ACK报文,在于可以大大减少反弹报文数量。
另外,有些攻击采用不断变换源IP地址或者源端口号的方式发送攻击报文,通过首包丢弃,可以有效拦截这部分流量。
正常情况下,tcp、dns、icmp报文都具有重传功能。如果在交互过程中报文被丢弃,则都会重传,首包丢弃是利用了报文的重传机制,将受到的第一个报文丢弃,以判定后续是否有重传报文。
anti-ddos设备判定报文是否属于重传报文是基于三元组以及时间间隔来判断的,三元组包含源IP地址、源端口和协议,时间间隔可以自定义配置。
当报文没有匹配到任何三元组时,认为该报文是首包,将其丢弃;
当报文匹配到某三元组,则计算该报文与匹配该三元组的上一个报文到达的时间间隔。如果时间间隔低于设定的下限,或者高于设定的上限,则认为是首包,将其丢弃,如果时间间隔落在配置的上限和下限之间,则认为是后续包,将其放行。
支持首包丢弃后重传报文的协议包括tcp、dns、icmp协议。udp协议虽然不具备重传机制,如果有应用层协议来协助实现重传时,也可以配置首包丢弃功能。
实际部署时,我们将首包丢弃和源认证结合使用。防御SYN Flood攻击时,先通过首包丢弃功能来过滤掉一些攻击报文,当重传的SYN报文超过告警阈值后,再启动源认证。这样就能够减少反弹的SYN-ACK报文的数量,缓解网络拥塞情况。对于虚假源攻击,尤其是对于不断变换源IP和源端口的虚假源攻击,可以达到最佳防御效果。
TCP异常限速
源IP地址加入白名单后,需要继续对真实源IP地址进行统计分析,对异常的源IP地址进行限速,以防止真实源发起攻击。
基于源来统计除ACK以外的其他报文总和(SYN+SYN-ACK+FIN/RST)与ACK报文的比例,当这个比例超过TCP-Ratio比例阈值时,判定源IP地址异常,将除ACK以外的其他报文的速率总和限制在阈值内。
始终限速
任何情况下,都将除了ACK以外的其他报文的速率总和限制在阈值内。
SYN-ACK Flood防御
攻击源假冒服务器,发送大量SYN-ACK报文到达攻击目标网络,由于目标网络没有发送过SYN报文,平白无故的收到SYN-ACK报文,只好发送RST报文进行释放,如果这样的SYN-ACK报文很多,那么目标网络就会发送很多RST报文,导致资源耗尽,无法响应正常的请求。另外,如网络中存在防火墙和ips等设备,对于大量的SYN-ACK报文,会检查会话表,虽然无法匹配,但是消耗了设备性能。
源认证
华为Anti-DDoS解决方案使用源认证方式防御SYN-ACK Flood攻击,其原理是Anti-DDoS系统向发送SYN-ACK报文的源地址发送SYN报文,相当于发起了第一次握手,探测该地址是否真实存在。真实的源会向Anti-DDoS系统响应正确的SYN-ACK报文,也就是第二次握手的报文;而虚假的源则不会响应正确的SYN-ACK报文。
注意:防火墙不支持SYN-ACK Flood防御。
1、当连续一段时间内去往目标服务器的SYN-ACK报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统向发送SYN-ACK报文的源地址发送SYN报文。
2、如果这个源是虚假源,不会向Anti-DDoS系统响应正确的SYN-ACK报文。
3、如果这个源是真实源,会向Anti-DDoS系统响应正确的SYN-ACK报文。Anti-DDoS系统收到该SYN-ACK报文后,将该源IP地址加入白名单,同时会向源地址发送RST报文,断开自己和这个源地址的连接。
4、后续这个源发出的SYN-ACK报文命中白名单直接通过
这篇关于猿创征文|HCIE-Security Day54:anti-ddos设备防御原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!