DHCP协议
目前DHCP(Dynamic Host Configuration Protocol)协议在应用的过程中遇到很多安全方面的问题,网络中存在各种针对DHCP的攻击,如DHCP Server仿冒者攻击、DHCP Server的拒绝服务攻击、仿冒DHCP报文攻击等。
DHCP报文类型说明:
DHCP discover:DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器。
DHCP offer:DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。
DHCP request:此报文用于以下三种用途。
客户端初始化后,发送广播的DHCP REQUEST报文来回应服务器的DHCP OFFER报文。
客户端重启后,发送广播的DHCP REQUEST报文来确认先前被分配的IP地址等配置信息。
客户端已经和某个IP地址绑定后,发送DHCP REQUEST单播或广播报文来更新IP地址的租约。
DHCP ACK:服务器对客户端的DHCP REQUEST报文的确认响应报文,客户端收到此报文后,才真正获得了IP地址和相关的配置信息
为了保证网络通信业务的安全性,引入了DHCP Snooping技术。
DHCP Snooping简介
定义
DHCP Snooping是DHCP(Dynamic Host Configuration Protocol)的一种安全特性,用于保证DHCP客户端从合法的DHCP服务器获取IP地址,并记录DHCP客户端IP地址与MAC地址等参数的对应关系,防止网络上针对DHCP攻击。
目的
目前DHCP协议(RFC2131)在应用的过程中遇到很多安全方面的问题,网络中存在一些针对DHCP的攻击,如DHCP Server仿冒者攻击、DHCP Server的拒绝服务攻击、仿冒DHCP报文攻击等。
作用
设备具有防御网络上DHCP攻击的能力,增强了设备的可靠性,保障通信网络的正常运行。
为用户提供更安全的网络环境,更稳定的网络服务。
DHCP Snooping的技术原理
使能DHCP Snooping的设备将DHCP客户端的DHCP请求通过信任接口发送给合法的DHCP服务器。之后设备根据DHCP服务器回应的DHCP ACK报文信息生成DHCP Snooping绑定表。后续设备再从使能了DHCP Snooping的接口接收用户发来的DHCP报文时,会进行匹配检查,能够有效防范非法用户的攻击。
DHCP Snooping信任功能
DHCP Snooping的信任功能,能够保证客户端从合法的服务器获取IP(Internet Protocol)地址。
如下图所示,网络中如果存在私自架设的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 Snooping场景中,一般将与合法DHCP服务器直接或间接连接的接口设置为信任接口(如下图中的if1接口),其他接口设置为非信任接口(如下图中的if2接口),使DHCP客户端的DHCP请求报文仅能从信任接口转发出去,从而保证DHCP客户端只能从合法的DHCP服务器获取IP地址,私自架设的DHCP Server仿冒者无法为DHCP客户端分配IP地址。
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绑定表项。
DHCP Snooping绑定表根据DHCP租期进行老化或根据用户释放IP地址时发出的DHCP Release报文自动删除对应表项。
由于DHCP Snooping绑定表记录了DHCP客户端IP地址与MAC地址等参数的对应关系,故通过对报文与DHCP Snooping绑定表进行匹配检查,能够有效防范非法用户的攻击。
为了保证设备在生成DHCP Snooping绑定表时能够获取到用户MAC等参数,DHCP Snooping功能需应用于二层网络中的接入设备或第一个DHCP Relay上。
在DHCP中继使能DHCP Snooping场景中,DHCP Relay设备不需要设置信任接口。因为DHCP Relay收到DHCP请求报文后进行源目的IP、MAC转换处理,然后以单播形式发送给指定的合法DHCP服务器,所以DHCP Relay收到的DHCP ACK报文都是合法的,生成的DHCP Snooping绑定表也是正确的。
DHCP Snooping Option82功能
功能概述
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功能。使能设备的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选项:直接转发。
DHCP Snooping技术应用场景
仿冒者攻击导致用户获取到错误参数
攻击原理:由于DHCP Server和DHCP Client之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其他网络参数。如果该DHCP服务器为用户分配错误的IP地址和其他网络参数,将会对网络造成非常大的危害。
解决方法:为了防止DHCP Server仿冒者攻击,可配置设备接口的“信任(Trusted)/非信任(Untrusted)”工作模式。
DHCP用户攻击导致合法用户无法正常使用网络
攻击原理:在DHCP网络中,静态获取IP地址的用户(非DHCP用户)对网络可能存在多种攻击,譬如仿冒DHCP Server、构造虚假DHCP Request报文等。这将为合法DHCP用户正常使用网络带来了一定的安全隐患。
解决方法:
为了有效的防止非DHCP用户攻击,可开启设备根据DHCP Snooping绑定表生成接口的静态MAC表项功能。
之后,设备将根据接口下所有的DHCP用户对应的DHCP Snooping绑定表项自动执行命令生成这些用户的静态MAC表项,并同时关闭接口学习动态MAC表项的能力。此时,只有源MAC与静态MAC表项匹配的报文才能够通过该接口,否则报文会被丢弃。因此对于该接口下的非DHCP用户,只有管理员手动配置了此类用户的静态MAC表项其报文才能通过,否则报文将被丢弃。
动态MAC表项是设备自动学习并生成的,静态MAC表项则是根据命令配置而成的。MAC表项中包含用户的MAC、所属VLAN、连接的接口号等信息,设备可根据MAC表项对报文进行二层转发。
DHCP报文泛洪攻击导致设备无法正常工作
攻击原理:在DHCP网络环境中,若攻击者短时间内向设备发送大量的DHCP报文,将会对设备的性能造成巨大的冲击以致可能会导致设备无法正常工作。
解决方法:为了有效的防止DHCP报文泛洪攻击,在使能设备的DHCP Snooping功能时,可同时使能设备对DHCP报文上送DHCP报文处理单元的速率进行检测的功能。此后,设备将会检测DHCP报文的上送速率,并仅允许在规定速率内的报文上送至DHCP报文处理单元,而超过规定速率的报文将会被丢弃。
仿冒DHCP报文攻击导致合法用户无法获得IP地址或异常下线
攻击原理:已获取到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、接口信息是否匹配动态绑定表),若匹配成功则转发该报文,匹配不成功则丢弃。
DHCP Server服务拒绝攻击导致部分用户无法上线
攻击原理:
若设备接口某下存在大量攻击者恶意申请IP地址,会导致DHCP Server中IP地址快速耗尽而不能为其他合法用户提供IP地址分配服务。
DHCP Server通常仅根据DHCP Request报文中的CHADDR(Client Hardware Address)字段来确认客户端的MAC地址。如果某一攻击者通过不断改变CHADDR字段向DHCP Server申请IP地址,同样将会导致DHCP Server上的地址池被耗尽,从而无法为其他正常用户提供IP地址。
解决方法:
为了抑制大量DHCP用户恶意申请IP地址,在使能设备的DHCP Snooping功能后,可配置设备或接口允许接入的最大DHCP用户数,当接入的用户数达到该值时,则不再允许任何用户通过此设备或接口成功申请到IP地址。
对通过改变DHCP Request报文中的CHADDR字段方式的攻击,可使能设备检测DHCP Request报文帧头MAC与DHCP数据区中CHADDR字段是否一致功能,此后设备将检查上送的DHCP Request报文中的帧头MAC地址是否与CHADDR值相等,相等则转发,否则丢弃。
配置命令
dhcp snooping enable命令用来使能DHCP Snooping功能
dhcp snooping trusted命令用来配置接口为信任状态
arp dhcp-snooping-detect enable命令用来使能ARP与DHCP Snooping的联动功能
dhcp snooping check dhcp-giaddr enable命令用来使能检测DHCP报文中GIADDR字段是否非零的功能
dhcp snooping check dhcp-rate enable命令用来使能对DHCP报文上送DHCP报文处理单元的速率进行检测功能
dhcp snooping check dhcp-rate命令用来配置DHCP报文上送DHCP报文处理单元的最大允许速率
dhcp snooping alarm dhcp-rate enable命令用来使能当丢弃的DHCP报文数达到告警阈值时的告警功能
dhcp snooping alarm threshold命令用来配置DHCP Snooping丢弃报文数量的告警阈值
dhcp snooping check dhcp-request enable命令用来使能对DHCP报文进行绑定表匹配检查的功能
dhcp snooping alarm enable命令用来使能DHCP Snooping告警功能
dhcp snooping alarm threshold命令用来配置DHCP Snooping丢弃报文数量的告警阈值
dhcp snooping max-user-number命令用来配置接口允许学习的DHCP Snooping绑定表项的最大个数
display dhcp snooping configuration命令用来查看DHCP Snooping的配置信息
display dhcp snooping user-bind命令用来查看DHCP Snooping动态绑定表信息
评论区