什么是SYN Flood攻击?怎么防御SYN Flood?
时间:2021-02-05SYN Flood是DDoS(分布式拒绝服务)攻击的一种,它主要利用TCP协议的缺陷发起攻击。被SYN Flood攻击的最终结果,和其他DDoS攻击一样,正常用户均无法正常访问网站内容。
SYN Flood攻击原理
服务器和客户端需要经过三次握手才能建立连接,SYN Flood正是利用这一过程来使服务器宕机的。如果在三次握手过程中,因为客户端出现突然掉线、死机等原因,服务器无法接收到客户端的ACK报文,第三次握手将无法完成。
此时,服务器将会重试,这个尝试时间一般在30秒-2分钟之间,如果仍然无法建立连接,这个未完成的连接才会被丢弃。
SYN Flood攻击就是利用这一服务器尝试过程。攻击者通过各种方式,使目标服务器出现大量类似无法建立连接的情况。目标服务器会不断尝试连接这些连接,造成大量的资源消耗,最后宕机。
怎么防御SYN Flood?
SYN Flood攻击会占满连接等待序列,从而导致服务器宕机。应对此类攻击,通常有以下几种方法:
1. 启用SYN Cookie
net.ipv4.tcp_syncookies = 1
当启动SYN Cookie后,服务器不会给SYN数据包分配空间,且在确认报文之后,不会保存任何的状态信息,从而减轻服务器资源压力。
2. 增加等待序列
net.ipv4.tcp_max_syn_backlog = 10000
因为SYN Flood攻击会占满整个等待序列,那么我们就可以通过扩充序列,让此类攻击无法占满,用户能够正常进入队列,完成三次握手建立连接。
3. 降低尝试次数
net.ipv4.tcp_synack_retries = 2
客户端与服务器无法建立连接时,会多次尝试。因此,我们只需要降低尝试建立连接的次数,也能尽快释放连接序列,大幅缓解服务器压力。
以上三种方式,可大幅降低SYN Flood攻击造成的危害。但这些措施需要评估服务器硬件资源,以及SYN Flood攻击强度而定,否则可能适得其反,反而造成更多的服务器资源的消耗。
好在SYN Flood攻击的防御难度,在众多DDoS攻击中,不算太难。很多云产品服务提供商,都有对应的产品。无需开发者采用特别措施,就能有效防止绝大部分的SYN Flood攻击。
例如蔚可云的DDoS防御产品,就能实时阻断SYN Flood及各种DDoS攻击方式,而且还能7*24小时监控潜在的安全风险,提前预警,使企业免受SYN Flood攻击的困扰,避免因SYN Flood攻击造成不可挽回的损失。