第236篇:STP 攻击:BPDU 泛洪与 TC 攻击

关键词

STP攻击、BPDU泛洪、TC攻击、生成树安全、BPDU Guard、Root Guard、拓扑变化攻击


一、STP 协议安全弱点

1.1 STP 的工作原理

生成树协议(STP/RSTP/MSTP)通过 BPDU 报文协商网络拓扑:

STP 的选举过程:

  ┌─────────┐
  │ Root    │  ← 根桥(优先级最低的交换机)
  │ Bridge  │
  └────┬────┘
       │ BPDU (每 2 秒)
  ┌────┴────┐
  │ Switch-B│  ← 非根桥
  └────┬────┘
       │ BPDU
  ┌────┴────┐
  │ Switch-C│  ← 边缘端口(连接终端)
  └─────────┘

BPDU 内容:
  Root Bridge ID
  Root Path Cost
  Bridge ID
  Port ID
  Message Age
  ...

STP 的安全缺陷:
  BPDU 无认证 → 任何设备都可以发送 BPDU
  收到更低优先级的 BPDU → 重新选举根桥
  TC BPDU → 刷新 MAC 地址表

1.2 STP 攻击的入口

STP 攻击的接入点:

攻击者可以物理接入交换机端口: 会议室网络接口 空闲信息点 伪装成合法设备接入

通过伪造 BPDU 实现攻击: ┌────────────┐ │ 合法根桥 │ │ Priority: 0 │ └────────────┘ │ | | | | | | | --- | --- | --- | --- | --- | | ┌───┴───┐ ┌───┴───┐ ┌────┴────┐ | | | | | | Sw-A Pri:8 | | Sw-B Pri:16 | | Sw-C Pri:32 | │ ┌──────────┴──────────┐ │ 攻击者 │ │ 伪造 BPDU: │ │ Priority: 0 (最高) │ │ MAC: 任意 │ └─────────────────────┘

攻击效果: 攻击者成为新的根桥 网络拓扑重新计算(30-50 秒) 流量路径改变(经过攻击者)


二、BPDU 攻击类型

2.1 BPDU 泛洪攻击

攻击者发送大量 BPDU 报文,消耗交换机的 CPU 资源:

BPDU 泛洪的原理:

                        ┌──────────────────┐
                        │ 交换机 CPU        │
                        │                  │
                        │ 每收到一个 BPDU:  │
                        │ 1. 中断处理      │
                        │ 2. BPDU 处理     │
                        │ 3. Spanning Tree │
                        │    重新计算      │
                        │ → CPU 高负载     │
                        └──────────────────┘
                              ▲
                              │ 大量 BPDU
                    ┌─────────┴──────────┐
                    │ 攻击者              │
                    │ 每秒发送 10000+     │
                    │ 伪造 BPDU          │
                    └────────────────────┘

影响:
  CPU 使用率飙升(100%)
  正常 BPDU 无法处理 → STP 不稳定
  网络设备反应迟钝(管理、SNMP、SSH 延迟)
  严重时导致设备死机

2.2 根桥抢夺攻击

攻击者发送优先级更高的 BPDU 成为根桥:

根桥抢夺攻击:

正常 STP 拓扑:
  根桥:Switch-A (Priority: 4096, MAC: ...00:01)

  所有流量路径:
    PC ── Sw-B ── Sw-A ── 出口

攻击开始:
  攻击者发送 BPDU:
    Root ID: 4096, MAC: 00:00:00:00:00:01  (更低 = 优先)
    Bridge ID: 4096, MAC: ...
    Cost: 0

  交换机收到后:
    发现更优的根桥信息
    重新计算 STP
    新根桥 → 攻击者设备

路径变化:
  PC ── Sw-B ── 攻击者(新根桥)── 可能需要绕路
  流量经过攻击者 → 可以嗅探 / 篡改

攻击效果:
  所有 VLAN 的流量路径改变
  可能导致:
    ├─ 流量绕路(延迟增加)
    ├─ 流量经过攻击者(中间人)
    └─ 链路拥塞(路径不合理)

2.3 TC 攻击(拓扑变更攻击)

攻击者反复发送 TC BPDU(Topology Change),导致交换机不断刷新 MAC 地址表:

TC 攻击原理:

正常 TC BPDU 场景:

新设备上线 └─────────┘ → 全网刷新 MAC 地址表(~30 秒收敛) → 正常,偶尔发生

攻击者反复发送 TC: 攻击者每秒发送 1 次 TC BPDU 交换机组每秒刷新 MAC 地址表

