什么是 SYN?
在 TCP 中,SYN 是指从客户端发送到服务器以发起连接的数据包。 建立 TCP 连接遵循以下步骤:
这个连接过程涉及三次数据包交换,称为三次握手。 它允许服务器确认其回复数据包已到达客户端。 但是,如果客户端伪造源 IP 地址,就会出现问题,因为服务器将不会收到其 SYN/ACK 数据包的响应。 在这种情况下,服务器会保持半开状态直到超时,从而不必要地消耗资源。 恶意行为者利用此漏洞发起 SYN 洪水攻击,这是一种 DoS/DDoS 攻击。
F5 的 BIG-IP 平台充当完整代理,并通过在将 SYN 数据包转发到服务器之前对其进行检查来防止 SYN 泛洪。 此外,BIG-IP 还包含一项称为 SYN Cookies 的功能,以保护自己免受大量 SYN 数据包的攻击。 在此方法中,MD5 生成的数字(称为“Cookie”)嵌入在 SYN/ACK 数据包的 TCP 序列号中。 当收到后续的 ACK 数据包时,将根据其内容重新计算 Cookie。 这样就无需在发送 SYN/ACK 数据包时存储连接详细信息,即使在 SYN 洪水攻击期间也能防止内存耗尽。