第234篇:DHCP 饿死攻击与防护

关键词:DHCP耗尽、DHCP Starvation、DHCP欺骗、DHCP Snooping、DAI、IP Source Guard

一、引言

DHCP(Dynamic Host Configuration Protocol)是局域网中最基础也最重要的服务之一,负责自动分配IP地址。然而,DHCP协议在设计时几乎没有考虑安全性:所有消息以广播形式传输,客户端和服务器均不对报文来源做任何身份验证。

DHCP饿死攻击(DHCP Starvation Attack)通过耗尽DHCP服务器的地址池资源,使合法用户无法获取IP地址,导致网络不可用。攻击者通常还会结合DHCP欺骗(Rogue DHCP Server),在耗尽地址池后提供虚假配置,将用户流量引流到攻击者控制的网关上。

二、核心概念

2.1 DHCP协议基础

步骤 报文类型 方向 目的
1 DHCP Discover 客户端→服务器(广播) 寻找可用的DHCP服务器
2 DHCP Offer 服务器→客户端(广播/单播) 提供IP地址配置
3 DHCP Request 客户端→服务器(广播) 请求使用服务器提供的IP
4 DHCP ACK 服务器→客户端(广播/单播) 确认IP地址分配

2.2 DHCP饿死攻击原理

攻击者构造大量伪造MAC地址的DHCP Discover报文,以极高频率发送给DHCP服务器。由于每个Discover报文携带不同的伪造MAC地址,DHCP服务器认为都是不同的客户端请求,逐一分配IP地址。

DHCP饿死攻击原理 - 图示

2.3 DHCP攻击组合拳

攻击阶段 攻击方式 效果
第一阶段 DHCP饿死(耗尽地址池) 合法用户无法获取IP
第二阶段 rogue DHCP服务器(DHCP欺骗) 提供虚假IP/网关/DNS
第三阶段 DNS劫持 将用户请求重定向到恶意网站
第四阶段 中间人攻击 截获和篡改用户通信内容

2.4 DHCP Snooping工作原理

DHCP Snooping是交换机层面的防护技术,通过在交换机上建立DHCP Snooping绑定表,区分信任端口和非信任端口。

端口类型 行为
信任端口 允许所有DHCP报文通过(连接合法DHCP服务器)
非信任端口 只允许DHCP Discover和DHCP Request(客户端报文)通过

三、技术细节

3.1 DHCP Snooping绑定表

DHCP Snooping绑定表记录了每个合法IP地址与MAC地址、VLAN、端口和租期的映射关系:

字段 说明 示例
MAC地址 客户端MAC 00:11:22:33:44:55
IP地址 分配的IP 10.0.0.100
租期 剩余租期(秒) 3500
VLAN ID 所属VLAN 10
接口 连接端口 GE0/0/1
绑定类型 动态/静态 Dynamic

3.2 DAI(动态ARP检测)

DAI利用DHCP Snooping绑定表验证ARP报文:

验证项 说明
IP-MAC绑定 ARP报文中的IP和MAC必须匹配绑定表记录
端口验证 ARP报文必须从绑定表中记录的端口发出
VLAN验证 ARP报文必须属于绑定表中记录的VLAN

DAI有效防止ARP欺骗攻击,是DHCP Snooping的延伸安全能力。

3.3 IP Source Guard

IP Source Guard基于DHCP Snooping绑定表,仅允许绑定表中记录的IP-MAC组合通过指定端口:

模式 说明
IP验证 仅验证源IP地址是否在绑定表中
IP+MAC验证 同时验证源IP和源MAC是否匹配绑定表

3.4 防护技术对比

技术 部署位置 防护目标 性能影响
DHCP Snooping 接入交换机 DHCP欺骗、饿死攻击 低
DAI 接入交换机 ARP欺骗 低
IP Source Guard 接入交换机 IP地址欺骗 低
端口安全 接入交换机 MAC地址伪造 极低
DHCP Rate Limit 接入交换机 DHCP报文频率限制 极低

四、实战配置/案例分析

4.1 华为交换机DHCP防护配置

# =============================
# 接入层交换机配置
# =============================

# 1. 全局启用DHCP Snooping
dhcp snooping enable

# 2. 在VLAN中启用DHCP Snooping
dhcp snooping vlan 10 20 30

# 3. 配置DHCP Snooping信任端口(连接合法DHCP服务器)
interface GigabitEthernet0/0/24
 # 连接上行链路/DHCP服务器的端口
 dhcp snooping trusted
quit

