具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下通过具体实施例并参见附图,对本申请进行详细说明。
本申请中,首先在网络设备上配置使能防mac地址表溢出测试功能,然后所述网络设备开始启动防mac地址表溢出攻击检测,即网络设备按照预设时间周期获取其各个端口在所述时间周期内学习Mac地址表项的数量,当任一端口在所述时间周期内学习到的Mac地址表项数量达到第一阈值时,标记该端口为可疑端口;
当所述网络设备学习的所有Mac地址表项数量达到第二阈值时,若所述可疑端口学习到的Mac地址表项数量超过为所述可疑端口配置的Mac地址表项数量的门限阈值,则用超出所述门限阈值的Mac地址表项覆盖当前Mac地址表中最早学习的对应数量的Mac地址表项,所述第二阈值大于第一阈值。
本申请通过获取各端口学习的Mac地址表项数量信息,标记出可能受到攻击的可疑端口,并且在所有Mac地址表项达到更大的阈值时,对之前标记的可疑端口采取相应的措施,即为可疑端口的Mac地址表项数量设置门限阈值,用可疑端口学习到的超出门限阈值的Mac地址表项覆盖网络设备上当前Mac地址表中最早学习的Mac地址表项,以便于及时阻止Mac地址表的溢出,避免网络设备受到Mac地址表溢出攻击。
本申请实施例的方法流程如图1所示,一种防止MAC地址表溢出攻击的方法,包括以下步骤:
步骤101:网络设备按照预设时间周期获取其各个端口在所述时间周期内学习Mac地址表项的数量。
所述网络设备获取其各个端口学习Mac地址表项的数量的方式有如下两种。
第一种方式:所述网络设备实时获取其各个端口学习Mac地址表项的数量,按照预设时间周期统计其各个端口在所述时间周期内学习Mac地址表项的数量。
目前,每一个端口的芯片都会实时记录本端口学习到的Mac地址表项的数量,因此,网络设备的CPU可以很容易地实时获取到各个端口学习Mac地址表项的数量,然后,按照预设时间周期统计各个端口在所述时间周期内学习Mac地址表项的数量,时间周期由用户自定义设置。
例如,预先设定时间周期为5秒,有端口1~端口10,则网络设备每隔5秒统计一次各个端口学习Mac地址表项的数量,比如,统计出端口1在5秒内学习Mac地址表项的总数量为100条,分别统计出各个端口的数据。
第二种方式:所述网络设备接收其各个端口的芯片按照预设时间周期发送的对应端口在所述时间周期内学习Mac地址表项的数量信息。
此方式中,统计的工作由各个端口的芯片完成,目前,各个端口的芯片会实时记录本端口学习到的Mac地址表项的数量,通过可编程逻辑器件(FPGA或CPLD)很容易实现端口芯片的统计功能,由各个端口的芯片按时间周期统计后再周期性地发送给网络设备的CPU。
例如,端口1的芯片每隔5秒统计一次端口1在这5秒内学习Mac地址表项的总数量100,并发送给网络设备的CPU。
步骤102:当任一端口在所述时间周期内学习到的Mac地址表项数量达到第一阈值时,标记该端口为可疑端口。
本步骤用于鉴别各个端口是否为可能受到攻击的可疑端口。
这里,当任一端口在预设时间周期内学习到的Mac地址表项数量达到第一阈值时,网络设备标记该端口为可疑端口。
例如,当任一端口在5秒内学习到的Mac地址达到网络设备上Mac地址表容量的50%时,认为该端口可能受到攻击,标记该端口为可疑端口。网络设备上Mac地址表容量的50%为第一阈值。
所述第一阈值根据网络中主机的数量、接入设备的数量及流量来确定。当网络中的主机和接入设备数量较多、流量较大时,第一阈值就设置得大一些,否则,可以设置小一些。
例如,当网络中的主机及接入设备的数量为10000台时,流量也会较大,若时间周期设置为5秒,则第一阈值可以设置为网络设备上Mac地址表容量的50%,而当网络中的主机及接入设备的数量只有100台时,若时间周期设置为3秒,则第一阈值可以设置为网络设备上Mac地址表容量的10%。
第一阈值的确定需要在考虑上述因素的前提下,根据实际应用中的不断实验,找到合理的取值。后面的第二阈值、第三阈值以及为可疑端口配置的Mac地址表项数量的门限阈值均是如此取值。
第一阈值的设置主要是为了标记出可疑端口,可疑端口可以为一个,也可以为多个,只要满足可疑端口的标记条件即可。接下来继续对网络设备学习的Mac地址表项数量进行检测,当情况更严重时,就需要对所述可疑端口采取措施,以防止Mac地址表溢出攻击发生,具体见如下步骤。
步骤103:当所述网络设备学习的所有Mac地址表项数量达到第二阈值时,若所述可疑端口学习到的Mac地址表项数量超过为所述可疑端口配置的Mac地址表项数量的门限阈值,则用超出所述门限阈值的Mac地址表项覆盖当前Mac地址表中最早学习的对应数量的Mac地址表项,所述第二阈值大于第一阈值。
第二阈值的设置是为了对可疑端口采取必要的措施,以防止Mac地址表溢出攻击发生。因此,第二阈值大于第一阈值,表明网络设备的Mac地址表更接近溢出的状态,也就更容易受到Mac表溢出攻击。第二阈值具体根据网络中主机的数量、接入设备的数量及流量来确定。网络中主机数、接入设备数量及流量越多,第二阈值设置得越接近网络设备上Mac地址表的最大容量。
例如,第一阈值设置为网络设备上Mac地址表容量的50%,第二阈值根据网络状况设置为网络设备上Mac地址表容量的90%。
当所述网络设备学习的所有Mac地址表项数量达到第二阈值时,进一步判断所述可疑端口学习到的Mac地址表项数量是否超过为所述可疑端口配置的Mac地址表项数量的门限阈值。
这里,Mac地址表项数量的门限阈值是预先为各个端口(包括可疑端口和正常端口)配置的,用于限制各个端口下Mac地址表项的数量,即每个端口下,最多能学到多少个Mac地址表项,从而限制网络设备整体的流量,防止Mac地址表溢出,进而防止网络设备受到Mac地址表溢出攻击。所述Mac地址表项数量的门限阈值也是根据网络中主机的数量、接入设备的数量及流量来确定的。
一般情况下,可疑端口当前学习到的Mac地址表项总数量都会超过为所述可疑端口配置的Mac地址表项数量的门限阈值。
此时,可疑端口可以继续学习Mac地址表项,用超出所述门限阈值的Mac地址表项覆盖当前Mac地址表中最早学习的对应数量的Mac地址表项,也就是用新学习到的Mac地址表项覆盖之前最早学习到的Mac地址表项。
例如,当所述网络设备学习的所有Mac地址表项数量达到网络设备上Mac地址表容量的90%(第二阈值)时,若所述可疑端口学习到的Mac地址表项数量为100条,超过为所述可疑端口配置的Mac地址表项数量的门限阈值90条,则用超出所述门限阈值的Mac地址表项10条,覆盖当前Mac地址表中最早学习的10条Mac地址表项。因为越早学习到的Mac地址表项,其存在价值越小。通过覆盖的方式可以限制网络设备学习Mac地址表项的数量,防止网络设备受到Mac地址表溢出攻击。
当所述网络设备学习的所有Mac地址表项数量达到第二阈值时,为了更好地防止所述网络设备受到Mac地址表溢出攻击,还可以设置所述可疑端口学习到的每一Mac地址表项的老化时间为A×(N÷S),以减少网络设备上Mac地址表中Mac地址表项的数量;
其中,A是该Mac地址表项的当前老化时间,N是为所述可疑端口预先配置的Mac地址表项数量的门限阈值,S是所述可疑端口当前学习到的Mac地址表项总数量。
当所述网络设备学习的所有Mac地址表项数量达到第二阈值时,S一般都比N大,因此,Mac地址表项的老化时间为A×(N÷S)小于Mac地址表项的当前正常老化时间A,可以加速Mac地址表项的老化,快速恢复网络转发能力。
进一步地,当所述网络设备学习的所有Mac地址表项数量达到其Mac地址表的最大容量时,也就是占满了Mac地址表,此时,受到的威胁更大,可以直接暂停所述可疑端口的Mac地址学习及未知单播报文转发,并设置所述暂停操作的老化时间。
例如,在所述网络设备学习的所有Mac地址表项数量达到Mac地址表容量的90%(第二阈值)后,网络设备学习的Mac地址表项数量还在继续增加,直至达到Mac地址表容量的100%,占满了Mac地址表,此时,对可疑端口执行暂停操作,使可疑端口停止学习任何Mac地址表项,也停止转发未知单播报文,以防止未知单播报文的泛洪,形成Mac地址表溢出攻击。
所述网络设备暂停所述可疑端口的Mac地址学习及未知单播报文转发时,继续执行所述可疑端口对有目的Mac地址表项的单播报文的转发,并且设置所述暂停操作的老化时间,因为一般攻击不是持续性地,比如设置老化时间为5秒,5秒后恢复学习Mac地址表项及正常转发报文,以尽量减少对正常单播报文学习及转发的影响。进行上述暂停的操作,并不影响其他它接口学习Mac地址表项。
采取以上措施后,若可疑端口恢复到正常状态,需要取消针对所述可疑端口的上述各项限制操作,因此,继续对可疑端口学习到的Mac地址表项数量进行检测,当所述可疑端口当前学习到的Mac地址表项总数量小于第三阈值时,取消针对所述可疑端口的所有操作,包括用可疑端口学习到的超出其门限阈值的Mac地址表项覆盖当前Mac地址表中最早学习的对应数量的Mac地址表项的操作、加速可疑端口学习到的Mac地址表项老化的操作、以及暂停可疑端口的Mac地址学习和未知单播报文转发的操作,取消针对所述可疑端口的上述操作后,标记所述可疑端口为正常端口。
所述第三阈值用于鉴别可疑端口是否恢复正常状态,第三阈值小于第一阈值,也是根据网络中主机的数量、接入数量及流量来确定。
例如,第一阈值设置为网络设备上Mac地址表容量的50%,第三阈值设置为网络设备上Mac地址表容量的40%,当所述可疑端口学习到的Mac地址表项数量小于网络设备上Mac地址表容量的40%时,取消针对所述可疑端口的所有操作,标记所述可疑端口为正常端口。
本申请实施例方案通过一系列的策略,来减少流量,防止网络设备被攻击,且不会影响。
本申请实施例的设备功能模块示意图如图2所示,一种网络设备,既可以是二层的交换机,也可以是二层的路由器,所述网络设备包括:Mac表项数量获取模块、可疑端口鉴定模块、Mac表项覆盖模块,其中:
Mac表项数量获取模块,用于按照预设时间周期获取各个端口在所述时间周期内学习Mac地址表项的数量;
可疑端口标记模块,用于当任一端口在所述时间周期内学习到的Mac地址表项数量达到第一阈值时,标记该端口为可疑端口;
Mac表项覆盖模块,用于当本设备学习的所有Mac地址表项数量达到第二阈值时,若所述可疑端口学习到的Mac地址表项数量超过为所述可疑端口配置的Mac地址表项数量的门限阈值,则用超出所述门限阈值的Mac地址表项覆盖当前Mac地址表中最早学习的对应数量的Mac地址表项,所述第二阈值大于第一阈值。
较佳地,所述网络设备进一步包括:
Mac地址加速老化模块,用于在所述网络设备学习的所有Mac地址表项数量达到第二阈值之后,
设置所述可疑端口学习到的每一Mac地址表项的老化时间为A×(N÷S);
其中,A是该Mac地址表项的当前老化时间,N是为所述可疑端口预先配置的Mac地址表项数量的门限阈值,S是所述可疑端口当前学习到的Mac地址表项总数量。
较佳地,所述网络设备进一步包括:
可疑端口暂停操作模块,用于当本设备学习的所有Mac地址表项数量达到其Mac地址表的最大容量时,暂停所述可疑端口的Mac地址学习及未知单播报文转发,并设置所述暂停操作的老化时间。
较佳地,所述网络设备进一步包括:
恢复处理模块,用于当所述可疑端口当前学习到的Mac地址表项总数量小于第三阈值时,取消针对所述可疑端口的所有操作,标记所述可疑端口为正常端口,所述第三阈值小于第一阈值。
较佳地,所述Mac表项数量获取模块具体用于:
实时获取各个端口学习Mac地址表项的数量,按照预设时间周期统计各个端口在所述时间周期内学习Mac地址表项的数量;
或者,
接收各个端口的芯片按照预设时间周期发送的对应端口在所述时间周期内学习Mac地址表项的数量信息。
所述第一阈值、第二阈值以及为可疑端口配置的Mac地址表项数量的门限阈值均是根据网络中主机的数量、接入设备的数量及流量来确定。
本申请方案能根据交换机的转发报文,自动识别网络设备所处的转发状态,可以采取多方面的措施来预防和制止二层未知单播报文的攻击,从而可有效地防止Mac溢出攻击发生。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。