基于端口信任的DHCP-SNOOPING防范对策研究与实现
2022-07-01李春平
李春平
(广东白云学院大数据与计算机学院,广州 510000)
0 引言
DHCP是一种动态主机分配协议,可以为IP网络中的主机自动分配IP 地址。由于DHCP 协议在安全功能方面没有专门的定义,导致网络中非授权的DHCP 服务器对外提供DHCP 服务,网络中的用户主机一旦接受非授权的DHCP 服务器分配的无效IP 地址等参数,将造成用户端主机不能正常访问网络。解决的办法是在局域网连接设备上实施DHCP Snooping 技术,对授权的DHCP 服务器采取端口信任策略,对非授权的DHCP 服务器采取端口限制策略,阻止非授权的DHCP服务器提供DHCP offer及ACK报文。
1 DHCP工作原理概述
1.1 IP地址配置方式
用户桌面主机IP地址的配置方式分为手工配置和自动获取两种方式。其中,手工配置是指用户自己设置IP 地址、子网掩码、默认网关以及DNS服务器地址等参数,这种配置方式要求用户对本地网络地址参数比较熟悉,否则容易出错,导致不能正常连通网络,也可能导致IP地址冲突,影响其它用户对网络的访问。而自动获取是指通过DHCP 服务器获取IP 地址和默认网关、DNS地址等参数,不需要用户手工配置,其前提是网络中必须有受信任的DHCP服务器。
1.2 DHCP工作过程
如图1 所示,DHCP 工作过程可分为如下几个步骤:
图1 DHCP工作原理
(1)DHCP 客户端申请及服务器响应。可以概括为四个阶段:Client DHCPDISCOVER→server DHCPOFFER→Client DHCPREQUEST→server DHCPACK。成功后DHCP 服务器将IP 地址等参数以租约的形式发给客户端。
(2)当客户端申请的租约到期时,客户端需重新申请IP 地址进行续租。此时服务器端对客户端续租申请进行响应,同意续租,或将新的IP地址参数发送给客户端。
1.3 DHCP报文格式
DHCP 报文在传输层通过UDP 进行封装,其对应的服务端和客户端UDP 端口分别为67,68,封装格式如图2所示。
图2 DHCP报文格式
DHCP 报文报头部分OP Code、Hardware Type、Hardware Address Length、Hops 四个字段各占一个字节,报文内容部分的CIADDR、YIADDR、SIADDR、GIADDR 四个字段各占四个字节。其中:
(1)OP Code 指明报文的操作类型,分为请求报文和应答报文。
请求报文包括DHCP Discover、DHCP Request、DHCP Release、DHCP Inform 和DHCP Decline。
应答报文包括DHCP Offer、DHCP ACK 和DHCP NAK。
(2)Hardware Type 指 明DHCP 客 户 端 的MAC 地址类型,其值为1 时表示的是以太网MAC地址类型。
(3)Hardware Address Length 指明DHCP 客户端的MAC 地址长度。其值为6 时表示的是以太网MAC地址长度为6个字节。
(4)Hops即跳数,指明DHCP中继代理的数目,默认值为0。当DHCP 客户端和DHCP 服务器位于不同的网络时,需要中间设备提供DHCP中继代理服务,将来自客户端的DHCP 请求报文以单播的形式重定向到DHCP服务器。
(5)DHCP 内 容部 分 中的YIADDR 字段,DHCP 服务器分配给客户端的IP 地址被封装在这个字段中。
2 DHCP-SNOOPING 防范对策
2.1 DHCP仿冒欺骗
在局域网中,DHCP服务对终端用户是透明的,即用户并不清楚DHCP 服务器的来源。如果网络中存在着多个DHCP服务器,将会给IP地址分配造成混乱,导致用户不能获得正确的IP地址。例如,仿冒者可以私自安装并运行DHCP服务程序,将自己伪装成一台为网络中的用户提供DHCP 服务的主机。用户主机并不能辨别DHCP服务器的合法性,如果用户主机第一个接收到的是来自仿冒DHCP 服务器发送的DHCP 提供报文,而这个报文中含有待分配给用户主机的IP 地址、默认网关以及DNS 服务器地址等参数。用户主机如果接受这些IP 地址参数分配,将导致用户主机无法正常访问网络。
2.2 DHCP snooping
为了阻断非信任的DHCP 服务器提供DHCP服务,可以在交换机上使用DHCP Snooping 技术。DHCP Snooping 是一种应用在局域网上的DHCP安全特性,以太网交换机支持在每个虚拟局域网基础上启用DHCP Snooping 功能,从而实现对来自虚拟局域网域内的所有非信任DHCP报文的拦截。
在DHCP Snooping 技术中,将交换机的端口分为信任(trusted)端口和非信任(untrusted)端口两种类型。默认情况下,交换机所有端口都是Untrusted 端口。在 进 行DHCP Snooping 配 置时,可以将与信任的DHCP 服务器相连的交换机端口配置为Trusted 端口,这样交换机从Trusted 端口接收到的DHCP Offer 和DHCP ACK报文会正常转发,从而保证信任的DHCP 服务器报文能正常通过交换机,将IP 地址及其它网络参数分配给用户主机;而其它从Untrusted 非信任端口接收到的DHCP Offer 和DHCP ACK 报文,交换机根据DHCP Snooping 端口策略会直接丢弃,不再进行转发。这样可以有效地阻止网络中其它的仿冒DHCP 服务器提供的虚假服务,从而阻断非信任的DHCP 服务器分配无效的IP地址及其他网络参数给用户主机。
通过将授权的DHCP 服务器与交换机连接的端口设置为信任端口,其他交换机端口设置为非信任端口,可以有效防止仿冒的DHCP 服务器欺骗和攻击网络。DHCP Snooping 特性还可以对非信任端口的DHCP 报文进行限速。默认情况下每秒15 个DHCP 报文,通过重新定义报文速率,限制在每个非信任端口下DHCP 报文速率,可以有效阻止DHCP 客户端的泛洪攻击。
3 仿真过程及分析
3.1 dhcp-snooping拓扑设计
使用Cisco Packet Tracer 工具进行仿真,拓扑图如图3所示。在以太网交换机上,分别连接有受信任的DHCP 服务器、非信任的DHCP 服务器以及DHCP客户端。
图3 dhcp-snooping拓扑图
3.2 dhcp-snooping配置
dhcp-snooping配置过程如下:
(1)DHCP 服务器配置。其中一台是受信任的DHCP 服务器,另一台是非信任的DHCP 服务器。配置两台服务器的IP 地址,trusted 为172.16.10.1/24,Untrusted为172.16.10.254/24。
(2)在两台设备上配置DHCP 地址池选项,dhcp server功能置为ON。
trusted 服务器:网关、dns 设置为172.16.10.1,地址池起始地址为172.16.10.10,子网掩码为255.255.255.0,地址个数为10 个,配置好后保存。
Untrusted 服务器:网关、dns 设置为172.16.10.254,地址池起始地址为172.16.10.100 ,子网掩码为255.255.255.0,地址个数为10 个,配置好后保存。
(3)配置DHCP snooping
(4)验证DHCP snooping
从S1 交换机查看dhcp snooping 情况来看,来自f0/1端口的DHCP 服务是受信任的,其它端口的DHCP是受限制的。
3.3 测试与分析
3.3.1 DHCP客户端请求
(1)dhcp-client 申 请 租 用IP 地 址。打 开dhcp-client 客户端,在config 选项卡中将IP 地址设置为从DHCP获得。此时dhcp-client将发送请求报文,经过一段时间后,DHCP服务器进行响应并从地址池中分配IP 地址给dhcp-client 客户端租用。由于网络中有两台DHCP 服务器,其中一台被设置为信任的服务器,即图3 中的trusted 服务器,另一台是受限制的服务器,即图3中的untrusted服务器,交换机接受trusted服务器提供的动态IP 地址服务,而将受限的untrusted服务器提供的DHCP offer报文丢弃。
仿真结果表明,dhcp-client 可以从trusted获得地址,如图4所示,dhcp-client 申请租用的IP地址为172.16.10.10。
图4 dhcp-client申请租用的IP地址
在dhcp-client 客户端命令行中使用ipconfig命令检查本地IP 配置参数,结果和图4 中的IP地址是一致的,能够从DHCP 服务器获得正常的IP地址。
(2)受限制的DHCP 服务测试。关闭交换机f0/1 端口,此时trusted 服务器的网络连接已断开,dhcp-client 不能从trusted 服务器获得IP 地址,也不能从untrusted 获得IP 地址,因为untrusted服务器被交换机设置为受限制的DHCP服务器。在dhcp-client 的命令行中输入下列命令进行测试:
此时,dhcp-client 的IP 地址租约已释放,IP地址显示为空。输入ipconfig/renew
命令重新获取。
显示DHCP 请求失败。尽管网络中有另一台DHCP 服务器,但用户并不能获取到IP 地址,原因是来自untrusted 的DHCP 服务是受限制的,其提供的DHCP offer报文被交换机S1过滤掉了。
3.3.2 DHCP服务器响应
重新激活交换机S1 的f0/1 端口,在Cisco Packet Tracer 工具的模拟运行中,跟踪DHCP 数据包事件列表,该事件列表将所有的DHCP 数据包经过的节点以发生的时间先后顺序逐条记录,从列表中可以清晰分析出DHCP 传输路径,dhcp-client客户端发送的DHCP 请求以广播的形式,经交换机S1 分别向trusted 和untrusted 服务器发送,其结果是untrusted 服务器的DHCP 响应被S1 交换机阻断了,而trusted 服务器的响应被正常送到dhcp-client客户端,如图5所示。
图5 DHCP事件
打开S1送达给dhcp-client客户端的数据包,其PDU 内容如图6 所示,在第3层内容中,显示源地址是172.16.10.1,此地址是trusted 服务器地址,证明提供给dhcp-client客户端的DHCP服务来自信任的trusted服务器。
图6 dhcp-client PDU信息
进一步研究DHCP 数据包内容,显示trusted服务器分配给dhcp-client 客户端的IP 地址是172.16.10.10,这是trusted 服务器地址池里的第一个IP地址,如图7所示。
图7 dhcp-client PDU中DHCP内容
仿真结果表明,dhcp-client 客户端可以从信任的trusted 服务器获得IP 地址,即使关闭f0/1 接 口,trusted 服务器 连 接断开,dhcp-client 也不能从受限的untrusted 服务器获得IP 地址,从而阻断了来自非授权的DHCP服务器的欺骗。
4 结语
在以太网环境中,DHCP Snooping 技术不仅可以解决网络中用户主机IP 地址自动分配的问题,同时可阻止DHCP 服务器仿冒欺骗和泛洪攻击带来的网络安全等问题。在具体实施过程中,可通过在交换机上实施端口信任机制,阻止非授权的DHCP 服务器提供的非法DHCP 服务,保护授权的DHCP 服务。DHCP Snooping 技术对于局域网中用户主机和DHCP 服务器之间的安全通信提供了一种自动化识别和防范手段,有效减轻了网络管理员维护和管理网络的成本,提高了网络安全性和可用性。