「DHCP」- DHCP Snooping

  CREATED BY JENKINSBOT

问题描述

目前 DHCP 协议在应用的过程中遇到很多安全方面的问题,网络中存在一些针对 DHCP 的攻击,如 DHCP Server 仿冒者攻击、DHCP Server 的拒绝服务攻击、仿冒 DHCP 报文攻击等等;

解决方案

引入 DHCP Snooping 技术,以保证网络通信业务的安全性,在 DHCP Client 和 DHCP Server 间,DHCP Snooping 建立一道防火墙,以抵御网络中针对 DHCP 的各种攻击;

DHCP Snooping 是 DHCP 的一种安全特性,用于保证 DHCP Client 从 合法的 DHCP Server 获取网咯地址;

原理简述

DHCP Snooping 主要是通过 DHCP Snooping 信任功能DHCP Snooping 绑定表 实现 DHCP 网络安全:
1)信任功能:能够保证 DHCP Client 从合法的 DHCP Server 获取网络地址;
2)绑定表:设备在其中记录 DHCP Client 的 网络地址 与 物理地址 等参数的对应关系,防止网络上针对 DHCP 攻击;

信任功能

DHCP Snooping 信任功能,能将接口分为两类:

信任接口
1)通常连接 DHCP Server;
2)正常接收 DHCP Server 响应的 DHCP ACK、DHCP NAK、DHCP Offer 报文;

非信任接口
1)通常连接 DHCP Client;对于 DHCP Client 的请求报文,设备只会通过信任接口发送给合法的 DHCP Server,不会转发到非信任接口;
2)非信任接口收到的 DHCP Server 发送的 DHCP OFFER、DHCP ACK、DHCP NAK 报文会被直接丢弃;

绑定表

当使能 DHCP Snooping 功能后,该二层接入设备:
1)将从收到 DHCP ACK 报文中提取关键信息(包括 PC 的 MAC 地址、获取到的 IP-ADDR、地址租期)
3)并获取与 PC 连接的使能 DHCP Snooping 功能的接口信息(包括接口编号及该接口所属的 VLAN),根据这些信息生成 DHCP Snooping 绑定表;
2)根据 DHCP 租期进行老化 或 根据用户释放 IP-ADDR 时发出的 DHCP Release 报文自动,DHCP Snooping 绑定表来删除对应表项;

鉴于 DHCP Snooping 绑定表记录 DHCP Client IP-ADDR 与 MAC-ADDR 等参数的对应关系,故通过对报文与 DHCP Snooping 绑定表进行匹配检查,能够有效防范非法用户的攻击;

补充说明:
1)DHCP Snooping 绑定表能够进行手工配置,并不是必须依赖 DHCP 功能;

特性说明

WIP

应用场景

WIP

配置案例

// 开启 DHCP Snooping 特性
// 在 VLAN 下,执行此命令,则对设备所有接口接收到的属于该 VLAN 的 DHCP 报文命令功能生效;
// 在接口下,当配置该命令的接口,默认 Untrust 状态:收到 DHCP 请求报文后,转发给所有的信任接口;收到 DHCP 响应报文后丢弃;
[Huawei] dhcp snooping enable [ ipv4 | ipv6 ]
[Huawei-vlan2] dhcp snooping enable
[Huawei-GigabitEthernet0/0/1] dhcp snooping enable

# 配置该命令的接口,收到 DHCP 请求报文后,转发给所有的信任接口,如果没有其他信任接口,则丢弃该 DHCP 请求报文;
# 收到 DHCP 响应报文后,只转发给连接对应客户端的并且配置命令 dhcp snooping enable 的接口,如果查不到上述接口,则丢弃该 DHCP 响应报文;
[Huawei-GigabitEthernet0/0/1] dhcp snooping trusted                             // 缺省情况下,设备接口为非信任状态;

# VLAN 视图下配置接口为“信任”状态
# 在 VLAN 视图下执行此命令,则命令功能仅对加入该 VLAN 的接口收到的属于此 VLAN 的 DHCP 报文生效;
[Huawei-vlan2] dhcp snooping trusted interface interface-type interface-number

# (可选)配置丢弃 GIADDR 字段非零的 DHCP 报文
# 使能检测 DHCP Request 报文中 GIADDR 字段是否非零的功能。此命令同时可以在 VLAN 视图或接口视图下进行配置;
# 在 VLAN 下,执行此命令,则对设备所有接口接收到的属于该 VLAN 的 DHCP 报文命令功能生效;
# 在 Intf 下,执行该命令,则对该接口下的所有 DHCP 报文命令功能生效;
[Huawei] dhcp snooping check dhcp-giaddr enable vlan { vlan-id1 [ to vlan-id2 ] }

# 手动添加绑定表项
[WIP]

案例:内网 DHCP 防护

# [SW1]
vlan 10
 dhcp snooping enable
 dhcp snooping check dhcp-chaddr enable
 dhcp snooping max-user-number 2
 dhcp snooping trusted interface GigabitEthernet0/0/3

[SW1]display dhcp snooping user-bind all
DHCP Dynamic Bind-table:
Flags:O - outer vlan ,I - inner vlan ,P - map vlan
IP Address       MAC Address     VSI/VLAN(O/I/P) Interface      Lease         

--------------------------------------------------------------------------------
192.168.10.252   5489-980a-79e2  10  /--  /--    GE0/0/2        2022.03.29-01:03
192.168.10.253   5489-982f-7d2e  10  /--  /--    GE0/0/1        2022.03.29-01:04
--------------------------------------------------------------------------------
print count:           2          total count:           2

1)开启 DHCP Snooping 特性,来防止非法 DHCP Server 响应:
2)开启 Max User Number 特性,来防止限制 Stravation Attack(限制绑定数量);
3)通过 Check CIAddr 特性,检查客户端物理地址,防止 Stravation Attack(通过修改 CIAddr 的攻击);