第109篇:DHCP Snooping:防私设 DHCP 服务器

关键词:DHCP Snooping、DHCP 攻击、私设 DHCP 服务器、信任端口、Option82、绑定表、二层安全


一、引言

DHCP(Dynamic Host Configuration Protocol)是园区网中最重要的协议之一,它为终端自动分配 IP 地址、网关、DNS 等网络参数。然而,DHCP 协议本身缺乏安全机制,任何接入网络的设备都可以充当 DHCP 服务器或中继代理,发起各种攻击。

DHCP Snooping 是交换机层面的一项安全特性,它通过区分信任端口和不信任端口,建立 DHCP 绑定表,有效防范非法 DHCP 服务器攻击、DHCP 耗尽攻击等二层安全威胁。

二、核心概念

2.1 DHCP 攻击类型

攻击类型 描述 危害
非法 DHCP 服务器 私设 DHCP 服务器,分配错误 IP/网关/DNS 用户流量被劫持,中间人攻击
DHCP Starvation 耗尽 DHCP 地址池,合法用户无法获取地址 拒绝服务
DHCP Relay 欺骗 伪造 DHCP Relay Agent,劫持 DHCP 请求 流量重定向
IP/MAC 欺骗 使用非法获取的 IP/MAC 组合通信 身份冒充

2.2 DHCP Snooping 核心概念

DHCP Snooping 核心概念 - 图示

概念 说明
信任端口(Trust Port) 允许通过 DHCP Offer/Ack/Nak 等服务器响应报文
不信任端口(Untrust Port) 丢弃来自该端口的 DHCP Offer/Ack/Nak 报文
DHCP Snooping 绑定表 记录 IP-MAC-VLAN-Port-租期的映射关系
Option82 交换机插入的 DHCP 选项,包含交换机 ID 和端口信息

2.3 DHCP Snooping 工作流程

DHCP Snooping 工作流程 - 图示

三、技术细节

3.1 信任端口的默认行为

端口类型 默认信任状态 说明
Access 端口 不信任 连接终端的端口,默认不信任
Trunk 端口 信任 连接上层设备的端口,默认信任
Hybrid 端口 不信任 需手动配置

最佳实践:仅将连接合法 DHCP 服务器或中继的端口配置为信任端口。

3.2 Option82 详解

Option82(Relay Agent Information Option)由 DHCP Snooping 交换机插入,包含:

子选项 名称 内容
Sub-option 1 Circuit ID 交换机标识 + 端口号
Sub-option 2 Remote ID 交换机 MAC 地址或主机名
Sub-option 9 Subscriber ID 用户标识(可选)

Option82 的作用: 1. DHCP 服务器通过 Option82 精确识别报文来源端口 2. 实现基于端口的 IP 地址分配策略 3. 辅助 DHCP Snooping 绑定表的建立 4. 防止 DHCP 报文环路

3.3 DHCP Snooping 绑定表

绑定表记录了通过 DHCP Snooping 验证的终端信息:

字段 示例 说明
MAC Address 00e0-fc12-3456 终端 MAC 地址
IP Address 10.10.10.100 分配的 IP 地址
VLAN ID 10 所属 VLAN
Interface GE0/0/5 接入端口
Lease Time 3510 剩余租期(秒)
Type Dyn dhcp snoop 动态 DHCP Snooping 类型

四、实战配置/案例分析

4.1 华为交换机 DHCP Snooping 基础配置

# ========== 全局启用 DHCP Snooping ==========
[HUAWEI] dhcp enable
[HUAWEI] dhcp snooping enable

# ========== 配置信任端口 ==========
# 连接合法 DHCP 服务器的端口设为信任
[HUAWEI] interface GigabitEthernet 0/0/24
[HUAWEI-GigabitEthernet0/0/24] dhcp snooping trusted

# ========== 配置不信任端口 ==========
# Access 端口默认为不信任,无需额外配置
# 如需显式配置:
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] undo dhcp snooping trusted

# ========== 启用 Option82 ==========
[HUAWEI] dhcp snooping option82 insert

# ========== 配置 DHCP Snooping 绑定表容量 ==========
[HUAWEI] dhcp snooping max-entries 4096

# ========== 查看绑定表 ==========
[HUAWEI] display dhcp snooping userbinding

4.2 启用 DHCP 报文速率限制

# 限制每个端口每秒处理的 DHCP 报文数量,防止 DHCP Starvation 攻击
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] dhcp snooping limit rate 5

# 限制 VLAN 级别
[HUAWEI] vlan 10
[HUAWEI-vlan10] dhcp snooping limit rate 100

4.3 故障案例:私设 DHCP 服务器导致全网劫持

场景描述:某办公楼所有用户的 DNS 突然被修改为一个非法域名服务器,打开银行网站时被重定向到钓鱼网站。运维团队发现所有新接入的 PC 获取到的网关和 DNS 都不正确。

排查过程:

  1. 检查 DHCP 服务器:
# 合法 DHCP 服务器配置正常,地址池未满
  1. 检查交换机 DHCP Snooping:
[SW-ACC] display dhcp snooping configuration
# 发现 DHCP Snooping 未启用
  1. 查找非法 DHCP 服务器:
# 开启 DHCP Snooping 调试
[SW-ACC] debugging dhcp snooping packet
# 发现 GE0/0/15 端口持续发送 DHCP Offer 报文
  1. 根因确认:GE0/0/15 连接的用户私接了一台开启 DHCP 服务的无线路由器,分配的网关指向了攻击者的机器。

处理措施:

# 第一步:立即关闭攻击端口
[SW-ACC] interface GigabitEthernet 0/0/15
[SW-ACC-GigabitEthernet0/0/15] shutdown

# 第二步:启用 DHCP Snooping
[SW-ACC] dhcp snooping enable
[SW-ACC] interface GigabitEthernet 0/0/24
[SW-ACC-GigabitEthernet0/0/24] dhcp snooping trusted
[SW-ACC] dhcp snooping option82 insert

# 第三步:联系用户,关闭无线路由器的 DHCP 功能

预防:全接入层交换机统一启用 DHCP Snooping,仅将上行 Trunk 端口配置为信任端口。

五、总结

项目 说明
DHCP Snooping 本质 区分信任/不信任端口,过滤非法 DHCP 报文
信任端口 连接合法 DHCP 服务器/中继,允许服务器响应报文
不信任端口 连接终端,丢弃来自该端口的 DHCP Offer/Ack
Option82 插入交换机和端口信息,精确定位终端
绑定表 IP-MAC-VLAN-Port-租期映射,为 IPSG/DAI 提供数据源
速率限制 防止 DHCP Starvation 攻击
华为推荐 全局启用 + 仅信任上行端口 + 启用 Option82

思考

  1. DHCP Snooping 的信任端口如果配置错误(如将连接终端的端口也配置为信任),会导致什么安全问题?

  2. Option82 插入后,如果 DHCP 服务器不支持 Option82,终端还能正常获取 IP 地址吗?如何解决兼容性问题?

  3. DHCP Snooping 绑定表中的信息是动态生成的。如果交换机重启,绑定表丢失,会影响 IP Source Guard 和 DAI 的运行吗?

下篇预告:第110篇:IP Source Guard:防 IP 地址欺骗