1.DHCP Snooping基础


1.1 DHCP Snooping定义

DHCP Snooping是DHCP的一种安全特性,用于保证DHCP客户端从合法的DHCP服务器获取IP地址,并记录DHCP客户端IP地址与MAC地址等参数的对应关系,防止网络上针对DHCP攻击。

防止攻击类型:

  1. DHCP Server仿冒者攻击
  2. DHCP Server拒绝服务攻击
  3. 仿冒DHCP报文攻击

1.2 DHCP Snooping优点

  • 设备具有防御网络上DHCP攻击的能力,增强了设备的可靠性,保障通信网络的正常运行。
  • 为用户提供更安全的网络环境,更稳定的网络服务。

2.DHCP Snooping基本原理

2.1 信任功能

  • DHCP Snooping的信任功能,能够保证客户端从合法的服务器获取IP地址。

网络中如果存在私自架设的DHCP Server仿冒者,则可能导致DHCP客户端获取错误的IP地址和网络配置参数,无法正常通信。DHCP Snooping信任功能可以控制DHCP服务器应答报文的来源,以防止网络中可能存在的DHCP Server仿冒者为DHCP客户端分配IP地址及其它配置信息。

DHCP Snooping信任功能将接口分为信任接口和非信任接口:

  • 信任接口可以正常接收DHCP服务器响应的DHCP ACK、DHCP NAK和DHCP Offer报文。
  • 非信任接口在接收到DHCP服务器响应的DHCP ACK、DHCP NAK和DHCP Offer报文后,会丢弃该报文。
管理员在部署网络时,一般将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其他接口设置为非信任接口,从而保证DHCP客户端只能从合法的DHCP服务器获取IP地址,私自架设的DHCP Server仿冒者无法为DHCP客户端分配IP地址。

2.2 分析功能

开启DHCP Snooping功能后,设备能够通过分析DHCP的报文交互过程,生成DHCP Snooping绑定表,绑定表项包括客户端的MAC地址、获取到的IP地址、与DHCP客户端连接的接口及该接口所属的VLAN等信息。
DHCP Snooping绑定表根据DHCP租期进行老化或根据用户释放IP地址时发出的DHCP Release报文自动删除对应表项。
处于安全性的考虑,管理员需要记录用户上网时所用的IP地址,确认用户申请的IP地址和用户使用的主机的MAC地址的对应关系。在设备通过DHCP Snooping功能生成绑定表后,管理员可以方便的记录DHCP用户申请的IP地址与所用主机的MAC地址之间的对应关系。
由于DHCP Snooping绑定表记录了DHCP客户端IP地址与MAC地址等参数的对应关系,故通过对报文与DHCP Snooping绑定表进行匹配检查,能够有效防范非法用户的攻击。为了保证设备在生成DHCP Snooping绑定表时能够获取到用户MAC等参数,DHCP Snooping功能需应用于二层网络中的接入设备或第一个DHCP Relay上。

2.3 DHCP Snooping支持的Option 82功能

概述:
在传统的DHCP动态分配IP地址过程中,DHCP Server不能够根据DHCP请求报文感知到用户的具体物理位置,以致同一VLAN的用户得到的IP地址所拥有的权限是完全相同的。由于网络管理者不能对同一VLAN中特定的用户进行有效的控制,即不能够控制客户端对网络资源的访问,这将给网络的安全控制提出了严峻的挑战。
RFC 3046定义了DHCP Relay Agent Information Option(Option 82),该选项记录了DHCP Client的位置信息。DHCP Snooping设备或DHCP Relay通过在DHCP请求报文中添加Option82选项,将DHCP Client的精确物理位置信息传递给DHCP Server,从而使得DHCP Server能够为主机分配合适的IP地址和其他配置信息,实现对客户端的安全控制。
Option82包含两个常用子选项Circuit ID和Remote ID。其中Circuit ID子选项主要用来标识客户端所在的VLAN、接口等信息,Remote ID子选项主要用来标识客户端接入的设备,一般为设备的MAC地址。
设备作为DHCP Relay时,使能或未使能DHCP Snooping功能都可支持Option82选项功能,但若设备在二层网络作为接入设备,则必须使能DHCP Snooping功能方可支持Option82功能。
Option82选项仅记录了DHCP用户的精确物理位置信息并通过DHCP请求报文中将该信息发送给DHCP Server。而如果需要对不同的用户部署不同的地址分配或安全策略,则需DHCP Server支持Option82功能并在其上已配置了IP地址分配或安全策略。
Option82选项携带的用户位置信息与DHCP Snooping绑定表记录的用户参数是两个相互独立的概念,没有任何关联。Option82选项携带的用户位置信息是在DHCP用户申请IP地址时(此时用户还未分配到IP地址),由设备添加到DHCP请求报文中。DHCP Snooping绑定表是在设备收到DHCP Server回应的DHCP Ack报文时(此时已为用户分配了IP地址),设备根据DHCP Ack报文信息自动生成。

