欢迎光临
我们一直在努力

VLAN 与安全隔离:从配置错误到 VLAN Hopping 攻击

文章目录

    • 一、为什么「划了 VLAN」不等于「已经隔离」?
    • 二、VLAN 在做什么:一张图建立直觉
      • 2.1 没有 VLAN 时
      • 2.2 有 VLAN 时
      • 2.3 802.1Q 标签长什么样(够用版)
    • 三、Access / Trunk / Native:安全相关的三个旋钮
    • 四、从配置错误到隔离失效(比攻击更常见)
      • 4.1 用户口误开 Trunk / 开着 DTP
      • 4.2 Native VLAN 与业务 VLAN 重合
      • 4.3 Trunk `allowed vlan` = all
      • 4.4 管理 VLAN 与用户 VLAN 混用
      • 4.5 「二层隔了,三层全开」
      • 4.6 语音 VLAN / 物联网 VLAN 口令松
    • 五、VLAN Hopping 是什么?
    • 六、攻击一:Switch Spoofing(交换机欺骗)
      • 6.1 原理
      • 6.2 利用前提(防御侧要盯死)
      • 6.3 防御要点
    • 七、攻击二:Double Tagging(双标签)
      • 7.1 原理(理解 Native VLAN 是关键)
      • 7.2 利用前提
      • 7.3 防御要点
    • 八、实验环境建议(授权靶场)
      • 8.1 推荐拓扑
      • 8.2 实验步骤(蓝队视角)
      • 8.3 Wireshark 看什么
    • 九、加固清单(可直接当巡检表)
      • 9.1 端口角色矩阵
      • 9.2 组织级措施
      • 9.3 和高阶隔离的关系
    • 十、踩坑 FAQ
    • 十一、小结
    • 附录 A:巡检命令速查(Cisco 风格示例)

一、为什么「划了 VLAN」不等于「已经隔离」?

企业里常见一种安全感幻觉:

研发 VLAN 10、办公 VLAN 20、访客 VLAN 30
→ 广播隔离了 → 感觉「安全分区」做完了

现实往往是:

预期现场常见情况
访客上不了内网 访客口误配成 Trunk,或 Native VLAN 与内网相同
服务器区不可达办公网 三层上随便开了互通,ACL 为空
运维口最安全 管理 VLAN 与业务 VLAN 混跑,且允许 DTP
「Hopping 是老漏洞」 老交换机、默认配置、厂商差异仍可能中招

VLAN(Virtual LAN)解决的是 二层广播域划分,不是完整零信任。 本文从 802.1Q 原理 → 典型配错 → VLAN Hopping 两类攻击 → 加固清单 一条线讲透: 隔离靠设计,安全靠配置纪律。


二、VLAN 在做什么:一张图建立直觉

2.1 没有 VLAN 时

同一交换机下所有端口属于一个广播域:ARP、DHCP Discover、部分协议洪泛,所有人互相「听得见」。

2.2 有 VLAN 时

交换机在内部为端口打上 VLAN ID,同一 VLAN 内二层互通,不同 VLAN 默认二层不通。跨 VLAN 访问必须经过三层设备(路由 / SVI / 防火墙),这时才能挂 ACL、做策略。

┌──────── Switch ────────┐
VLAN10 │ PC-A PC-B │ ← 二层互通
VLAN20 │ PC-C PC-D │ ← 二层互通
└───────────┬────────────┘
│ Trunk(允许多 VLAN)

Router / L3 SW
(跨 VLAN 才在这里相遇)

2.3 802.1Q 标签长什么样(够用版)

Trunk 上传输时,帧会被插入 4 字节 802.1Q Tag(简化理解):

| Dest MAC | Src MAC | 802.1Q Tag | EtherType | Payload | FCS |