时间轴: T+0s: TC BPDU → 刷新 MAC 表 T+1s: TC BPDU → 刷新 MAC 表 T+2s: TC BPDU → 刷新 MAC 表 ... 交换机一直处于"学习"状态,无法正常转发

影响: MAC 地址表不断被清空 流量被泛洪(广播)到所有端口 攻击者可以收到所有流量 正常通信性能急剧下降


三、STP 防护机制

3.1 BPDU Guard

BPDU Guard 在接入端口(连接终端的端口)上检测并阻止 BPDU:

BPDU Guard 工作原理:

正常终端端口:
  ┌──────────────┐
  │  PC          │──── 不发送 BPDU → 正常
  └──────────────┘

攻击者端口:
  ┌──────────────┐
  │  攻击者       │──── 发送 BPDU → 端口被 BPDU Guard 关闭
  └──────────────┘

华为配置:
  # 全局使能 BPDU Guard
  stp bpdu-protection
  #
  # 配置端口为边缘端口(自动使能 BPDU Guard)
  interface GigabitEthernet0/0/1
   stp edged-port enable                    # 边缘端口
  #
  # 验证
  display stp bpdu-protection
    Port                    State
    GigabitEthernet0/0/1    UP               # 正常
    GigabitEthernet0/0/2    DOWN(BPDU)       # BPDU 触发关闭
  #
  # 恢复被关闭的端口
  interface GigabitEthernet0/0/2
   restart

3.2 Root Guard

Root Guard 在特定端口上防止成为根桥:

Root Guard 工作原理:

正常:
  ┌─────────┐     Trunk          ┌──────────┐
  │ 核心交换机 ├─────────────────►│ 汇聚交换机 │
  │ (根桥)   │   (Root Guard)   │ (非根桥)  │
  └─────────┘                    └──────────┘

  汇聚交换机收到核心的 BPDU:
  Root Priority: 4096 > 非根 → 正常

攻击:
                          ┌──────────┐
                          │ 攻击者    │
                          │ BPDU: 0  │
                          └────┬─────┘
                               │
  ┌─────────┐     Trunk    ┌──┴───────┐
  │ 核心交换机 ├─────────────►│ 汇聚交换机 │
  │ (根桥)   │   (Root Guard)│          │
  └─────────┘               └──────────┘

  汇聚交换机收到攻击者的 BPDU:
  Root Priority: 0 < 4096
  Root Guard:阻止!端口进入 Root-Inconsistent 状态
  攻击者端口被阻塞

华为配置:
  # 在可能不应该成为根桥的端口上启用
  interface GigabitEthernet0/0/24
   stp root-protection
  #
  # 查看 Root Guard 状态
  display stp inconsistent-ports
    Port                    State
    GigabitEthernet0/0/24   Root-Inconsistent    # 检测到非法 BPDU

3.3 TC Guard(TC-BPDU 保护)

限制交换机每秒处理的 TC BPDU 数量:

TC Guard 原理:

  原本:收到 TC BPDU → 立即刷新 MAC 表(无限制)

  TC Guard:限制每秒 TC BPDU 处理数量

华为配置:
  # 全局 TC 保护
  stp tc-protection enable                    # 使能 TC 保护
  stp tc-protection interval 10               # 10 秒内最多处理 1 次 TC
  stp tc-protection threshold 1               # 阈值:1 次/10秒
  #
  # 或限制特定端口的 TC 速率
  interface GigabitEthernet0/0/1
   stp tc-protection enable
   # 此端口发送的 TC BPDU 被限速

效果:
  攻击者每秒发送 1000 TC BPDU
  交换机只处理 1 次/10 秒
  MAC 地址表稳定,不受影响

3.4 Loop Guard

防止因 BPDU 丢失导致的环路:

Loop Guard 原理:

正常:
  ┌─────────┐             ┌─────────┐
  │  Sw-A   ├─────────────┤  Sw-B   │
  │  (根)   │   BPDU 定期  │         │
  └─────────┘             └─────────┘
      端口:指定端口          端口:Alternate(阻塞)

BPDU 丢失(可能由单向链路导致):
  Sw-B 收不到 BPDU → 认为 Sw-A 不存在
  Sw-B 端口从 Blocking → Forwarding
  环路形成!广播风暴!

Loop Guard 解决:
  收不到 BPDU 时 → 端口进入 Loop-Inconsistent 状态
  不会转为 Forwarding → 环路不会形成

# 华为 Loop Guard 配置
interface GigabitEthernet0/0/24
 stp loop-protection

