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 ```
标签:二层网络, 内核驱动, 文档结构分析, 漏洞分析, 网络协议, 网络安全, 路径探测, 路由交换, 隐私保护