TPID=0x8100
PCP / DEI / VLAN ID(12bit)

  • Access 口:连接终端,通常进交换机时「打上本 VLAN」,出交换机时「剥掉标签」。
  • Trunk 口:连接交换机/路由器,可携带多个 VLAN 的带标签帧。
  • Native VLAN:Trunk 上 不打标签 的那个 VLAN(默认真常见是 VLAN 1)——这里埋了很多坑。

三、Access / Trunk / Native:安全相关的三个旋钮

概念作用安全关注点
Access 终端接入,单 VLAN 勿把用户口配成 Trunk
Trunk 链路聚合多 VLAN 限制 allowed vlan,关 DTP
Native VLAN Trunk 上无标签帧所属 VLAN 勿与用户 VLAN 相同;两端一致

Cisco 风格示意(不同厂商命令不同,思路通用):

! 用户接入口:Access + 关协商
interface Gi0/2
switchport mode access
switchport access vlan 20
switchport nonegotiate
spanning-tree portfast
spanning-tree bpduguard enable

! 上联口:Trunk + 显式允许 + 独立 Native
interface Gi0/1
switchport trunk encapsulation dot1q
switchport mode trunk
switchport nonegotiate
switchport trunk native vlan 999
switchport trunk allowed vlan 10,20,30,999

记住一句话: 用户口永远像「死 Access」;Trunk 永远「显式、最小、可协商关闭」。


四、从配置错误到隔离失效(比攻击更常见)

真实事故里,配错远比黑客多。下面几类几乎每年都能在巡检里见到。

4.1 用户口误开 Trunk / 开着 DTP

  • 现象:接入口 dynamic desirable / dynamic auto,对端一协商就变成 Trunk。
  • 后果:攻击者或误接设备可能声明自己是交换机,形成 Switch Spoofing 前提。
  • 修复:接入口强制 access + nonegotiate(或厂商等价:关自动 Trunk)。

4.2 Native VLAN 与业务 VLAN 重合

  • 现象:Trunk Native = VLAN 10,而办公网也是 VLAN 10。
  • 后果:无标签帧被当成 VLAN 10;配合 Double Tagging 时更容易「蹭」进业务网。
  • 修复:Native 使用 空 VLAN / 专用 VLAN(如 999),且全网 Trunk 两端一致。

4.3 Trunk allowed vlan = all

  • 现象:图省事允许全部 VLAN。
  • 后果:任意 VLAN 标签都能上 Trunk;隔离边界形同虚设。
  • 修复:按需放行,定期审计。

4.4 管理 VLAN 与用户 VLAN 混用

  • 现象:交换机管理地址落在办公 VLAN,且无 ACL。
  • 后果:内网任意主机可打管理面(弱口令、旧 SNMP、未改默认社区字)。
  • 修复:独立管理 VLAN + ACL/管理口隔离 + 带外更佳。

4.5 「二层隔了,三层全开」

  • 现象:VLAN 划得很漂亮,核心路由 permit ip any any。
  • 后果:隔离只挡了广播,挡不住有路由的横向移动。
  • 修复:跨 VLAN 默认拒绝,按业务最小放行;有条件上防火墙分区。

4.6 语音 VLAN / 物联网 VLAN 口令松

  • 现象:IP 电话、摄像头、门禁共用「宽松 VLAN」,再 Trunk 到核心。
  • 后果:IoT 沦陷后一跳进业务区。
  • 修复:IoT/访客单独 VRF 或严格 ACL;禁用设备间任意互访(PVLAN/微隔离更佳)。

五、VLAN Hopping 是什么?

VLAN Hopping:攻击者位于 VLAN A,通过滥用 Trunk/标签处理机制,让流量进入 本不该到达的 VLAN B,从而绕过「二层隔离」的心理预期。

