DHCP snooping
目前DHCP协议(RFC2131)在应用的过程中遇到很多安全方面的问题,网络中存在一些针对DHCP的攻击,如DHCP Server仿冒者攻击、DHCP Server的拒绝服务攻击、仿冒DHCP报文攻击等。为了保证网络通信业务的安全性,引入DHCP Snooping技术。在DHCP Client和DHCP Server之间建立一道防火墙,以抵御网络中针对DHCP的各种攻击。
解决方法
为了防止DHCP Server仿冒者攻击,可配置设备接口的“信任(Trusted)/非信任(Untrusted)”工作模式。
将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其他接口设置为非信任接口。此后,从“非信任(Untrusted)”接口上收到的DHCP回应报文将被直接丢弃,这样可以有效防止DHCP Server仿冒者的攻击。如下图所示。
DHCP Snooping是如何工作的?
DHCP Snooping分为DHCPv4 Snooping和DHCPv6 Snooping,两者实现原理相似,以下以DHCPv4 Snooping为例进行描述。使能了DHCP Snooping的设备将用户(DHCP客户端)的DHCP请求报文通过信任接口发送给合法的DHCP服务器。之后设备根据DHCP服务器回应的DHCP ACK报文信息生成DHCP Snooping绑定表。后续设备再从使能了DHCP Snooping的接口接收用户发来的DHCP报文时,会进行匹配检查,能够有效防范非法用户的攻击。
DHCP Snooping绑定表
如下图所示的DHCP场景中,连接在二层接入设备上的PC配置为自动获取IP地址。PC作为DHCP客户端通过广播形式发送DHCP请求报文,使能了DHCP Snooping功能的二层接入设备将其通过信任接口转发给DHCP服务器。最后DHCP服务器将含有IP地址信息的DHCP ACK报文通过单播的方式发送给PC。在这个过程中,二层接入设备收到DHCP ACK报文后,会从该报文中提取关键信息(包括PC的MAC地址以及获取到的IP地址、地址租期),并获取与PC连接的使能了DHCP Snooping功能的接口信息(包括接口编号及该接口所属的VLAN),根据这些信息生成DHCP Snooping绑定表。以PC1为例,图中二层接入设备会从DHCP ACK报文提取到IP地址信息为192.168.1.253,MAC地址信息为MACA。再获取与PC连接的接口信息为if3,根据这些信息生成一条DHCP Snooping绑定表项。
DHCPsnooping 配置步骤
1. 交换机在全局模式激活DHCP snooping特性
2. 指定一个持久的dhcpsnooping绑定数据库位置
3.连接合法DHCP服务器的端口配置为trust
4.指定所为其他的端口(包括静态地址的主机)为非新人端口
5.其他非新忍的端口上配置DHCP限速和端口安全 --可选
6. 在特定vlan开启dhcp snooping
配置
host SW1配置
interface Ethernet0/0 #进入trunk接口 switchport trunk encapsulation dot1q switchport mode trunk spanning-tree portfast interface Ethernet0/2 #连接dhcpserver的接口
switchport access vlan 10
switchport mode access
host SW2配置
interface Ethernet0/0 switchport trunk encapsulation dot1q switchport mode trunk spanning-tree portfast
配置DHCP snooping
在交换机上全局开启DHCP snooping SW1(config)#ip dhcp snooping SW2(config)#ip dhcp snooping
在特定VLNA中启用DHCP snooping
SW1(config)#ip dhcp snooping vlan 10,20
SW2(config)#ip dhcp snooping vlan 10,20
把连接合法DHCP服务器的端口以及trunk接口配置为Trust SW1(config)#int rang e0/0-2 SW1(config-if-range)#ip dhcp snooping trust SW2(config)#int e0/0 SW2(config-if)#ip dhcp snooping trust #客户端到DHCP服务器方向进入交换机的trunk接口可以不配置为信任接口,但是离开交换机的trunk接口必须配置为trust