DHCP Snooping

时间:2024-05-21 13:27:11

DHCP Snooping

简介

DHCP Snooping技术用于防范利用DHCP报文进行的攻击行为。

定义

DHCP Snooping是一种DHCP安全特性,可以过滤不信任的DHCP消息并建立和维护一个DHCP Snooping绑定表。该绑定表包括MAC地址、IP地址、租约时间、绑定类型、VLAN ID、接口信息。DHCP Snooping的作用就如同在DHCP Client和DHCP Server之间建立一道防火墙。

目的

DHCP Snooping主要是解决网络中应用DHCP时设备遇到DHCP DoS攻击、DHCP Server仿冒者攻击、ARP中间人攻击及IP/MAC Spoofing攻击的问题。
为此,设备已经实现了MAC地址限制,DHCP Snooping安全绑定、IP + MAC绑定、OPTION82特性等安全性方面的功能,为设备在网络中应用DHCP功能提供更高的安全性。
DHCP Snooping既可以应用在设备的二层接口上,又可应用在设备三层接口上,分别如图1和图2所示。

图1 在设备的二层接口下应用DHCP Snooping的典型组网
DHCP Snooping
图2 在设备的三层接口下应用DHCP Snooping的典型组网
DHCP Snooping
DHCP Snooping功能用于防止:

DHCP Server仿冒者攻击
中间人攻击与IP/MAC Spoofing攻击
改变CHADDR值的DoS攻击

根据不同的攻击类型,DHCP Snooping提供不同的工作模式,见表1。

表1 攻击类型与DHCP Snooping工作模式对应表

攻击类型 DHCP Snooping工作模式
DHCP Server仿冒者攻击 信任(Trusted)/不信任(Untrusted)
中间人攻击/IP/MAC Spoofing攻击 DHCP Snooping绑定表
改变CHADDR值的DoS攻击 检查DHCP报文的CHADDR字段

原理描述

介绍DHCP Snooping的实现原理。

DHCP Server仿冒者攻击

由于DHCP请求报文以广播形式发送,所以DHCP Server仿冒者可以侦听到此报文。DHCP Server仿冒者回应给DHCP Client仿冒信息,如错误的网关地址、错误的DNS服务器、错误的IP等,达到DoS(Deny of Service)的目的。如图1所示。

图1 DHCP Server仿冒者攻击示意图
DHCP Snooping
为防止DHCP Server仿冒者攻击,可使用DHCP Snooping的“信任(Trusted)/不信任(Untrusted)”工作模式。
把某个物理接口或者VLAN的接口设置为“信任(Trusted)”或者“不信任(Untrusted)”。凡是从“不信任(Untrusted)”接口上收到的DHCP Reply(Offer、ACK、NAK)报文直接丢弃,这样可以隔离DHCP Server仿冒者攻击。如图2所示。

图2 Trusted/Untrusted工作模式示意图
DHCP Snooping
中间人攻击

首先,中间人向客户端发送带有自己的MAC地址和服务器IP地址的报文,让客户端学到中间人的IP和MAC,达到仿冒DHCP Server的目的。达到目的后,客户端发到DHCP服务器的报文都会经过中间人;然后,中间人向服务器发送带有自己MAC和客户端IP的报文,让服务器学到中间人的IP和MAC,达到仿冒客户端的目的,如图3所示。
中间人完成服务器和客户端的数据交换。在服务器看来,所有的报文都是来自或者发往客户端;在客户端看来,所有的报文也都是来自或者发往服务器端。但实际上这些报文都是经过了中间人的“二手”信息。

图3 中间人攻击示意图
DHCP Snooping
IP/MAC Spoofing攻击

攻击者向服务器发送带有合法用户IP和MAC的报文,令服务器误以为已经学到这个合法用户的IP和MAC,但真正的合法用户不能从服务器获得服务。如图4所示。

图4 IP/MAC Spoofing攻击示意图
DHCP Snooping
为隔离中间人攻击与IP/MAC Spoofing攻击,可使用DHCP Snooping绑定表工作模式。
当接口接收到ARP或者IP报文,使用ARP或者IP报文中的“源IP+源MAC”匹配DHCP Snooping绑定表。如果匹配就进行转发,如果不匹配就丢弃。如图5所示。
对于配置静态IP的用户,由于没有通过DHCP请求而获得IP,所以,没有对应的DHCP Snooping绑定表项,该用户发出的ARP、IP报文会被丢弃,从而防止该用户非法使用网络。只能通过配置静态DHCP Snooping绑定表来允许静态IP用户访问网络。
对于盗用其他合法用户IP地址的用户,由于同样不是自己通过DHCP请求而获得IP的,IP对应的DHCP Snooping绑定表项中的MAC以及接口与盗用者的不一致,盗用者发出的ARP、IP报文会被丢弃,从而防止该盗用者非法使用网络。

图5 应用IP与MAC绑定表示意图
DHCP Snooping
DHCP Snooping绑定表中的表项分为两种:

通过命令行配置的静态表项,只能通过命令行删除。
通过DHCP Snooping功能自动学习到的动态表项,并根据DHCP租期进行老化。

DHCP Snooping绑定表中的动态表项是根据DHCP server回的ACK报文自动生成的。根据网络设备层次不同,动态表项的建立过程也不同:

在二层设备上
如果使能了Option82选项,二层设备通过侦听DHCP报文,在DHCP请求报文中插入Option82,DHCP Server会在ACK报文中携带Option82选项。二层设备分析Option82选项即可确定DHCP Reply报文回应给哪个接口,从而建立对应的DHCP Snooping绑定表项。
如果未使能Option82选项,二层设备根据MAC地址表来识别不同的接口信息。