# 4. 非信任端口(接入用户端口)自动为非信任状态
# 验证非信任端口配置
display dhcp snooping interface GigabitEthernet0/0/1

# 5. 配置DHCP报文速率限制(防止饿死攻击)
interface GigabitEthernet0/0/1
 # 限制每秒DHCP报文数
 dhcp snooping limit rate 5
quit

# 批量配置所有接入端口
port-range GigabitEthernet 0/0/1 to 0/0/23
 dhcp snooping limit rate 5
quit

# 6. 启用IP Source Guard(基于DHCP Snooping绑定表)
interface GigabitEthernet0/0/1
 ip source check user-bind enable
 # 验证IP+MAC
 ip source check source-ip mac enable
quit

# 7. 启用DAI(动态ARP检测)
# 注:DAI命令因VRP版本而异,以下为通用语法
arp anti-attack check user-bind enable

interface GigabitEthernet0/0/1
 arp check user-bind enable
quit

# 8. 配置端口安全(限制MAC数量)
interface GigabitEthernet0/0/1
 port-security enable
 port-security max-mac-count 2
 port-security protect-action restrict
quit

# =============================
# 核心层交换机配置
# =============================

# 9. 核心交换机上行端口设为信任
interface 100GE1/0/1
 dhcp snooping trusted
quit

# 10. 查看DHCP Snooping绑定表
display dhcp snooping binding
display dhcp snooping statistics

4.2 故障排查案例:接入层大面积终端无法获取IP

故障现象:某办公楼层接入交换机下,约80%的终端无法通过DHCP获取IP地址,显示"IP地址冲突"或"网络无Internet访问权限"。

排查步骤:

  1. 检查DHCP服务器地址池状态
# 在DHCP服务器上检查地址池利用率
display ip pool office-vlan

地址池利用率99%,仅剩几个空闲地址。

  1. 检查DHCP Snooping绑定表
# 在接入交换机上查看绑定表
display dhcp snooping binding | exclude VLAN-ID 10

发现大量异常MAC地址(如AA:AA:AA:xx:xx:xx格式),集中在一个接入端口。

  1. 定位攻击端口
display dhcp snooping statistics interface
# 端口GE0/0/15的DHCP Discover报文计数远超其他端口
  1. 根因分析 端口GE0/0/15下接入了一台恶意设备(可能是攻击者接入的笔记本),正在以每秒数百次的速率发送伪造MAC的DHCP Discover报文,耗尽地址池。

  2. 解决方案

# 步骤1:临时关闭攻击端口
interface GigabitEthernet0/0/15
 shutdown
quit

# 步骤2:清理DHCP Snooping绑定表中的异常记录
reset dhcp snooping binding

# 步骤3:配置更严格的速率限制
interface GigabitEthernet0/0/15
 dhcp snooping limit rate 2
 port-security enable
 port-security max-mac-count 2
 port-security protect-action shutdown
quit

# 步骤4:在所有接入端口部署速率限制
port-range GigabitEthernet 0/0/1 to 0/0/48
 dhcp snooping limit rate 3
quit

# 步骤5:端口恢复(确认设备合法后)
interface GigabitEthernet0/0/15
 undo shutdown
quit

4.3 故障排查案例:Rogue DHCP服务器导致DNS劫持

故障现象:某咖啡厅的无线用户上网时,输入www.baidu.com却跳转到广告页面。

排查步骤:

  1. 检查终端DHCP获取的配置
# 在终端上查看DHCP获取的信息
ipconfig /all

发现DNS服务器指向192.168.1.200,而不是正常的运营商DNS(114.114.114.114)。

  1. 排查 rogue DHCP服务器
# 在交换机上查看DHCP报文来源
display dhcp snooping statistics

发现大量DHCP Offer报文从GE0/0/12端口发出(非信任端口),该端口不应有DHCP服务器报文。

  1. 解决方案
# 确认GE0/0/12只有信任端口(DHCP服务器)才能发送Offer
interface GigabitEthernet0/0/12
 # 此端口未配置为信任端口,自动丢弃Offer/ACK报文
 # 确认dhcp snooping配置
 dhcp snooping trusted  # 仅真正的DHCP服务器端口配置此命令
quit

# 对攻击端口进行处置
interface GigabitEthernet0/0/12
 shutdown
quit

# 启用IP Source Guard进一步防护
dhcp snooping enable
dhcp snooping vlan 100
interface GigabitEthernet0/0/1
 ip source check user-bind enable
quit

五、DHCP安全防护扩展指南

