如果我的服务器实现SYN Cookies以避免DoS攻击,但是攻击者知道服务器使用SYN Cookie,他们是否可以通过发送ACK来创建半/全开连接?
我知道SYN Cookies使用算法来创建唯一的初始连接,如果攻击者握手不完整,则SYN被删除,只能通过接收有效的SYN-ACK来重新创建。
但攻击者还能以某种方式管理?
答案 0 :(得分:2)
否,攻击者无法 知道SYN初始序列值是什么,以便完成TCP 3路握手。此外,当使用SYN Cookie时,任何tcp端口都不可能处于半开状态。答案根植于密码学。
SYN Cookies的实现可以使用Symmetric Cipher生成序列ID。例如,当机器启动时,它将生成一个随机密钥,用于所有TCP序列ID。当机器接收并传入SYN数据包到开放端口时,它将通过加密服务器的IP地址,客户端的IP地址和正在使用的端口号来生成序列ID。服务器不需要跟踪它发出的SYN初始序列ID,因此它没有每个客户端状态,并且这个“半开”tcp套接字的想法并不真正适用(在 - 至少在DoS方面)。现在,当客户端发回其SYN-ACK数据包时,它需要包含SYN初始序列ID。当服务器在SYN-ACK数据包中从客户端获取此初始序列ID时,它可以向后工作,方法是加密服务器的IP地址,客户端的IP地址和正在使用的端口号。