实现:
设备作为DHCP Relay或设备在二层网络作为接入设备并使能DHCP Snooping功能时均可支持Option82功能。使能设备的Option82功能有Insert和Rebuild两种方式,使能方式不同设备对DHCP请求报文的处理也不同。

  • Insert方式:当设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则判断Option82选项中是否包含remote-id,如果包含,则保持Option82选项不变,如果不包含,则插入remote-id。
  • Rebuild方式:当设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则删除该Option82选项并插入管理员自己在设备上配置的Option82选项。

对于Insert和Rebuild两种方式,当设备接收到DHCP服务器的响应报文时,处理方式一致。

  • DHCP响应报文中有Option82选项:
    • 如果设备收到的DHCP请求报文中没有Option82选项,则设备将删除DHCP响应报文中的Option82选项,之后转发给DHCP Client。
    • 如果设备收到的DHCP请求报文中有Option82选项,则设备将DHCP响应报文中的Option82选项格式还原为DHCP请求报文中的Option82选项,之后转发给DHCP Client。
  • DHCP响应报文不含有Option82选项:直接转发。

3.DHCP Snooping应用场景


3.1 DHCP Server仿冒者攻击

攻击原理:
由于DHCP Server和DHCP Client之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其它网络参数。如果该DHCP服务器为用户分配错误的IP地址和其它网络参数,将会对网络造成非常大的危害,造成用户无法正常上网。

  • 如图所示,DHCP Discover报文是以广播形式发送,无论是合法的DHCP Server,还是非法的DHCP Server都可以接收到DHCP Client发送的DHCP Discover报文。

image.png

如果此时DHCP Server仿冒者回应给DHCP Client仿冒信息,如错误的网关地址、错误的DNS(Domain Name System)服务器、错误的IP等信息,如图2所示。DHCP Client将无法获取正确的IP地址和相关信息,导致合法客户无法正常访问网络或信息安全受到严重威胁。
image.png

解决方法:
为了防止DHCP Server仿冒者攻击,可配置设备接口的“信任(Trusted)/非信任接口(Untrusted)”工作模式。将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其它接口设置为非信任接口。此后,从“非信任”接口上收到的DHCP回应报文将被直接丢弃,这样可以有效防止DHCP Server仿冒者的攻击。
image.png

3.2 防止仿冒DHCP报文攻击

攻击原理
已获取到IP地址的合法用户通过向服务器发送DHCP Request或DHCP Release报文用以续租或释放IP地址。如果攻击者冒充合法用户不断向DHCP Server发送DHCP Request报文来续租IP地址,会导致这些到期的IP地址无法正常回收,以致一些合法用户不能获得IP地址;而若攻击者仿冒合法用户的DHCP Release报文发往DHCP Server,将会导致用户异常下线。

解决方法**
为了有效的防止仿冒DHCP报文攻击,可利用DHCP Snooping绑定表的功能。设备通过将DHCP Request续租报文和DHCP Release报文与绑定表进行匹配操作能够有效的判别报文是否合法(主要是检查报文中的VLAN、IP、MAC、接口信息是否匹配动态绑定表),若匹配成功则转发该报文,匹配不成功则丢弃。

3.3 防止DHCP Server服务拒绝攻击

