butterflyonapin/layer2-stp-hardening
GitHub: butterflyonapin/layer2-stp-hardening
一个针对企业局域网STP协议劫持与恶意路由器插入攻击的漏洞分析及二层/三层安全加固配置参考库。
Stars: 0 | Forks: 0
# 第 2/3 层基础设施漏洞利用:STP 劫持与恶意路由器接入控制
对生成树协议(STP)机制、BPDU 注入漏洞以及企业局域网中恶意路由器插入的技术分析,演示了根桥劫持、路由毒化攻击,以及通过下一代防火墙(NGFW)和第 3 层交换机实施边界防御强制措施。
## 什么是生成树协议(STP)及其工作原理?
生成树协议(IEEE 802.1D / 802.1w)是一种第 2 层网络协议,旨在防止存在冗余物理路径的网络中出现交换环路。
### 问题:第 2 层交换环路
与第 3 层 IP 数据包不同,第 2 层以太网帧没有生存时间(TTL)字段。如果交换机之间的冗余路径没有运行 STP,数据帧(尤其是广播和组播)将无限循环。这会导致**广播风暴**和 MAC 地址表不稳定,在几秒钟内使整个网络瘫痪。
### STP 的工作原理(选举与端口状态)
STP 通过禁用冗余链路(同时保持它们处于故障转移就绪状态),动态创建一个无环路的逻辑拓扑。
1. **根桥选举:** 所有交换机都会广播网桥协议数据单元(BPDU),以选举拓扑中的唯一“根桥”。具有最低**网桥标识符(BID)**的交换机获胜:
$$\text{BID} = \text{网桥优先级(2 字节)} + \text{系统 ID 扩展} + \text{MAC 地址(6 字节)}$$
2. **根路径成本计算:** 每个非根交换机都会计算返回根桥的最短路径成本。
3. **端口角色分配:**
* **根端口(RP):** 交换机上具有到达根桥最佳路径的接口。
* **指定端口(DP):** 网络分段中具有到达根桥最佳路径的接口(用于传输流量)。
* **非指定端口(阻塞):** 处于丢弃状态的冗余接口,用于打破物理环路。
## 攻击向量:第 2 层与第 3 层漏洞利用
默认情况下,未经加固的企业接入端口存在隐式信任问题。攻击者或未经授权的用户将恶意设备(如路由器或非网管交换机)插入接入端口,可能会通过两个向量破坏基础设施:
### 向量 1:第 2 层根桥劫持
攻击者注入具有更低网桥优先级(`0`)的更优 BPDU。交换机接受该声明,触发拓扑重新收敛,并选举攻击者的设备作为根桥。VLAN 间流量被重定向到边缘端口,从而造成拒绝服务或中间人(MITM)攻击条件。
```
" [ Enterprise Firewall / NGFW ]"
" │"
" [ Core Switch / L3 Switch ]"
" │"
" [ Edge Access Switch ]"
" │ (Access Port - Unprotected)"
" ▼"
" [ Attacker / Rogue Router ] (Injects BPDUs & Rogue DHCP/Routes) <-- Injection Point"
```
### 向量 2:第 3 层恶意路由器插入
当未经授权的路由器接入到接入端口时:
* 它会发出**恶意 DHCP Offer**,为客户端分配错误的 IP 配置,并将自身设置为默认网关。
* 如果边缘端口启用了动态路由(OSPF/EIGRP/BGP),它会通告一个度量值为 `0` 的默认路由(`0.0.0.0/0`),劫持原本发往企业防火墙的出站流量。
## 基础设施与防火墙边界加固
为确保接入未经授权的路由器或交换机不会危及网络安全,必须跨第 2 层和第 3 层实施零信任边界防御。
### 1. 防火墙与核心边界隔离(第 3 层防御)
#### A. 被动接口与动态路由过滤
在所有面向客户端的端口上禁用动态路由邻居建立,以防止恶意路由器注入路由。
```
! Disable dynamic routing neighbors on all non-infrastructure ports
Core-Switch(config)# router ospf 1
Core-Switch(config-router)# passive-interface default
Core-Switch(config-router)# no passive-interface GigabitEthernet0/1 ! (Only explicit link to Firewall)
```
#### B. DHCP 侦听与 IP 源保护
实施 DHCP 侦听,以阻止接入端口上的恶意 DHCP 服务器和未经授权的网关。
```
! Enable DHCP Snooping globally
Access-Switch(config)# ip dhcp snooping
Access-Switch(config)# ip dhcp snooping vlan 10
! Trust ONLY uplink interfaces connected to authorized DHCP servers/Firewalls
Access-Switch(config)# interface GigabitEthernet0/1
Access-Switch(config-if)# ip dhcp snooping trust
! Client interfaces drop all DHCP Server (OFFER/ACK) packets by default
```
### 2. 第 2 层边界保护(BPDU 防护与优先级分配)
#### A. 硬编码核心优先级
通过降低核心交换机的优先级,防止边缘设备在根桥选举中获胜。
```
! Core Primary
SW-Core-01(config)# spanning-tree vlan 10 priority 4096
! Core Backup
SW-Core-02(config)# spanning-tree vlan 10 priority 8192
```
#### B. 在边缘接口上强制实施 BPDU 防护
如果接入端口检测到来自交换机或路由器的传入 BPDU,则立即将其关闭。
```
SW-Access-01(config)# interface range fastEthernet 0/1 - 24
SW-Access-01(config-if-range)# switchport mode access
SW-Access-01(config-if-range)# spanning-tree portfast
SW-Access-01(config-if-range)# spanning-tree bpduguard enable
```
## 取证与排查命令
```
# 因未经授权的 BPDU 摄入而禁用的检查接口
SW-Access-01# show interfaces status err-disabled
# 验证 DHCP Snooping 绑定数据库和被阻止的 rogue servers
SW-Access-01# show ip dhcp snooping binding
# 验证每个 VLAN 的当前 STP Root Bridge 参数
SW-Access-01# show spanning-tree vlan 10 detail
```
## 仓库内容
```
.
├── README.md
└── configs/
├── core_switch.cfg
├── access_switch.cfg
└── firewall_policy.cfg
```
标签:二层网络, 内核驱动, 文档结构分析, 漏洞分析, 网络协议, 网络安全, 路径探测, 路由交换, 隐私保护