金海峰
(江阴职业技术学院,江苏 江阴 214405)
随着企业网络规模的不断扩大,尤其是智能手机、IPAD、无线笔记本,以及各种智能终端的普及与应用,传统手工配置IP地址的方式显得不够友好,管理工作量大,还极易造成IP地址冲突,影响终端的网络应用。DHCP作为一种典型的动态IP地址分配协议,通过配置DHCP服务器,可以对全网IP地址集中管理、统一分配,极大简化了IP地址分配、管理工作,提高工作效率,同时也增强了用户的网络体验感。
动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了一种动态分配IP地址的机制,DHCP使用C/S方式。当一台DHCP客户端启动时(或者手动开启地址更新进程),就广播一个DHCP DISCOVER报文,网络中的DHCP服务器收到DHCP DISCOVER报文后,从本地地址池中选择一个IP地址,以广播方式发送DHCP OFFER报文给客户端。DHCP客户端收到DHCP OFFER报文后,发送DHCP QEQUEST报文,申请IP地址的使用权。最后,DHCP服务器发送DHCP ACK确认地址分配。
DHCP DISCOVER报文是以广播形式发送的,这就要求每个子网中必须部署有DHCP服务器,因为三层设备的接口不转发广播报文。如果需要部署一台服务器同时面向多个子网提供服务,就必须在三层设备上启用DHCP RELAY功能,由三层设备负责转发DHCP服务器与客户端之间的DHCP报文[1]。
如图1所示,实验依托仿真平台HCL,选用PC主机、交换机、路由等设备,模拟DHCP网络。其中交换机SW1模拟接入设备,交换机SW2作为核心设备,模拟三层通信,主要起到DHCP中继代理的作用,DHCP服务器则是选用路由器来模拟。
图1 实验拓扑结构
主机、服务器以及网络设备IP地址详见表1所示。
表1 地址信息
参照图1和表1,完成交换机 SW1、SW2和DHCP服务器-1、DHCP服务器-2各IP地址、Vlan的配置。
(1)交换机SW1的配置
以DHCP服务器-1为例,阐述DHCP服务器配置方法。
至此,全网连通性基本实现了,但是观察主机Vlan221的地址分配情况,却发现地址形式为169.254.0.0/16。169.254.0.0/16网段地址,一般出现于:DHCP客户端发送的DHCP请求,没有得到DHCP服务器的响应,即动态分配失败后,由系统自动分配的地址。由此可见,主机Vlan221发送的DHCP请求数据报可能在交换机SW2上被丢弃了,因为三层设备不转发二层广播包。
3.3.1 配置方法
DHCP中继代理可以实现在不同子网之间处理和转发DHCP信息[3]。
3.3.2 过程分析
启动抓包程序Wireshark,抓取交换机SW1的接口G1/0/1、交换机SW2的接口G1/0/1上的通信报文,报文信息分别如图2、图3所示。
图2 接口SW1.G1/0/1上的DHCP报文
图3 接口SW2.G1/0/1上的DHCP报文
分析图2、图3可以得知:主机Vlan221设置成动态获取IP地址后,该主机以广播形式(图2第1条报文,目标地址为有限广播地址255.255.255.255)发送DHCP DISCOVER报文,该广播报文由交换机SW2转发到DHCP服务器(图3第1条报文),DHCP服务收到DHCP DISCOVER报文后(图3第2条报文),以单播方式向交换机SW2发送DHCP OFFER报文,该报文再由SW2广播给主机Vlan221(图2第2条报文),后续的DHCP REQUEST、DHCP ACK报文也由中级代理交换机SW2转发。
同时,打开图2第1条和图3第1条报文详细信息(如图4、图5所示),不难发现:DHCP客户端通信端口为UDP68、DHCP中级代理和DHCP服务器通信端口为UDP67。在应用了ACL的DHCP网络中,必须依据端口号放行DHCP报文,否则会影响地址动态分配。
图4 主机发送的DHCP DISCOVER报文
图5 中继代理发送的DHCP DISCOVER报文
从图5可以发现,中继代理转发的DHCP DISCOVER报文中,尽管源地址为223.223.223.1,即SVI1的地址,但该报文中携带了中继IP地址221.221.221.1,因此,DHCP服务器收到 DHCP DISCOVER报文后,发送DHCP OFFER的目标地址为221.221.221.1。
DHCP网络的安全性主要包括两方面:非法DHCP服务器和非法DHCP客户机。首先,非法DHCP服务器接入到网络后,根据DHCP工作机制,谁先相应DHCP DISCOVER报文,就由谁优先负责分配地址。假设非法DHCP服务器所分配的网关地址均指向自身,则有可能造成DHCP客户端发送的所有数据包都要经过非法DHCP服务器,即非法DHCP服务器就获取了该主机的报文,造成个人数据泄露。其次,攻击主机通过修改DHCP请求报文中的chaddr字段,不停地发送伪请求,直到耗尽DHCP地址池,导致正常DHCP客户端不能够获取地址,这种攻击方式被称为DHCP饥饿攻击。
DHCP Snooping是一种DHCP安全特性,在设备上开启DHCP Snooping后,DHCP请求报文通过信任接口发送到合法的DHCP服务器[4],可以有效阻止非法DHCP服务器。
3.4.1 禁止非法DHCP服务器
参照3.2配置,完成DHCP服务器-2的配置。在交换机SW1上启用DHCP Snooping,配置方法如下:
[SW1]dhcp snooping enable
[SW1]int GigabitEthernet 1/0/24
[SW1-GigabitEthernet1/0/24]dhcp snoopingtrust
在交换机SW1上开启DHCP Snooping后,DHCP请求报文可以通过信任端口G1/0/24转发出去,端口G1/0/11接受不到DHCP请求报文,从而有效阻止了非法DHCP服务器的接入。抓取交换机SW1上接口G1/0/11的报文,也可以验证确实没有DHCP DISCOVER报文通过。
3.4.2 防止DHCP饥饿攻击
在交换机SW1上开启DHCP Snooping,并在连接主机的接口上开启地址检查功能,即当DHCP请求报文中chaddr字段地址与源主机MAC地址一致时,认为是合法DHCP请求报文,进行后续处理。如果不一致,则丢弃该报文[5]。
HCL仿真环境下无法模拟DHCP攻击,此实验须在真实环境下,进行测试。DHCP攻击主机选用Kali,攻击手段选用 DHCPx。
测试过程如下:
(1)开启DHCP攻击
运行命令:sudo dhcpx-ieth0,命令执行结果如图6所示。
图6 Kali发起DHCP攻击
(2)观察DHCP服务器可用地址池
[DHCP-1]display dhcp server free-ip
IP Range from221.221.221.3 to221.221.221.254
稍等片刻后,重新观察可用地址池,发现可用地址变少了,说明DHCP攻击生效了,IP地址池正在逐渐耗尽。
[DHCP-1]display dhcp server free-ip
IP Range from 221.221.221.6 to221.221.221.254
(3)配置防DHCP饥饿攻击策略
[SW1]dhcp snooping enable
[SW1]int GigabitEthernet 1/0/24
[SW1-GigabitEthernet1/0/24]dhcp snooping trust[SW1]int GigabitEthernet 1/0/1
[H3C-GigabitEthernet1/0/1]dhcp snooping check mac-address
[H3C-GigabitEthernet1/0/1]dhcp snooping check request-message
[H3C-GigabitEthernet1/0/1]mac-address maxmac-count0
[H3C-GigabitEthernet1/0/1]undo mac-address max-mac-count enable-forwarding
[SW1]mac-address static 000c-29e9-fad4interface GigabitEthernet 1/0/1 Vlan 221
完成上述配置后,重新观察地址池,发现地址池没有任何变化,说明DHCP饥饿攻击失败了。
由此可以得出结论:在主机接入交换器上启用DHCP Snooping,在接入端口开启源地址、报文检查功能,并设置接口动态MAC地址表为0,即不允许非法源主机发送DHCP请求报文,而正常主机可以通过静态添加到MAC地址表中,以便动态获取IP地址信息。由此可以有效阻止DHCP饥饿攻击。
3.4.3 禁止静态IP地址主机入网
为了避免IP地址冲突,强制要求DHCP网络中所有主机必须动态获取地址,静态配置IP地址的主机禁止入网。
[SW1]dhcp snooping enable
[SW1]int GigabitEthernet 1/0/1
[SW1-GigabitEthernet1/0/1]dhcp snooping binding record
[SW1]Vlan221
[SW1-Vlan-221]arp detection enable
[SW1]int GigabitEthernet 1/0/24
[SW1-GigabitEthernet1/0/24]arp detection trust
[SW1-GigabitEthernet1/0/24]dhcp snooping trust
下联端口开启DHCP Snooping表项记录功能,上联端口配置成信任状态后,主机Vlan221非法配置了静态IP地址后,发现无法访问网络。抓取交换机SW1的接口G1/0/1上的数据包,也可以发现ping数据包都没有得到回应,即数据包丢失了。
使用DHCP服务可以避免手工配置IP地址造成的配置错误、地址冲突,还可以减少手工配置花费的开销,提高网络的使用时效。针对物理设备上分析、研究DHCP原理可操作性差,不利于教学问题,在仿真环境下,以典型三层网络架构为应用模型,给出DHCP基本配置、中继代理、安全控制的详细配置方法,并深入分析研究了DHCP工作原理、工作机制,使师生深刻理解了DHCP工作原理,掌握了DHCP配置方法和安全控制方式,实验教学效果良好。