前言
Syn_Ack/Ack_Flood攻击属于TCP攻击,在了解Syn_Ack/Ack_Flood攻击之前,可以先看看TCP攻击详解。
Syn_Ack Flood 攻击:
syn_ack报文出现在连接建立的第2个报文,用来确认第一次握手的syn包。
当服务器收到syn_ack报文后会在系统里查询是否属于3次握手的范畴。如果属于则回复ack,并将连接设为连接状态。若没有查到相关信息,则回复reset。(这里window协议实现与Linux有所不同,这里仅讨论Linux)。当攻击者发送大量的syn_ack进行攻击时,服务器将会为处理这些报文而消耗大量的资源。 也许你发现这里可能还有另一种潜在的危害,就是当服务器主动外联时,发送完syn,等待synack包时,收到了攻击者发送的synack报文而导致,连接建立失败。其实严格意义上说这种情况是存在的。可这种情形发送在攻击的报文五元组匹配并且seq-ack也正确匹配的情况。概率极低,忽略不计。
Syn_Ack Flood 防御:
- 如果服务器没有主动发起连接的需求,直接将所以syn_ack包丢弃即可。
- 如果有对外连接的需求,则可利用源认证的方式防御,具体防护原理为: 向syn_ack的源IP,端口发送syn报文,能在固定时间内返回,并且序列号匹配则说明该IP,端口确实提高了服务,加入白名单。多次未防护的加入黑名单。
Ack Flood 攻击:
ACK Flood攻击是在TCP连接建立之后,所有的数据传输TCP报文都是