DDOS攻击防御之SYN flood防御
该种攻击在百度百科的解释:SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
SYN Flood攻击大量消耗服务器的CPU、内存资源,并占满SYN等待队列,从而影响到正常用户的握手的建立,网上说可以通过专门的硬件防火墙来有效抵御该种攻击,我觉得阿里硬件和网络环境是有这套设备的,而我也从系统层面建立了一层可以抵御或缓解SYN Flood的攻击的机制,主要涉及到linux系统内核的三个参数。
1、启用SYN Cookie:net.ipv4.tcp_syncookies = 1
2、设置SYN最大队列长度:net.ipv4.tcp_max_syn_backlog = 2048
3、设置SYN+ACK最大重试次数:net.ipv4.tcp_synack_retries = 2
SYN Cookie的作用是缓解服务器资源压力。启用之前,服务器在接到SYN数据包后,立即分配存储空间,并随机化一个数字作为SYN号发送SYN+ACK数据包。然后保存连接的状态信息等待客户端确认。启用SYN Cookie之后,服务器不再分配存储空间,而且通过基于时间种子的随机数算法设置一个SYN号,替代完全随机的SYN号。发送完SYN+ACK确认报文之后,清空资源不保存任何状态信息。直到服务器接到客户端的最终ACK包,通过Cookie检验算法鉴定是否与发出去的SYN+ACK报文序列号匹配,匹配则通过完成握手,失败则丢弃。
tcp_max_syn_backlog则是使用服务器的内存资源,换取更大的等待队列长度,让攻击数据包不至于占满所有连接而导致正常用户无法完成握手。
cp_synack_retries是降低服务器SYN+ACK报文重试次数,尽快释放等待资源。这三种措施与攻击的三种危害一一对应,完完全全地对症下药。
任何安全性防御都是一把双刃剑,就好像这个世界的反恐一样,为了抵御恐怖分子的袭击建立起的一套防御反恐体系对普通人的影响也是深远的,同时也和医学中的化疗一样,在杀死致命细胞的同时也不可避免的把有益的细胞给消灭。以上的配置在一定程度上可能消耗服务器更多的内存资源,甚至影响正常用户建立TCP连接,是在评估服务器硬件资源和可能的攻击大小的基础上制定的,具体效果还有待日后观察。
- 上一篇: SLB技术原理浅析
- 下一篇: 【转】常用的正则表达式语法
评论