4、TCP的syn攻击过程,如何防御

一、攻击过程:

在三次握手过程中,sever发送SYN-ACK后,收到client的ACK之前的TCP连接称为半连接(half-open connect),此时sever处于SYN-RECV状态,当收到ACK后进入establised状态。

SYN攻击(syn flood)就是,攻击的客户端在短时间内伪造大量不存在的IP地址,向服务器不断发送syn请求建立连接,服务器回复确认报,并等待客户端的确认,由于源地址不存在,服务器需要不断重发直至超时,这些伪造的syn包将长时间占用半连接队列,正常的SYN请求被抛弃,目标系统运行慢,严重引起网络堵塞甚至瘫痪。

Syn Flood类型:

Direct Attact:攻击方使用固定的源地址发起攻击,这种方法对攻击者的消耗最小;

spoofing attact:攻击方使用变化的源地址发起攻击,消耗有些大;

distributeed direct attact:这种攻击主要是使用僵尸网络进行固定原地址的攻击

syn攻击时典型的DDOS攻击。Linux上检测是否被syn攻击:netstat -n -p TCP | grep SYN_RECV

二、syn攻击的防御

1、具有SYN proxy(SYN代理)功能的防火墙

      每秒通过指定对象(目标地址和端口、仅目标地址或仅源地址)的SYN片段数的阀值,当来自相同源地址或发往相同目标地址的SYN片段数达到一定阀值时,防火墙开始截断连接请求和代理回复SYN/ACK片段,当防火墙代理半连接的队列被填满,防火墙拒绝来自相安全同区域所有地址的新SYN片段。

    缺点:当攻流量较大时,连接出现较大延迟,网络负载高,很多时候成为整个网络瓶颈    

2、加快淘汰无效SYN请求,通过降低tcp_syn_retries实现;加大队列长度,长度和tcp_max_syn_backing相关,但不完全由它决定。

  缺点:在高强度攻击面前这两个不能根本解决问题,更有效的是tcp_syncookies。

3、SYN Cookie,给每一个请求连接的IP地址分配一个Cookie,若短时间内收到某个连续的SYN报文,就认定受到攻击,再来就丢弃。

    原理:服务器收到SYN报文,返回SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值,在收到TCP_ACK时,服务器对比cookie对比检查合法性,再分配专门的数据区处理连接。

  

   

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(4、TCP的syn攻击过程,如何防御)