前言:
- DHCP Snooping是DHCP(Dynamic Host Configuration Protocol)的一种安全特性,用于保证DHCP客户端从合法的DHCP服务器获取IP地址,并记录DHCP客户端IP地址与MAC地址等参数的对应关系,防止网络上针对DHCP攻击
- MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原 MAC地址表项的现象
DHCP Snooping
DHCP Snooping是DHCP的一种安全特性,用于保证DHCP客户端从合法DHCP服务器获取IP地址
DHCPSnooping主要是通过DHCPSnooping信任功能和DHCPSnooping绑定表实现DHCP网络安全
信任功能
DHCP Snooping信任功能将接口分为信任接口和非信任接口
-
信任端口:标记为信任的端口允许转发所有 DHCP 报文(包括客户端请求和服务端响应),通常用于连接合法的 DHCP 服务器或中继设备
-
非信任端口:未标记的端口默认是非信任的,仅允许转发 DHCP 客户端请求(如 Discover、Request),拦截非法 DHCP 服务器的响应报文(如 Offer、ACK)
-
设备只将DHCP客户端的DHCP请求报文通过信任接口发送给合 法的DHCP服务器,不会向非信任接口转发
DHCP Snooping绑定表
- 当客户端通过 DHCP 获取 IP 时,交换机会监听 DHCP Ack 报文,并自动提取信息写入绑定表
- 通过对报文与DHCP Snooping绑定表进行匹配检查,若匹配成功则转发该报文,匹配不成功则丢弃,这样可以过滤依据,防止 IP 欺骗
DHCP防饿死攻击原理
-
攻击方式
攻击者利用工具(如 Kali Linux 中的yersinia
)伪造大量 DHCP Discover/Request 报文,每个报文使用不同的源 MAC 地址,快速请求 IP 地址,耗尽 DHCP 服务器的地址池资源。 -
分析
DHCP服务器无法区分正常的申请者与恶意的申请者,合法用户无法获取 IP 地址,导致网络服务中断 -
解决方法
使用DHCP Snooping的绑定表工作模式,若攻击者使用随机MAC地址可以通过DHCP Snooping的MAC地址限制功能来防止,若攻击者使用固定MAC地址发送请求,绑定表中同一MAC的多次请求会被检测为异常
DHCP防止中间人攻击
-
攻击方式
-
伪造DHCP服务器:攻击者部署恶意DHCP服务器,响应客户端的请求,分配错误的网关或DNS服务器地址(如将网关指向攻击者主机)
-
流量劫持:客户端流量被引导至攻击者控制的设备,攻击者可窃取敏感数据(如密码)或篡改通信内容
-
冒充DHCP客户端:中间人向服务器发送带有自己MAC 和客户端IP的报文,让服务器学到中间人的MAC,达到仿冒DHCP Client的目的
-
-
分析
-
从本质上讲,中间人攻击是一种Spoofing IP/MAC攻击,中间人利用了虚假的IP地址与MAC地址之间的映射关系 来同时欺骗DHCP的客户端和服务器
-
-
解决办法
-
信任端口与非信任端口隔离
-
使用DHCP Snooping的绑定表工作模式
-
配置端口安全限制MAC地址的数量
-
命令配置:
开启DHCP服务(必需前提)
[Huawei] dhcp enable
全局启用DHCP Snooping功能
[Huawei] dhcp snooping enable
进入VLAN视图(以VLAN 10为例)
[Huawei] vlan 10
在该VLAN内启用DHCP Snooping
[Huawei-vlan10] dhcp snooping enable
进入连接DHCP服务器的接口
[Huawei] interface GigabitEthernet0/0/24
标记该端口为信任端口(允许接收DHCP响应)
[Huawei-GigabitEthernet0/0/24] dhcp snooping trusted
查看全局和VLAN状态
[Huawei] display dhcp snooping configuration
查看接口信任状态
[Huawei] display dhcp snooping interface GigabitEthernet0/0/24
MAC地址漂移
当一个MAC地址在两个端口之间频繁发生迁移时,即会产生MAC地址漂移现象
产生的原因:
网络环路
原因:网络中存在物理或逻辑环路(如未启用生成树协议STP,或STP配置错误),导致同一数据帧通过不同路径到达交换机,触发MAC表反复更新
表现:同一MAC地址在多个端口被检测到,伴随广播风暴和高CPU占用率
攻击或欺骗
原因:攻击者伪造源MAC地址发起泛洪攻击(如MAC Flooding),或通过ARP欺骗诱导交换机错误学习MAC地址
表现:短时间内大量未知MAC地址涌入,导致合法MAC地址表项被覆盖
MAC地址漂移检测:
MAC地址漂移检测是对MAC地址漂移现象进行检测的功能。MAC地址漂移检测是利用MAC地址学习时接口跳变实现的,因此能提供的信息与MAC地址学习相关,包括MAC地址、VLAN,以及跳变的接口等诊断信息。其中跳变的接口即为可能出现环路的接口。网络管理员根据网络中每台设备上出现的跳变接口,以及网络拓扑,判断环路的源头
基于VLAN的MAC地址漂移检测
- 该功能可以检测指定VLAN下的所有的MAC地址是否发生漂移
- 当MAC地址发生漂移后,可以配置指定的动作,例如告警、阻断接口或阻断MAC地址
mac-address flapping detection vlan <vlan-id>
例如VLAN 10
动作1:仅记录日志(默认)
mac-address flapping trigger alarm vlan <vlan-id>
动作2:自动关闭端口(Error-Down)
mac-address flapping trigger error-down vlan <vlan-id>
全局MAC地址漂移检测
- 该功能可以检测设备上的所有的MAC地址是否发生了漂移
- 若发生漂移,设备会上报告警到网管系统
- 用户也可以指定发生漂移后的处理动作,例如将接口关闭或退出VLAN
mac-address flapping detection
全局启用MAC漂移检测
mac-address flapping trigger alarm
动作1:仅记录日志(默认)
mac-address flapping trigger error-down
动作2:自动关闭端口(Error-Down)并设置恢复时间
error-down auto-recovery cause mac-address-flapping interval 300
300秒后自动恢复
禁止同优先级端口漂移
undo mac-learning priority allow-flapping
配置端口优先级 数越大优先级越高
interface GigabitEthernet0/0/1
mac-learning priority <0-3> vlan <vlan-id>
添加MAC地址白名单
mac-address flapping detection vlan <vlan-id> exclude-mac <MAC地址>
配置MAC地址漂移检测功能
loop-detect eth-loop { [ block-mac ] block-time block-time retry-times retry-times |(或者) alarm-only }
block-mac 启用MAC地址阻断功能 block-time 设置MAC地址被阻塞的持续时间
retry-times 在解除阻塞后,重新检测环路的次数 alarm-only 仅触发告警
防止MAC地址的漂移
根本措施:
- 消除网络环路: 如启用生成树协议(STP/RSTP/MSTP)
- 检查冗余链路
直接防御:
- 配置端口安全 :如 限制端口学习MAC数量
- 静态绑定关键设备的MAC地址
防御网络攻击(安全加固)
如启用:DHCP Snooping