
1) 【一句话结论】SYN Flood攻击通过伪造大量源IP的SYN包耗尽服务器TCP连接队列,导致合法连接无法建立;360云安全通过流量清洗识别并过滤恶意流量、速率限制控制异常请求速率、状态机检测验证连接合法性,综合防御此类攻击。
2) 【原理/概念讲解】老师口吻解释:TCP三次握手是客户端发送SYN(同步序列号),服务器返回SYN-ACK(同步+确认),客户端再发送ACK(确认)。正常情况下,服务器为每个SYN请求会保留一个“半开连接”在队列中,等待客户端的ACK。如果攻击者伪造大量不同源IP的SYN包(比如用随机或欺骗的IP),服务器会为每个伪造的SYN都创建半开连接,导致队列被占满。队列长度是有限的(比如Linux默认SYN队列长度通常为1000左右),当队列满后,后续的SYN包会被丢弃,合法用户的连接请求无法被处理,服务器服务中断。类比:比如餐厅的临时座位,每个新客人(SYN)占一个临时座位(半开连接),如果有人不断用假身份(伪造IP)占座位,最终座位全满,新来的正常客人(合法请求)进不去,餐厅(服务器)就没人能吃饭(服务不可用)。
3) 【对比与适用场景】
| 特性 | 描述 |
|---|---|
| 定义 | SYN Flood攻击,利用TCP三次握手漏洞,伪造源IP发送大量SYN包 |
| 特性 | 发送大量伪造源IP的SYN包,速率可低可高,隐蔽性强 |
| 目标资源 | 服务器TCP连接队列(SYN队列),队列长度有限(如Linux默认约1000) |
| 攻击效果 | 耗尽队列,阻断合法连接,导致服务不可用 |
| 使用场景 | 针对无状态或配置不当的服务器,常见于网络攻击,攻击者可低速率发送 |
| 注意点 | 防御需结合多种技术,避免仅依赖单一手段(如仅速率限制易被绕过) |
4) 【示例】攻击者伪代码:
import random
for i in range(10000): # 循环发送10000个伪造SYN包
source_ip = ".".join(map(str, random.randint(0, 255) for _ in range(4))) # 生成随机源IP
send_syn_packet("192.168.1.100", 80, source_ip) # 发送SYN包到目标服务器80端口,源IP伪造
服务器处理:为每个伪造的SYN创建半开连接,当队列长度超过1000后,后续SYN被丢弃,合法请求无法建立连接。
5) 【面试口播版答案】
“SYN Flood攻击是利用TCP三次握手的漏洞,攻击者伪造大量源IP向目标服务器发送SYN包,服务器为每个伪造的SYN保留半开连接,导致连接队列耗尽,正常请求无法建立连接。在360云安全服务中,防御方法包括:流量清洗,通过识别异常的SYN包特征(如大量随机源IP、速率异常),过滤掉恶意流量;速率限制,设置SYN包接收速率阈值,超过阈值则丢弃;状态机检测,维护合法连接的状态表,验证每个SYN请求是否在状态表中,确保只有合法连接被接受,比如检查源IP是否在白名单,以及后续ACK是否匹配,保证状态机状态转换符合TCP规范。”
6) 【追问清单】
7) 【常见坑/雷区】