经典两类(教材与厂商文档中最常见):

  • Switch Spoofing(交换机欺骗)
  • Double Tagging(双标签 / 双标记)
  • 注意:现代交换机默认加固后,成功率下降;但 旧设备、默认配置、错误 Trunk 环境里仍值得重视。蓝队价值在于:用攻击模型反推配置基线。


    六、攻击一:Switch Spoofing(交换机欺骗)

    6.1 原理

    许多交换机支持 DTP(Dynamic Trunking Protocol) 等链路协商: 若端口处于「可协商成 Trunk」的状态,对端只要表现得像一台交换机,就可能把链路谈成 Trunk。

    攻击者(假装交换机) 接入交换机
    │ DTP / 协商 Trunk │
    │ ─────────────────────────► │
    │ 链路变成 Trunk │
    │ ◄───────────────────────── │
    │ 可收发多个 VLAN 标签帧 │

    谈成 Trunk 后,攻击者主机(或中间设备)就可能:

    • 加入多个 VLAN 的流量视角;
    • 对原本隔离的网段做侦察、欺骗、横向(再叠加三层可达性时危害更大)。

    6.2 利用前提(防御侧要盯死)

    • 用户口未强制 Access;
    • 开启了自动 Trunk / DTP(或厂商类似特性);
    • 对端可发送协商报文(物理接入已成功)。

    6.3 防御要点

    1. 所有用户口:mode access + 关闭协商(nonegotiate / 等效)
    2. 明确 Trunk 口:静态 trunk,禁止动态
    3. Trunk 限制 allowed vlan
    4. 未使用口:shutdown + 垃圾 VLAN + 无协商
    5. 有条件:802.1X / MAB,降低「插上网线就进生产」的概率


    七、攻击二:Double Tagging(双标签)

    7.1 原理(理解 Native VLAN 是关键)

    攻击者发送一帧带 两层 802.1Q 标签 的报文:

    外层 Tag:Native VLAN(或交换机剥掉的那一层)
    内层 Tag:目标 VLAN(想跳进的 VLAN)

    典型处理路径(简化):

    攻击者 Access 口(假设属于 VLAN 10,且 Native=10)

    │ 发出: [外层 VLAN10][内层 VLAN20][Payload]

    接入交换机:认为外层=Native → 剥掉外层,上 Trunk 时可能不再打标签

    │ Trunk 上走的是「看起来像无标签 / 或处理异常」的帧,内层 Tag 仍在

    对端交换机:把剩余的内层 Tag 当成合法 802.1Q → 送进 VLAN 20

    结果:攻击者 单向 把流量「塞进」另一 VLAN(常用于侦察、对脆弱服务发包)。 是否双向、是否稳定,取决于设备实现、生成树、是否有回流路径——但 隔离假设已经被打破。

    7.2 利用前提

    • Trunk 使用 802.1Q;
    • 攻击者所在 VLAN = Trunk 的 Native VLAN(经典条件);
    • 对端会按内层标签转发;
    • 目标 VLAN 在 Trunk allowed 列表中。

    7.3 防御要点

    1. Native VLAN ≠ 任何用户/业务 VLAN(专用空 VLAN)
    2. 两端 Native 一致,避免环路与奇妙行为
    3. 明确 trunk allowed vlan,不要 all
    4. 用户口禁止 Trunk;关 DTP
    5. 对管理/关键 VLAN 在三层严格 ACL,即使二层被蹭也不易扩大战果


    八、实验环境建议(授权靶场)

    目标:验证错误配置会导致 Hopping 前提成立,再验证加固后失效——而不是追求「打穿生产」。

    8.1 推荐拓扑

    [Attacker PC] —-(Access)—- [SW1] ====Trunk==== [SW2] —-(Access)—- [Victim PC]
    VLAN 10 VLAN 20

    工具任选其一即可:

    • Cisco Packet Tracer / CML
    • GNS3 / EVE-NG + 交换机镜像
    • 两台二手交换机 + 笔记本(最接近真机)

    8.2 实验步骤(蓝队视角)

  • 基线错误配置:用户口 dynamic desirable,Native=VLAN10,allowed=all。
  • 观察:对端协商、Trunk 状态、show interface trunk。
  • 加固:按本文 Access/Trunk 模板改。
  • 对比:协商失败、非法标签被丢弃、跨 VLAN 侦察不可达。
  • 记录:改前改后各截一张 show run / show vlan / show int trunk。
  • 8.3 Wireshark 看什么

    在 Trunk 镜像口或虚拟链路抓包,过滤:

    vlan || eth.type == 0x8100

    对照:单标签、双标签、无标签(Native)三种帧形态,比背概念记得牢。


    九、加固清单(可直接当巡检表)

    9.1 端口角色矩阵

    端口角色modeNativeallowed其他
    用户/打印机 access nonegotiate,BPDU Guard,Portfast
    服务器 access 或受限 trunk 非业务 最小集 同上
    交换机互联 static trunk 专用空 VLAN 最小集 nonegotiate
    未使用口 access + shutdown 垃圾 VLAN 防私接

    9.2 组织级措施

  • 配置模板化:禁止手敲「dynamic / allowed all」。
  • 变更审计:Trunk/Native/allowed 变更进工单。
  • 定期巡检脚本:拉取配置,匹配高危模式(DTP、Native=1、allowed all)。
  • 纵深:二层隔离 + 三层 ACL/防火墙 + 主机防火墙,不把宝押在 VLAN alone。
  • 访客/外包:Portal 或独立出口,禁止进办公网段路由。
  • 9.3 和高阶隔离的关系

    技术粒度说明
    VLAN 二层广播域 基础分区
    PVLAN VLAN 内再隔离 适合云主机/托管
    VRF 三层路由隔离 多租户
    微隔离 / 零信任 工作负载级 不替代交换机基线

    VLAN 是地板,不是天花板。


    十、踩坑 FAQ

    Q1:关了 VLAN 1 是不是就安全了? 不一定。关键是 Native 不用业务 VLAN、用户口不做 Trunk、跨 VLAN 有策略。VLAN 1 只是默认号,换个号配错一样中招。

    Q2:三层交换机上建了 SVI,还需要防火墙吗? 看资产价值。SVI+ACL 能做基础控制;对 DMZ、核心库、办公与生产之间,更建议 防火墙分区,策略可视、可审计。

    Q3:VLAN Hopping 还能打到今天的新设备吗? 很多新设备默认更严,但 配置回退、级联老设备、无线桥接、错误 Native 仍可能创造条件。巡检配置比争论 CVE 年份更有用。

    Q4:无线里的「VLAN」和有线一样吗? SSID 常映射到 VLAN,但还要管 AP 管理、控制器、隧道、PSK/802.1X。无线侧配错,一样绕过你想象中的隔离。

    Q5:渗透测试报告里怎么写这类问题? 写清:端口模式、Native、allowed、是否可协商,附 show 证据,给「强制 Access / 专用 Native / 最小 allowed」三条修复,避免只写「存在 VLAN Hopping 风险」空话。


    十一、小结

  • VLAN 的本质是二层广播域划分;跨 VLAN 安全取决于 三层策略,不取决于「划了几个 VLAN」。
  • Access / Trunk / Native 三个旋钮配错,隔离会在无攻击者时自己失效。
  • Switch Spoofing 吃的是「用户口能协商成 Trunk」;Double Tagging 吃的是「Native = 用户 VLAN + 宽松 Trunk」。
  • 防御口诀:用户口死 Access、Trunk 静态且最小、Native 独立且一致、跨 VLAN 默认拒绝。
  • 把本文清单做成巡检项,比在实验室追求「完美复现攻击包」更能保护真实网络。

  • 附录 A:巡检命令速查(Cisco 风格示例)

    show vlan brief
    show interfaces trunk
    show interfaces switchport
    show running-config | section interface
    ! 高危信号示例:
    ! – Administrative Mode: dynamic auto / dynamic desirable
    ! – Negotiation of Trunking: On
    ! – Native vlan 与 access vlan 相同
    ! – Trunking VLANs Allowed: ALL

    赞(0)
    未经允许不得转载:171主机测评 » VLAN 与安全隔离:从配置错误到 VLAN Hopping 攻击
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址