美文网首页
SYN攻击防护预研

SYN攻击防护预研

作者: ADay日历 | 来源:发表于2018-12-17 13:52 被阅读0次

    SYN攻击利用的是TCP三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应 报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。

    正常流程

    原本tcp协议是在收到syn包时,服务器返回syn+ack包并分配一个专门的数据区来储存tcp连接需要的数据。这就使攻击者有机可乘,可以利用伪造的syn包来消耗服务器的内存空间和半开连接数,这就可以使服务器的内存或者半开连接数耗尽而拒绝服务(Denial of Service)。

    syn cookie详解

    syn cookie技术是在1996年由Daniel J. Bernstein和Eric Schenk创造的,最早是1997年在linux上实现的,至今linux依然支持syn cookie技术。

    syn cookie技术是服务器在收到syn包时并不马上分配储存连接的数据区,而是根据这个syn包计算出一个cookie,把这个cookie填入tcp的Sequence Number字段发送syn+ack包,等对方回应ack包时检查回复的Acknowledgment Number字段的合法性,如果合法再分配专门的数据区。

    syn cookie对tcp的三次握手进行了一定的修改,修改仅在于服务器端,对任何客户端的使用都没有影响

    开启syn cookie

    在linux内核中提供了很多SYN相关的配置,用命令:sysctl -a | grep syn就能看得到。


    在centos里是默认开启的

    sysctl -w net.ipv4.tcp_syncookies=1即可,关闭则输入sysctl -w net.ipv4.tcp_syncookies=0

    //增大队列SYN最大半连接数
    sysctl -w net.ipv4.tcp_max_syn_backlog=2048
    sysctl -w net.ipv4.tcp_syncookies=1
    sysctl -w net.ipv4.tcp_synack_retries=3
    sysctl -w net.ipv4.tcp_syn_retries=3

    //开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
    sysctl -w net.ipv4.tcp_tw_recycle = 1
    //修改系統默认的 TIMEOUT 时间
    sysctl -w net.ipv4.tcp_fin_timeout = 30

    syn cookie的缺点

    syn cookie虽然与任何的上层和下层协议都不冲突,但是还是有他的不足之处

    1. 服务器只能编码八种 MSS 数值,因为只有 3 位二进制空间可用。
    2. 这个服务器必须拒绝所有的TCP 选用项,例如大型窗口和时间戳,因为服务器会在信息被用其他方式存储时丢弃 SYN 队列条目.
    3. 还有最致命的缺点就是开启syn cookie后会使服务器对与ack攻击的抵抗力大大降低,他虽然保护了内存空间的过度分配但是也使得cpu的计算资源被消耗(需要计算哈希值)。

    所以说syn cookie虽然能抵御syn攻击但是却容易受到ack攻击。想要防御住所有类型的DOS攻击是很苦难的,需要对各种攻击的原理与防御方法非常了解,并且针对不同攻击选择合适的防御方法才行。

    附录

    用Python和C实现syn flood攻击

    DDoS攻击--Syn_Flood攻击防护详解(TCP)

    阿里云centos环境之被dos,syn攻击策略和排查方法

    如何简单的防御syn攻击

    相关文章

      网友评论

          本文标题:SYN攻击防护预研

          本文链接:https://www.haomeiwen.com/subject/iheqkqtx.html