5.1 DHCP Snooping 绑定表结构

字段 说明 示例
MAC地址 客户端MAC地址 00:1A:2B:3C:4D:5E
IP地址 分配的IP地址 10.0.1.100
租约时间(秒) DHCP租约剩余时间 3500
类型 Dynamic(动态)/Static(静态) Dynamic
接口 客户端所连接端口 GigabitEthernet0/0/5
VLAN 客户端所在VLAN 10
# 查看DHCP Snooping绑定表
display dhcp snooping binding
# 输出示例:
# MAC Address       Ip Address      Lease Time     Type     Interface
# 001A-2B3C-4D5E    10.0.1.100      3500s          Dynamic  GE0/0/5
# 001A-2B3C-4D5F    10.0.1.101      2800s          Dynamic  GE0/0/6

5.1 DHCP攻击链全景与分层防护

DHCP攻击链全景与分层防护 - 图示

5.2 DHCPv6 安全防护对比

安全机制 DHCPv4 DHCPv6 说明
DHCP Snooping 支持 支持 华为设备支持DHCPv6 Snooping
DAI 支持 支持(SAAD) IPv6使用邻居发现替代ARP
IP Source Guard 支持 支持 IPv6基于DHCPv6绑定表
RA Guard 不适用 支持 防护Rogue路由器通告
ND Inspection 不适用 支持 IPv6邻居发现检查
# DHCPv6 Snooping配置
dhcpv6 snooping enable
dhcpv6 snooping vlan 10

# 配置信任端口
interface GigabitEthernet0/0/48
 dhcpv6 snooping trust
quit

# RA Guard配置(防Rogue RA)
interface GigabitEthernet0/0/1
 nd-inspection ra-filter enable
quit

5.3 DHCP安全防护最佳实践检查清单

序号 加固项 优先级 配置命令 验证命令
1 全局启用DHCP Snooping 必配 dhcp snooping enable display dhcp snooping
2 VLAN级启用DHCP Snooping 必配 dhcp snooping vlan 10 display dhcp snooping vlan 10
3 上行端口设为信任端口 必配 dhcp snooping trust display dhcp snooping interface
4 启用DHCP速率限制 必配 dhcp snooping limit rate 10 display dhcp snooping interface
5 启用DAI动态ARP检测 推荐 arp-detect enable display arp-detect
6 启用IP Source Guard 推荐 ip source check display ip source check
7 端口安全MAC限制 推荐 port-security enable display port-security
8 DHCP Snooping信息选项 推荐 dhcp snooping information option display dhcp snooping binding

5.4 故障排查:DHCP Snooping导致合法用户无法获取IP

故障现象:启用DHCP Snooping后,某些端口下的终端无法获取IP地址。

排查步骤:

# 1. 检查端口信任状态
display dhcp snooping interface GigabitEthernet0/0/10
# 发现端口为非信任端口

# 2. 检查DHCP Snooping绑定表
display dhcp snooping binding interface GigabitEthernet0/0/10
# 绑定表为空,说明DHCP报文被丢弃

# 3. 根因分析
# 该端口下接了一台小型交换机,DHCP请求经过该交换机
# 交换机未配置为信任端口,DHCP Server的响应被丢弃

# 4. 修复方案
# 方案A:如果GE0/0/10下接的是终端,保持非信任即可
# 方案B:如果GE0/0/10下接的是交换机,需要启用中继信任
interface GigabitEthernet0/0/10
 dhcp snooping trust
 # 同时配置DHCP中继(如果需要)
 ip dhcp relay select dhcp-group-1
quit

六、总结

知识点 要点
DHCP饿死攻击 伪造大量MAC地址的Discover报文耗尽地址池
DHCP欺骗 rogue DHCP服务器提供虚假网络配置
DHCP Snooping 区分信任/非信任端口,建立绑定表
DAI 基于DHCP Snooping绑定表验证ARP报文
IP Source Guard 基于绑定表限制源IP和MAC
速率限制 限制每个端口的DHCP报文发送速率
端口安全 限制端口最大MAC地址数
攻击链 饿死→欺骗→DNS劫持→中间人攻击

思考

  1. DHCP Snooping绑定表记录了所有合法IP-MAC映射,攻击者能否通过某种方式污染绑定表?
  2. 如果网络中没有部署DHCP Snooping,还有什么方法可以检测rogue DHCP服务器?
  3. DHCPv6是否存在与DHCPv4相同的安全问题?防护方案有何不同?

下篇预告:第235篇:VLAN Hopping 攻击与防护