攻击原理
如下图所示,若设备接口interface1下存在大量攻击者恶意申请IP地址,会导致DHCP Server中IP地址快速耗尽而不能为其他合法用户提供IP地址分配服务。
另一方面,DHCP Server通常仅根据DHCP Request报文中的CHADDR(Client Hardware Address)字段来确认客户端的MAC地址。如果某一攻击者通过不断改变CHADDR字段向DHCP Server申请IP地址,同样将会导致DHCP Server上的地址池被耗尽,从而无法为其他正常用户提供IP地址。
image.png
解决方法
为了抑制大量DHCP用户恶意申请IP地址,在使能设备的DHCP Snooping功能后,可配置设备或接口允许接入的最大DHCP用户数,当接入的用户数达到该值时,则不再允许任何用户通过此设备或接口成功申请到IP地址。
而对通过改变DHCP Request报文中的CHADDR字段方式的攻击,可使能设备检测DHCP Request报文帧头MAC与DHCP数据区中CHADDR字段是否一致功能,此后设备将检查上送的DHCP Request报文中的帧头MAC地址是否与CHADDR值相等,相等则转发,否则丢弃。

3.4 Option 82的典型应用

Option 82(DHCP Relay Agent Information Option)称为中继代理信息选项,该选项记录了DHCP Client的位置信息。DHCP Snooping设备或DHCP Relay通过在DHCP请求报文中添加Option82选项,将DHCP Client的位置信息传递给DHCP Server,从而使得DHCP Server能够为主机分配合适的IP地址和其他配置信息,并实现对客户端的安全控制。
image.png
如图1所示,用户通过DHCP方式获取IP地址。在管理员组建该网络时需要控制接口interface1下用户对网络资源的访问以提高网络的安全性。
在传统的DHCP动态分配IP地址过程中,DHCP Server是无法区分同一VLAN内的不同用户的,以致同一VLAN内的用户得到的IP地址所拥有的权限是完全相同的。
为实现上述目的,管理员在使能RouterA的DHCP Snooping功能之后可使能其Option82功能。之后RouterA在接收到用户申请IP地址发送的DHCP请求报文时,将会在报文中插入Option82选项,以标注用户的精确位置信息,譬如MAC地址、所属VLAN、所连接的接口号等参数。DHCP Server在接收到携带有Option82选项的DHCP请求报文后,即可通过Option82选项的内容获悉到用户的精确物理位置进而根据其上已部署的IP地址分配策略或其他安全策略为用户分配合适的IP地址和其他配置信息。
Option82选项仅记录了DHCP用户的精确物理位置信息并通过DHCP请求报文中将该信息发送给DHCP Server。而如果需要对不同的用户部署不同的地址分配或安全策略,则需DHCP Server支持Option82功能并在其上已配置了IP地址分配或安全策略。

3.5 通过LDRA功能感知用户位置信息

LDRA称为轻量级DHCPv6中继代理,该中继代理能够记录用户位置信息并将其发送到DHCPv6 Server,从而使得DHCPv6 Server能够获取到用户详细的物理位置信息,以实现对用户客户端部署诸如地址分配、计费、接入控制等策略。

如下图所示,用户通过DHCPv6方式获取IPv6地址。在管理员部署该网络时需要限制接口interface1下的用户对网络资源的访问以提高网络的安全性。
image.png
在传统的DHCPv6动态分配IPv6地址过程中,DHCPv6 Server无法获取到用户详细的物理位置信息,以致不能为interface1接口下的用户部署地址分配、接入控制等策略。
为解决上述问题,管理员在使能Router的DHCP Snooping功能之后,可使能其LDRA功能。这样,Router既能够获取用户详细的位置信息并将其发送到DHCPv6 Server。DHCPv6 Server即可根据用户的详细位置信息为其部署地址分配策略或其他安全策略。
LDRA功能仅是记录了DHCPv6用户的详细位置信息并通过RELAY-FORW报文将该信息发送给DHCPv6 Server,对不同的用户部署诸如地址分配、计费、接入控制等策略,由DHCPv6 Server实现。