02-DHCP防攻击故障处理手册
本章节下载: 02-DHCP防攻击故障处理手册 (210.36 KB)
· 本文主要针对DHCP服务器上的防攻击功能进行故障排查和处理。
· DHCP各类防攻击功能的具体实现请参见《DHCP防攻击技术白皮书》。
DHCP饿死攻击是指攻击者伪造chaddr(client hardware address,DHCP客户端的硬件地址)字段各不相同的DHCP请求报文,向DHCP服务器申请大量的IP地址。一方面导致DHCP服务器地址池中的地址耗尽,无法为合法的DHCP客户端分配IP地址;另一方面可能导致DHCP服务器消耗过多的系统资源,无法处理正常业务。
对于上述情况一,可以通过在DHCP服务器上配置DHCP防饿死攻击功能进行防范;对于上述情况二,配置DHCP防饿死攻击功能的同时需要开启DHCP Flood攻击防范功能。
· 开启DHCP防饿死攻击功能后,DHCP服务器上仍频繁出现地址池资源被耗尽的情况。
· 合法用户请求报文被当成攻击报文处理,合法用户无法正常获得IP地址上线。
本类故障的常见原因主要包括:
· DHCP服务器与客户端相连的接口上未开启DHCP防饿死攻击功能。
· DHCP中继组网环境中,在DHCP服务器或非首跳中继上配置了MAC地址检查功能。
· 接口上配置的允许接口学习到的最大ARP表项数或MAC地址数不合理。
本类故障的诊断流程如图1-1所示。
图1-1 DHCP防饿死攻击功能异常故障诊断流程图
(1) DHCP服务器和客户端同网段的直连组网环境中,检查DHCP服务器与客户端相连的接口上是否开启了DHCP防饿死攻击功能。中继组网请执行步骤(2)。
为了更全面的进行DHCP饿死攻击防范,DHCP服务器上需要同时开启针对源MAC地址各不相同的DHCP请求报文和针对源MAC地址相同的DHCP请求报文的防饿死攻击功能:
¡ 针对源MAC地址各不相同的DHCP请求报文:
- 对于三层接口,可以在三层接口视图下执行arp max-learning-num命令设置允许接口学习的最大ARP表项数来防止饿死攻击。
- 对于二层接口,可以在二层接口视图下执行mac-address max-mac-count命令设置允许接口学习的最大MAC地址数,并执行undo mac-address max-mac-count enable-forwarding命令配置当达到接口的MAC地址数学习上限时,禁止转发源MAC地址不在MAC地址表里的报文来防止饿死攻击。
在DHCP服务器与客户端相连的接口上执行display this命令,查看当前接口下的配置。
# 显示三层接口配置
<Sysname> system-view
[Sysname] interface gigabitethernet 2/0/1
[Sysname-GigabitEthernet2/0/1] display this
#
interface GigabitEthernet2/0/1
port link-mode route
arp max-learning-num 10
...
# 显示二层接口配置
<Sysname> system-view
[Sysname] interface gigabitethernet 2/0/1
[Sysname-GigabitEthernet2/0/1] display this
#
interface GigabitEthernet2/0/1
port link-mode bridge
mac-address max-mac-count 600
undo mac-address max-mac-count enable-forwarding
...
如果未显示相应的防饿死攻击功能信息:
- 若接口为三层口,则在三层接口视图下执行arp max-learning-num命令配置允许接口学习的最大ARP表项数。
- 若接口为二层口,则在二层接口视图下执行mac-address max-mac-count和undo mac-address max-mac-count enable-forwarding命令配置MAC地址数学习上限以及禁止转发源MAC地址不在MAC地址表里的报文。
¡ 针对源MAC地址相同的DHCP请求报文,通过在DHCP服务器的接口视图下执行dhcp server check mac-address命令开启MAC地址检查功能来防止饿死攻击。开启该功能后,设备检查接收到的DHCP请求报文中的chaddr字段和数据帧的源MAC地址字段是否一致。如果一致,则认为该报文合法,继续后续处理;如果不一致,则丢弃该报文。
在DHCP服务器与客户端相连的接口上执行display this命令,查看当前接口下是否开启了MAC地址检查功能。
<Sysname> system-view
[Sysname] interface gigabitethernet 2/0/1
[Sysname-GigabitEthernet2/0/1] display this
#
interface GigabitEthernet2/0/1
port link-mode route
dhcp server check mac-address
...
如果未显示相应的功能信息,则在接口视图下执行dhcp server check mac-address命令开启MAC地址检查功能。
(2) DHCP服务器和客户端不同网段的中继组网环境中,检查服务器或中继上的防饿死攻击功能是否配置正确。非中继组网请跳过本步骤。
a. 检查是否在服务器或中继与客户端相连的接口上配置了允许接口学习的最大ARP表项数或MAC地址数。检查过程同步骤(1)。
b. 检查是否在DHCP服务器或非首跳中继与客户端相连的接口上开启了MAC地址检查功能。
报文通过链路中的三层设备转发给服务器时,报文头里的源MAC地址均被替换为该设备的MAC地址。如果在DHCP服务器或非首跳中继上配置了MAC地址检查功能,当服务器或非首跳中继收到三层设备转发的同MAC报文时,将会导致合法报文被误判为攻击报文。
因此中继组网环境中,建议在DHCP服务器和非首跳中继的接口视图下分别执行undo dhcp server check mac-address和undo dhcp relay check mac-address命令关闭MAC地址检查功能,仅在靠近DHCP客户端的第一跳DHCP中继设备与客户端相连的接口上开启MAC地址检查功能。
判断第一跳中继上是否开启MAC地址检查功能的过程同步骤(1)。
(3) 检查允许接口学习的最大ARP表项数或最大MAC地址数是否配置不合理。
在DHCP服务器的任意视图下执行display this命令,查看当前接口下配置的允许接口学习的最大ARP表项数或最大MAC地址数的值。
# 显示三层接口配置
<Sysname> system-view
[Sysname] interface gigabitethernet 2/0/1
[Sysname-GigabitEthernet2/0/1] display this
#
interface GigabitEthernet2/0/1
port link-mode route
arp max-learning-num 10
...
# 显示二层接口配置
<Sysname> system-view
[Sysname] interface gigabitethernet 2/0/1
[Sysname-GigabitEthernet2/0/1] display this
#
interface GigabitEthernet2/0/1
port link-mode bridge
mac-address max-mac-count 600
...
如果配置值远大于DHCP服务器上可提供的IP地址数,则容易出现大量用户无法获得IP地址的情况;如果配置值太小,则容易导致合法用户请求报文被丢弃。
一般推荐使用设备配置的缺省值,但如果与实际使用中DHCP服务器上可提供的IP地址数以及上线用户数相差较大,可在接口下执行arp max-learning-num或mac-address max-mac-count命令调整配置。
(4) 如果故障仍然未能排除,请收集如下信息,并联系技术支持人员。
¡ 上述步骤的执行结果。
¡ 设备的配置文件、日志信息、告警信息。
¡ 执行debugging dhcp server all命令收集的调试信息。
无
无
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!