#DHCP面临的威胁
网络攻击无处不在,针对DHCP的攻击也不例外。例如,某公司突然出现了大面积用户无法上网的情况,经检查用户终端均未获取到IP地址,且DHCP Server地址池中的地址已经全部被分配出去了,这种情况很有可能就是DHCP受到了饿死攻击而导致的。
DHCP在设计上未充分考虑到安全因素,从而留下了许多安全漏洞,使得DHCP很容易受到攻击。实际网络中,针对DHCP的攻击行为主要有以下三种:
DHCP饿死攻击
仿冒DHCP Server攻击
DHCP中间人攻击
攻击原理:攻击者持续大量的向DHCP Server申请IP地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配。
漏洞分析:DHCP Server在向申请者提供IP地址时,无法区分正常的申请者与恶意的申请者。
协议原理:DHCP Server通常仅根据DHCP Request报文中的CHADDR(Client Hardware Address)字段来确认客户端的MAC地址。如果攻击者通过不断的修改CHADDR字段向DHCP Server申请地址,就会导致DHCP Server中的IP地址耗尽,从而无法为其它正常用户提供DHCP服务。
产生危害:用户无法正常获取到IP地址,IP地址被浪费掉。
#仿冒DHCP Server攻击
攻击原理:攻击者仿冒DHCP Server向客户端分配错误的IP地址以及错误的网关等信息,导致用户无法正常的访问网络。
漏洞分析:DHCP客户端收到DHCP Server的DHCP消息之后,无法区分这些DHCP消息是来自仿冒的DHCP Server还是合法的DHCP Server。
协议原理:因为DHCP客户端会接收第一个发送DHCP Offer报文的数据,然后使用第一个接收到的DHCP Server发送的IP地址,然而在现实中,DHCP Server往往都是使用代理进行分配的,所以攻击者只要把设备放在同DHCP客户端同一个的网段中,往往都会比真正的DHCP服务器回复速度快。
产生危害:用户获取到错误的地址网关等,数据包可能经由恶意的设备,造成信息泄露等。
#DHCP中间人攻击
攻击原理:攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系(就是让PC-A认为DHCP Server是PC-B),又让Server学习到IP-A与MAC-B的映射关系。这样一来PC-A与Server之间交互的IP报文都会经过攻击者中转。
漏洞分析:从本质上讲,中间人攻击是一种Spoofing IP/MAC攻击,中间人利用了虚假的IP地址与MAC地址之间的映射关系来同时欺骗DHCP客户端和服务器。
DHCP Snooping技术的出现
为了增强网络安全,防止DHCP受到攻击,一种称为DHCP Snooping的技术应运而生。DHCP Snooping不是一种标准技术,尚未有统一的标准规范,不同的网络设备制造商在DHCP Snooping的实现上也不尽相同。(不同厂商的DHCP Snooping设置会有差别)
DHCP Snooping部署在交换机上,其作用类似于在DHCP客户端与DHCP服务器端之间构筑了一道虚拟的防火墙。
DHCP Snooping防饿死攻击
针对于修改CHADDR字段方式进行恶意申请IP地址,可以在交换机上使能DHCP Snooping功能。因为饿死攻击本事就是攻击者通过不断修改CHADDR字段,然后让DHCP服务器误认为是来自不同PC的用户进行申请IP地址,现在开启DHCP Snooping功能之后,使能其对DHCP Request报文帧头的源MAC与DHCP数据区中的CHADDR字段是否一致的功能,如果一致进行转发,不一致就不会进行转发。简单说就是CHADDR字段有个MAC地址,然后在封装数据包的时候又IP层面的数据包,里面会含有自身的MAC地址,使能了DHCP Snooping之后也就允许其对于IP包进行检查,从而进行判定发送的数据包是否真实。如图中的CHADDR=B,MAC=A,不一致就会被丢弃。
#DHCP Snooping防止仿冒DHCP Server攻击
由于DHCP Server和DHCP Client之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其他网络参数。如果该DHCP服务器为用户分配错误的IP地址和其他网络参数,将会对网络造成非常大的危害。
为了防止仿冒的DHCP Server攻击,可以设置交换机的“信任/非信任”的工作模式。将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其他接口设置为非信任接口。此后,从“非信任(Untrusted)”接口上收到的DHCP回应报文将被直接丢弃,这样可以有效防止DHCP Server仿冒者的攻击。
一般交换机的端口有很多,好比24口等,如果一个一个设置会显得很麻烦,所以端口一般默认为非信任端口。
#DHCP Snooping防止中间人攻击
从协议出发,DHCP的数据包中本身含有IP地址和MAC地址的对应关系,中间人攻击主要就是让IP与MAC不对应,然后让别人发包时往错误的方向进行发送,现在在交换机开启了DHCP绑定表的功能,现在这张表中就有从DHCP报文中解析出来的IP与MAC对应信息。(客户端对DHCP服务器进行请求时是使用MAC地址进行请求,如果请求成功,DHCP Server最终会发送Ack报文,此时绑定表中就会记录相应的IP与MAC对应关系,如果以后IP与MAC对应关系不一致,则会将报文丢弃)
#DHCP Snooping防止仿冒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、接口信息是否匹配动态绑定表),若匹配成功则转发该报文,匹配不成功则丢弃。