美文网首页
DDoS -- syn flood

DDoS -- syn flood

作者: 捞小虾 | 来源:发表于2017-11-28 18:45 被阅读27次

1. 概述

SYN flood是Network layer的DDoS攻击之一。
该攻击利用TCP握手缺陷消耗被攻击方的资源从而导致被攻击方拒绝服务。
相关RFC请见tools.ietf.org/html/rfc4987

2. TCP握手正常情况

client ---------SYN (sequence: s_no, acknowledgment: 0)--------------> server

        <-------SYN + ACK  (sequence: a_no, acknowledgement: s_no + 1)--

        --------ACK (sequence: a_no +1, acknowledgement: s_no + 1)----->
  • Client发送SYN
  • Server回SYN+ACK后建立一个半打开状态(SYN-RECEIVED)的连接,并存储在backlog中;
  • Client收到SYN + ACL后发送ACK;
  • Server收到ACK后,从blacklog中取出相应的半打开的连接,并建立TCB(Transmission Control Block)。

3. SYN flood攻击原理

  • Client发送大量SYN后不再有任何回应(可以使用IP欺骗);
  • Server回SYN+ACK后建立大量半打开状态的连接,并存储在backlog中等待ACK;
  • Backlog中累积大量的等待ACK的半打开状态的连接,导致资源耗尽,新来的SYN被丢弃, 从而导致无法建立正常连接,服务器拒绝服务。

4. 防护

方法1. Filter -- 路由过程中根据IP地址前缀进行过滤,该方法需要全球部署。

方法2. Increasing Backlog

方法3. Reducing SYN-RECEIVED Timer

方法4. Recycling the Oldest Half-Open TCB

方法5. SYN Cache -- 常用方法之一

  • Server收到client发的SYN
  • 计算 hash(ip, port, secret bits)并随机均匀分配到 hash table bucket, 如果hash table bucket满了,则除旧迎新;
  • Server收到ACK后, 查hash table,创建TCB

方法6. SYN Cookies -- 常用方法之二, 该方法不使用存储资源

  • Server收到SYN后,将组成连接的最基本的数据ecode成ACK的sequence number(+ Timestamp option)-- a_no;
  • Server发送携带该sequence number(+ Timestamp option)的SYN + ACK,不再分配SYN-RECEIVED状态的connection;
  • Server收到ACK后,decode该sequence number(+ Timestamp option)-- a_no,创建TCB

方法7. Hybrid Approaches

  • SYN cache + SYN cookie

方法8. Firewalls and Proxies

5. 其他

可以尝试outbound SYN flood。

相关文章

网友评论

      本文标题:DDoS -- syn flood

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