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