讲一讲 SYN 超时,洪泛攻击,以及解决策略
什么 SYN 是洪泛攻击?
在 TCP 的三次握手机制的第一步中,客户端会向服务器发送 SYN 报文段。服务器接收到 SYN 报文段后会为该 TCP 分配缓存和变量, 如果攻击分子大量地往服务器发送 SYN 报文段,服务器的连接资源终将被耗尽,导致内存溢出无法继续服务。
解决策略
当服务器接受到 SYN 报文段时,不直接为该 TCP 分配资源,而只 是打开一个半开的套接字。接着会使用 SYN 报文段的源 id,目的 id,端口号以及只有服务器自己知道的一个秘密函数生成一个 cookie,并把 cookie 作为 序列号响应给客户端。
如果客户端是正常建立连接,将会返回一个确认字段为 cookie + 1 的报文段。 接下来服务器会根据确认报文的源 id,目的 id,端口号以及秘密函数计算出一个结果,如果结果的值 + 1等于确认字段的值,则证明是刚刚请求连接的客户 端,这时候才为该 TCP 分配资源.
这样一来就不会为恶意攻击的 SYN 报文段分配资源空间,避免了攻击。
-
什么 SYN 是洪泛攻击?
在 TCP 的三次握手机制的第一步中,客户端会向服务器发送 SYN 报文段。服务器接收到 SYN 报文段后会为该 TCP 分配缓存和变量, 如果攻击分子大量地往服务器发送 SYN 报文段,服务器的连接资源终将被耗尽,导致内存溢出无法继续服务。
解决策略
当服务器接受到 SYN 报文段时,不直接为该 TCP 分配资源,而只 是打开一个半开的套接字。接着会使用 SYN 报文段的源 id,目的 id,端口号以及只有服务器自己知道的一个秘密函数生成一个 cookie,并把 cookie 作为 序列号响应给客户端。
如果客户端是正常建立连接,将会返回一个确认字段为 cookie + 1 的报文段。 接下来服务器会根据确认报文的源 id,目的 id,端口号以及秘密函数计算出一个结果,如果结果的值 + 1等于确认字段的值,则证明是刚刚请求连接的客户 端,这时候才为该 TCP 分配资源.
这样一来就不会为恶意攻击的 SYN 报文段分配资源空间,避免了攻击。
1个月前