1. 引言
随着互联网业务规模的扩大,DDoS 攻击已成为威胁在线服务稳定性的主要风险之一。其中,基于 TCP 协议的异常流量攻击(如 SYN Flood、ACK Flood、连接耗尽攻击等)因其成本低、效果显著而被广泛使用。BGP 高防(BGP High Defense)作为一种基于路由层实现的流量清洗方案,通过 BGP 协议将攻击流量牵引至清洗中心,再对 TCP 异常流量进行识别与清洗,从而保障源站安全。本文将从底层原理出发,深入剖析 BGP 高防中 TCP 异常流量的识别机制与清洗流程。
2. BGP 高防的整体架构
BGP 高防的核心思路是「牵引 + 清洗 + 回注」。当攻击发生时,高防系统通过 BGP 路由通告将目标 IP 的流量从源站牵引到高防清洗中心,清洗中心对流量进行过滤和清洗后,再将合法流量通过隧道或专线回注到源站。
整体架构通常包含以下几个关键组件:
- 高防节点(清洗中心):部署在骨干网边缘,负责接收被牵引的流量并执行清洗。
- BGP 路由通告:通过宣告更精确的路由(如 /32 主机路由)将流量引导至高防节点。
- 回注通道:清洗后的合法流量通过 GRE 隧道、VXLAN 或专线送回源站。
- 调度与策略中心:负责攻击检测、策略下发和清洗规则管理。
从数据面角度看,流量路径可以概括为:
3. TCP 异常流量的常见类型
在 BGP 高防场景下,TCP 异常流量主要分为以下几类,每一类的识别特征和清洗策略各不相同。
3.1 SYN Flood
攻击者发送大量伪造源 IP 的 SYN 报文,使服务器半连接队列(SYN Queue)迅速占满,导致合法用户无法完成 TCP 三次握手。识别特征包括:单位时间内 SYN 报文速率异常、SYN 与 ACK 比例失衡、源 IP 分布分散且无重传行为。
3.2 ACK Flood
攻击者发送大量 ACK 报文,这些报文往往不属于任何已建立的连接,导致服务器在查找连接表时消耗大量 CPU。识别特征包括:ACK 报文速率远超正常基线、无对应连接状态、报文长度和载荷分布异常。
3.3 连接耗尽攻击(Connection Exhaustion)
攻击者通过大量低速但真实的 TCP 连接占满服务器的连接表或应用层连接池,使正常用户无法建立新连接。此类攻击流量特征与正常流量高度相似,识别难度较大,通常需要结合连接速率、连接时长、每源 IP 连接数等维度进行综合判断。
3.4 TCP 反射放大攻击
攻击者利用 TCP 协议中可被反射放大的服务(如部分 TCP 服务的 ACK 响应),通过伪造源 IP 发送请求,使响应流量放大后涌向受害者。识别特征包括:响应报文与请求报文的比例异常、源端口固定、报文大小分布异常。
4. TCP 异常流量的识别机制
BGP 高防清洗中心对 TCP 异常流量的识别通常采用「多级检测 + 行为分析」的机制,从粗粒度到细粒度逐层过滤。
4.1 流量基线学习
清洗中心会持续学习目标 IP 的正常流量特征,建立多维基线模型,包括:每秒报文数(PPS)、每秒流量(bps)、每秒新建连接数(CPS)、并发连接数、SYN/ACK 比例、报文长度分布、源 IP 地理分布等。基线模型是后续异常判定的基准。
4.2 粗粒度检测:速率阈值
当实时流量指标超过基线阈值的倍数(如 PPS 超过基线 5 倍)时,系统判定为疑似攻击,进入细粒度检测阶段。速率阈值检测响应快,但误报率较高,适合作为第一道防线。
4.3 细粒度检测:报文特征分析
对疑似攻击流量进行逐包分析,提取以下特征:
- TCP 标志位组合:如 SYN、ACK、RST、FIN 的异常组合。
- 序列号与确认号:是否在合理窗口内,是否存在乱序或重复。
- 源 IP 与端口:源 IP 是否伪造、源端口是否固定、是否存在端口扫描特征。
- 报文长度:是否与正常业务报文长度分布明显偏离。
- TTL 值:同一源 IP 的 TTL 是否一致,用于识别伪造源 IP。
4.4 行为分析:连接状态机
清洗中心维护一张 TCP 连接状态表,对每个连接的状态迁移进行跟踪。例如:SYN 报文发出后是否在超时时间内收到 SYN-ACK;已建立连接是否在合理时间内有数据交互;连接是否异常频繁地建立和拆除。通过状态机分析,可以有效识别 SYN Flood 和连接耗尽攻击。
4.5 关联分析
将多个维度的检测结果进行关联,例如:某源 IP 同时触发 SYN 速率异常和 TTL 异常,则判定为攻击源的概率显著提升。关联分析可以降低单维度检测的误报率。
5. TCP 异常流量的清洗机制
识别出异常流量后,清洗中心需要执行相应的清洗动作。清洗机制的核心原则是「最小影响合法流量,最大程度拦截攻击流量」。
5.1 SYN Proxy(SYN 代理)
SYN Proxy 是应对 SYN Flood 最有效的清洗手段之一。清洗中心代替源站与客户端完成 TCP 三次握手:
- 清洗中心收到客户端的 SYN 报文后,代替源站回复 SYN-ACK。
- 若客户端正确回复 ACK,说明该客户端是真实的,清洗中心再与源站建立连接,并将后续数据转发。
- 若客户端不回复 ACK 或回复异常,则判定为攻击流量,直接丢弃。
通过 SYN Proxy,攻击者的半连接不会到达源站,源站的 SYN Queue 始终保持空闲。
5.2 源认证与指纹识别
对于 ACK Flood 和反射放大攻击,清洗中心可以采用源认证机制:对可疑源 IP 发送探测报文(如 TCP Challenge),要求客户端在限定时间内回复特定内容。真实客户端能够正确响应,而伪造源 IP 的攻击流量无法完成认证,从而被丢弃。
5.3 速率限制(Rate Limiting)
对识别出的攻击源 IP 或攻击特征报文实施速率限制,将超过阈值的报文直接丢弃。速率限制可以按源 IP、目的 IP、TCP 标志位组合、报文长度等维度进行精细化配置。
5.4 黑白名单与指纹库
清洗中心维护动态黑白名单:确认的攻击源 IP 加入黑名单并直接丢弃其流量;可信的合法源 IP(如内部系统、长期稳定用户)加入白名单,跳过深度检测以降低时延。同时,基于历史攻击样本建立指纹库,对匹配指纹的报文直接拦截。
5.5 连接表保护
针对连接耗尽攻击,清洗中心可以限制每个源 IP 的并发连接数和新建连接速率,超出限制的新连接请求被拒绝或排队。同时,对长时间无数据交互的空闲连接进行回收,释放连接表资源。
5.6 回注与流量整形
清洗后的合法流量通过 GRE 隧道或 VXLAN 回注到源站。在回注前,清洗中心还会进行流量整形,确保回注流量速率不超过源站的处理能力,避免清洗后流量过大导致源站过载。
6. 清洗效果评估与策略调优
清洗机制并非一成不变,需要根据实际攻击情况和业务特点持续调优。评估清洗效果的关键指标包括:
- 攻击拦截率:被拦截的攻击流量占攻击总流量的比例。
- 合法流量误杀率:被误判为攻击而丢弃的合法流量比例。
- 清洗时延:流量经过清洗中心引入的额外时延。
- 源站可用性:攻击期间源站的可用性指标。
调优方向包括:调整基线模型的学习周期、优化速率阈值、增加新的检测特征维度、完善黑白名单策略等。值得注意的是,清洗策略需要在「拦截效果」和「误杀率」之间取得平衡,过度激进的清洗策略可能导致大量合法用户被误伤。
7. 总结
BGP 高防通过 BGP 路由牵引将攻击流量引导至清洗中心,再依托多级检测机制对 TCP 异常流量进行识别,最后通过 SYN Proxy、源认证、速率限制、黑白名单等手段完成清洗。理解这些底层原理,有助于在实际业务中合理配置高防策略,在保障业务可用性的同时有效抵御 TCP 类 DDoS 攻击。
在实际部署中,建议结合业务流量特征提前建立基线,定期演练攻击场景,并根据监控数据持续优化清洗策略,从而构建一套稳健的 TCP 异常流量防护体系。