四、华为完整 STP 安全配置

4.1 基线配置

# 华为交换机 STP 安全基线配置

# 1. 全局配置
stp mode rstp                                       # 使用 RSTP(收敛更快)
stp bpdu-protection                                 # BPDU Guard(全局)
stp tc-protection enable                            # TC 保护
stp tc-protection interval 10
stp tc-protection threshold 1
stp root primary                                    # 当前交换机作为根桥(核心)

# 2. 边缘端口(连接终端)
interface GigabitEthernet0/0/1
 stp edged-port enable                              # 边缘端口
 port-security enable                               # 端口安全
!

interface GigabitEthernet0/0/2
 stp edged-port enable
!

# 3. 上行端口(连接其他交换机)
interface GigabitEthernet0/0/23
 description Uplink-to-Core
 stp root-protection                                # 防止非预期根桥
 stp loop-protection                                # 防单向链路环路
!

interface GigabitEthernet0/0/24
 description Uplink-to-Core-Backup
 stp root-protection
 stp loop-protection
!

# 4. 禁用未使用的端口
interface range GigabitEthernet0/0/5 to GigabitEthernet0/0/22
 shutdown

4.2 监控与排查

# 监控 STP 状态

# 查看 STP 概要
display stp brief
  MSTID  Port                    Role  Port State
  0      GigabitEthernet0/0/1    DESI  FORWARDING        # 正常
  0      GigabitEthernet0/0/2    DESI  FORWARDING
  0      GigabitEthernet0/0/23   ROOT  FORWARDING
  0      GigabitEthernet0/0/24   ALTE  DISCARDING        # 备用端口,正常

# 查看 STP TC 统计(检测 TC 攻击)
display stp topology-change
  MSTID  TC Count  Last TC Time           Last TC Port
  0      3         2024-03-15 10:00:00    GE0/0/1        # 3 次 TC,正常

  # 如果 TC Count 每秒增长 → 正在遭受 TC 攻击

# 查看被保护机制关闭的端口
display stp bpdu-protection
display stp inconsistent-ports

五、实战案例:STP 攻击导致全网瘫痪

5.1 案例场景

某公司网络故障:

症状:
  上午 10:00,全公司网络卡顿
  Ping 丢包 80%+
  核心交换机 CPU 100%
  部分终端无法获取 IP

排查过程:
  检查核心交换机 CPU:
    display cpu-usage
      CPU Usage: 98%          ← 异常高

  检查 STP 状态:
    display stp topology-change
      TC Count: 15472         ← 正常应 < 10
      TC Count 每秒 +50       ← 正在遭受 TC 攻击

  找到攻击源端口:
    display stp interface brief
    GE0/0/8 - TC BPDU 接收量最大

根因:
  攻击者接入会议室的网络接口(GE0/0/8)
  使用工具每秒发送 100 个 TC BPDU
  核心交换机每秒刷新 MAC 表
  网络瘫痪

处理:
  interface GigabitEthernet0/0/8
   shutdown                                    # 立即关闭端口
  #
  stp tc-protection enable                     # 使能 TC 保护
  stp tc-protection threshold 1
  #
  # 后恢复
  stp bpdu-protection                          # BPDU Guard
  stp edged-port enable                        # 端口改为边缘端口

六、总结

知识点 核心要点
STP 安全弱点 BPDU 无认证,任何设备可伪造
BPDU 泛洪 大量 BPDU 消耗 CPU
根桥抢夺 伪造更优 BPDU 成为根桥
TC 攻击 反复 TC BPDU 导致 MAC 表刷新
BPDU Guard 边缘端口关闭,检测到 BPDU 自动关闭端口
Root Guard 阻止端口成为根桥,端口进入 Inconsistent 状态
TC Guard 限制 TC BPDU 处理频率
Loop Guard 防止 BPDU 丢失导致环路

七、思考

  1. TC 攻击(拓扑变更攻击)的原理是什么?为什么会让网络瘫痪?
  2. BPDU 泛洪攻击如何影响交换机的正常工作?
  3. BPDU Guard 和 Root Guard 分别用于防护什么场景下的 STP 攻击?
  4. 在华为交换机上如何配置 TC 保护?配置后攻击者发送大量 TC BPDU 会怎样?
  5. 当发现交换机 CPU 利用率 100% 且 STP TC Count 快速增加时,应如何定位攻击源端口?

下篇预告:第237篇《防火墙日志与审计方案》——防火墙日志的类型、日志服务器部署、审计策略和合规要求。