在三层设备上
对于配置为“不信任”的接口,设备通过侦听DHCP Reply消息,获取DHCP Server分配给用户的IP地址、用户MAC地址、报文通过的接口等信息,建立不信任侧的IP与MAC绑定表项。该表项与分配给用户的IP地址具有同样的租期,租约到期或者用户释放该IP地址则自动删除该表项。

改变CHADDR值的DoS攻击

如果攻击者改变的不是数据帧头部的源MAC,而是改变DHCP报文中的CHADDR(Client Hardware Address)值来不断申请IP地址,如图6所示,而设备仅根据数据帧头部的源MAC来判断该报文是否合法,那么“MAC地址限制”方案不能起作用。

图6 改变CHADDR的DOS攻击
DHCP Snooping
这时,可以使用DHCP Snooping检查DHCP请求报文中CHADDR字段的功能。如果该字段跟数据帧头部的源MAC相匹配,便转发报文;否则,丢弃报文。

Option82

Option82报文格式
Option82是DHCP报文的一个特殊字段,供DHCP Relay设置,用来标识DHCP Request报文的发送路径。
客户端发送的DHCP请求报文,经过DHCP Relay时,DHCP Relay为DHCP Request报文填充Option82字段,DHCP Server收到含有Option82字段的DHCP请求报文时,在DHCP Relay报文中原样添加该字段返回给DHCP Relay,DHCP Relay根据relay报文中携带的Option82字段确定发送给那个接口。
如图7所示,Option82的Code字段为82,Length字段标识代理信息字段的字节数,iN为代理信息字段子选项。子选项由“子选项编号/长度值/子选项值”的元组序列组成。如图8所示,SubOpt为子选项的编号,Length字段标识代理信息子选项内容的长度。在Option82字段中,必须要定义一个子选项,子选项可以为空,因此Option82字段最短长度为2。

图7 Option82报文格式
DHCP Snooping
图8 Option82报文格式
DHCP Snooping
最初分配的DHCP中继代理子选项为代理路径ID子选项和代理远程ID子选项。DHCP服务器可以根据路径ID作为IP地址分配和其他参数指定的策略。
设备除了支持子选项1之外,还支持子选项9。用来标识本设备添加的路径ID信息。

子选项9的作用:

对于接口转发的DHCP应答报文,如果Option82中含有子选项9,并且子选项9中有厂商信息,设备就可以解析该字段,解析成功后,取出接口信息,把子选项9中的厂商信息字段剥掉,进行报文转发。

对于建立DHCP Snooping绑定表,首先解析该DHCP报文是不是DHCP应答报文,如果是DHCP应答报文,根据子选项9中取到的接口信息建立DHCP Snooping绑定表;否则,不能建立DHCP Snooping绑定表。

Option82既可应用在二层设备上,又可应用在三层设备上。三层设备可以通过DHCP服务器使用Option82选项执行地址分配策略或其他策略;二层设备可以通过分析Option82选项确定DHCP Reply报文回应给哪个接口,从而建立对应的IP与MAC绑定表项。下面分别描述这两种情况。

在二层设备上插入Option82
如图9所示,用户设备首先接入二层设备,然后通过一个二层网络连接到DHCP Relay或者DHCP Server。
如果在这个二层设备上启用了DHCP Snooping,DHCP Reply报文可能是广播报文。二层设备可以根据报文的MAC地址查找VLAN,确定DHCP回应报文应该回给哪个接口,建立对应的IP与MAC地址绑定表项。
如果需要在二层设备上侦听DHCP报文,在DHCP Discover报文中插入Option82,DHCP Server会在回应报文中携带Option82选项。二层设备可以通过分析Option82选项确定DHCP Offer报文回应给哪个接口,从而建立对应的IP与MAC绑定表项。并且将DHCP Reply报文中的Option82剥离后发给用户。

图9 在二层设备上插入Option82
DHCP Snooping
在三层设备上插入Option82
在三层设备上插入Option82时,三层设备通常是指DHCP Relay Agent。
如图10所示,DHCP Relay Agent使能Option82功能后将Option82插入到用户发送的Discover和Request报文中,DHCP服务器通过识别Option82来执行IP地址分配策略或其它策略。
DHCP服务器的响应报文也带有Option82,DHCP Relay Agent收到带有Option82的响应报文后,将Option82剥离,然后发给用户。
图10 在三层设备上插入Option82
DHCP Snooping
Option82的实现
客户端发送的DHCP请求报文,DHCP Relay检查其是否携带Option82域。

如果有Option82域。
检查其插入配置,插入Option82的配置分为Insert和Rebuild两种:

如果当前接口配置是Option82 Rebuild,说明该接口对已经携带的Option82不信任,修改Option82,修改后的Option82子选项为1。
如果当前接口配置是Option82 Insert,说明该接口对已经携带的Option82信任,不能对于该Option82的子选项1修改。需要检查Option82中是否有子选项9,如果没有子选项9,构造子选项9。
如果已有子选项9,检查是否有厂商信息字段,如果没有厂商信息字段,构造厂商信息字段,添加到其它厂商信息字段的后面。

如果没有Option82域。不区分接口针对Option82的插入配置是Insert还是Rebuild,都插入子选项1的Option82。
DHCP应答报文转发过程中,如果有子选项1或9,并且子选项1或9中有厂商信息字段,转发设备成功解析该字段后,把子选项1或9中的厂商信息字段剥掉,然后转发。

内容为官方文档摘抄,仅供个人学习