1 概述
随着网络规模的扩大化和网络环境的复杂化,DHCP服务被应用到越来越多的网络环境中。DHCP虽然提供了一种简捷、高效的主机配置机制,但由于在设计上未充分考虑到安全因素,从而留下许多安全漏洞,使得DHCP服务器很容易受到攻击。
本文将针对几种常见的DHCP攻击,对我司支持的DHCP防攻击功能的技术特点以及应用场景进行归纳总结,以帮助用户更好地应用这些功能。本文涉及的DHCP协议的相关原理以及作用机制,请参考《DHCP技术白皮书》。
2 DHCP攻击类型
在实际网络中,主要存在以下四种DHCP攻击类型:
· DHCP饿死攻击
· DHCP Flood攻击
· 仿冒DHCP
Server攻击
· 伪造DHCP请求方向报文攻击
2.1.1 DHCP饿死攻击
攻击者伪造chaddr(client hardware address,DHCP客户端的硬件地址)字段各不相同的DHCP请求报文,向DHCP服务器申请大量的IP地址。一方面导致DHCP服务器地址池中的地址耗尽,无法为合法的DHCP客户端分配IP地址;另一方面可能导致DHCP服务器消耗过多的系统资源,无法处理正常业务。
图2-1 DHCP饿死攻击
2.1.2 DHCP Flood攻击
攻击者短时间内恶意向DHCP服务器发送大量的DHCP请求报文申请IP地址,侵占DHCP服务器的系统资源,导致其它合法的DHCP交互无法正常进行。
图2-2 DHCP Flood攻击
2.1.3 仿冒DHCP Server攻击
攻击者私自安装并运行DHCP Server程序后,将自己伪装成DHCP Server。DHCP客户端接收到来自DHCP Server的DHCP应答报文后,无法判断DHCP Server是否合法。如果客户端第一个接收到的应答报文来自仿冒的DHCP Server,那么仿冒的DHCP Server会给DHCP客户端分配错误的IP地址,导致DHCP客户端无法访问网络。
图2-3 仿冒DHCP Server攻击
2.1.4 伪造DHCP请求方向报文攻击
非法客户端伪造DHCP续约报文、DHCP-DECLINE和DHCP-RELEASE三种DHCP请求方向的报文对DHCP服务器进行攻击:
· 伪造DHCP续约报文攻击是指攻击者冒充合法的DHCP客户端,向DHCP服务器发送伪造的DHCP续约报文,导致DHCP服务器和DHCP客户端无法按照自己的意愿及时释放IP地址租约。如果攻击者冒充不同的DHCP客户端发送大量伪造的DHCP续约报文,则会导致大量IP地址被长时间占用,DHCP服务器没有足够的地址分配给新的DHCP客户端。
· 伪造DHCP-DECLINE/DHCP-RELEASE报文攻击是指攻击者冒充合法的DHCP客户端,向DHCP服务器发送伪造的DHCP-DECLINE/DHCP-RELEASE报文,导致DHCP服务器错误终止IP地址租约。
图2-4 伪造DHCP请求方向报文攻击
3 DHCP防攻击技术实现
3.1 DHCP防攻击技术简介
针对四种常见的DHCP攻击,设备可以采取的防范措施及部署位置如表3-1所示。
表3-1 DHCP防攻击技术
攻击类型
防范措施
防范措施部署位置
DHCP饿死攻击
DHCP防饿死攻击功能
DHCP服务器、DHCP中继、DHCP Snooping
存在大量DHCP饿死攻击报文时,可同时开启DHCP防饿死攻击功能和DHCP Flood攻击防范相关功能
DHCP服务器、DHCP中继、DHCP Snooping
DHCP Flood攻击
DHCP Flood攻击防范功能
DHCP服务器、DHCP中继
DHCP接口攻击抑制功能
DHCP服务器、DHCP中继
限制接口动态学习DHCP Snooping表项的最大数目
DHCP
Snooping
DHCP Snooping报文限速功能
DHCP
Snooping
仿冒DHCP Server攻击
DHCP Snooping信任功能
DHCP
Snooping
伪造DHCP请求方向报文攻击
防止伪造DHCP请求方向报文攻击功能
DHCP
Snooping
3.2 DHCP防饿死攻击功能
DHCP防饿死攻击功能用于防止DHCP饿死攻击。本功能支持在DHCP服务器、DHCP中继和DHCP Snooping设备上配置,部署位置如图3-1所示。
图3-1 DHCP防饿死攻击功能部署
针对攻击者发送报文的源MAC地址,可以采取不同的防饿死攻击措施:
· 如果封装DHCP请求报文的数据帧的源MAC地址各不相同,则攻击者接入的接口会学习到大量的MAC地址。此时,可以通过设置允许接口学习的最大MAC地址数,并配置当达到接口的MAC地址数学习上限时,禁止转发源MAC地址不在MAC地址表里的报文来防止饿死攻击。当接口学习到的MAC地址数达到最大值时,接口将丢弃源MAC地址不在MAC地址表中的请求报文,从而避免攻击者申请到过多的IP地址,在一定程度上阻止了DHCP饿死攻击。其它不存在DHCP饿死攻击的接口连接的DHCP客户端仍可以正常获取IP地址。
· 如果封装DHCP请求报文的数据帧的源MAC地址相同,则可以通过在DHCP设备上开启MAC地址检查功能来防止饿死攻击。开启该功能后,DHCP设备会检查接收到的DHCP请求报文中的chaddr字段和数据帧的源MAC地址字段是否一致。如果一致,则认为该报文合法,进行后续处理;如果不一致,则丢弃该报文。
3.3 DHCP Flood攻击防范功能
3.3.1 DHCP Flood攻击防范功能
DHCP Flood攻击防范功能用于防止源MAC地址固定的DHCP泛洪类攻击。本功能支持在DHCP服务器和DHCP中继上配置,部署位置如图3-2所示。
图3-2 DHCP Flood攻击防范功能部署
接口开启DHCP
Flood攻击防范功能后:
(1) DHCP设备会根据DHCP请求报文中的源MAC地址统计收到的DHCP请求报文数,同时创建一个check状态的DHCP防Flood攻击表项。
(2) 当某个源MAC地址对应DHCP客户端发送的DHCP请求报文数在指定时间内达到配置的阈值时,则认为DHCP设备受到了DHCP报文攻击,该DHCP客户端对应的DHCP防Flood攻击表项状态被置为restrain,DHCP设备将丢弃后续收到的该DHCP客户端发送的DHCP请求报文。
(3) 当该源MAC地址的DHCP防Flood攻击表项老化时,将重新统计本接口指定时间内收到的来自该DHCP客户端的DHCP请求报文数。
¡ 如果未超过阈值,则删除此表项。当再次收到同一源MAC的DHCP请求报文时,将重新统计接收到的报文数并建立check状态的DHCP防Flood攻击表项;
¡ 如果仍超过阈值,则刷新DHCP防Flood攻击表项老化时间,继续丢弃其发送的DHCP请求报文。
3.3.2 DHCP接口攻击抑制功能
DHCP接口攻击抑制功能用于防止对某个指定接口的DHCP泛洪类攻击。本功能支持在DHCP服务器和DHCP中继上配置,部署位置与DHCP Flood攻击防范功能一致。
接口开启DHCP接口攻击抑制功能后:
(1) DHCP设备会统计该接口收到的DHCP请求报文数,同时创建一个check状态的DHCP接口攻击抑制表项。
(2) 当接口收到的DHCP请求报文数在指定时间内达到配置的阈值时,则认为DHCP设备受到了DHCP报文攻击,DHCP接口攻击抑制表项状态从check变成restrain,设备将限制该接口接收DHCP请求报文的速率,避免DHCP攻击报文持续冲击CPU。
(3) 当接口对应的DHCP接口攻击抑制表项老化时,DHCP设备会重新统计该接口指定时间内收到的DHCP请求报文数。
¡ 如果未超过阈值,则删除此表项。当再次收到DHCP请求报文时,重新统计接收到的报文数并建立check状态的DHCP防Flood攻击表项;
¡ 如果仍超过阈值,则刷新DHCP接口攻击抑制表项老化时间,继续限制被该接口接收DHCP请求报文的速率。
3.3.3 DHCP Snooping报文限速功能
为了避免非法用户发送大量DHCP报文,对网络造成攻击,DHCP Snooping支持报文限速功能,限制接口接收DHCP报文的速率。当接口接收的DHCP报文速率超过限制的最高速率时,DHCP Snooping设备将丢弃超过速率限制的报文。DHCP Snooping报文限速功能的部署位置如图3-3所示。
图3-3 DHCP Snooping报文限速功能部署
3.3.4 限制接口动态学习DHCP Snooping表项的最大数目
限制接口动态学习DHCP Snooping表项的最大数目,可以防止接口学习到大量DHCP Snooping表项,占用过多的系统资源。接口动态学习的DHCP Snooping表项数达到最大数目后,不影响DHCP Snooping功能正常运行,只是接口不会再继续学习新的DHCP Snooping表项。本功能的部署位置与DHCP Snooping报文限速功能一致。
3.4 仿冒DHCP Server攻击防范功能
3.4.1 DHCP Snooping信任功能
DHCP Snooping信任功能通过控制DHCP服务器应答报文的来源,可以有效地阻止仿冒或非法的DHCP服务器为DHCP客户端分配IP地址及其他配置信息。
DHCP Snooping信任功能将端口分为信任端口和不信任端口:
· 将与合法DHCP服务器直接或间接连接的端口设置为信任端口,信任端口对接收到的DHCP报文正常转发,从而保证了DHCP客户端获取正确的IP地址。
· 将未与合法DHCP服务器连接的端口都设置为不信任端口,从不信任端口接收到DHCP服务器响应的DHCP-ACK、DHCP-NAK和DHCP-OFFER报文会被丢弃,从而防止了DHCP客户端获得错误的IP地址及网络参数。
DHCP Snooping信任功能中信任端口的部署情况如图3-4所示。
图3-4 DHCP Snooping信任功能
3.5 防止伪造DHCP请求方向报文攻击功能
在DHCP
Snooping设备上开启DHCP请求方向报文检查功能后,当DHCP Snooping设备接收到DHCP请求方向报文时,会检查本地的DHCP Snooping表项:
· 若存在与请求方向报文匹配的DHCP
Snooping表项:
¡ 请求方向的报文信息与DHCP Snooping表项信息一致时,认为该DHCP请求方向报文合法,将其转发给DHCP服务器;
¡ 请求方向的报文信息与DHCP Snooping表项信息不一致时,则认为该报文为伪造的DHCP请求方向报文,将其丢弃。
· 若不存在与请求方向报文匹配的DHCP Snooping表项,则认为该报文合法,将其转发给DHCP服务器。
本功能的部署位置如图3-5所示。
图3-5 防止伪造DHCP请求方向报文攻击功能部署
4 DHCP防攻击技术应用综合组网
如图4-1所示,用户跨网段以DHCP的方式动态获取IP地址。采取如下措施以防止DHCP攻击:
· 将DHCP
Snooping设备上与DHCP中继设备相连的端口设置为信任端口,其余接口设置为不信任端口,防止收到来自仿冒DHCP Server的报文。
· 在DHCP
Snooping设备上与攻击者相连的接口上配置限制接口动态学习DHCP Snooping表项的最大数目、DHCP Snooping报文限速功能和防止伪造DHCP请求方向报文攻击功能。
· 在DHCP中继与攻击者相连的接口上配置DHCP防饿死攻击功能、DHCP Flood攻击防范功能和DHCP接口攻击抑制功能。
图4-1 DHCP防攻击技术应用综合组网