专利名称:网络攻击的防护方法
技术领域:
本发明涉及一种网络攻击的防护方法,尤其涉及一种对具有CPU网络设备的网络攻击防护方法。
背景技术:
目前网上攻击日益频繁,使得一些网络设备如低端交换机产品在网络使用中出现了较多问题。为了增强网络设备特别是低端以太网交换机产品的防攻击能力,使其具备更强的网络适应性,需要对网络设备的抗攻击性能进一步加强。
网络攻击的类型主要分为对网络设备CPU的流量攻击,对网络协议的攻击,对设备的表项的攻击和其他攻击等几个类型。不过目前在网络上比较常见的是DOS攻击,扫描窥探攻击,协议报文攻击等,这些攻击都表现为可以在短时间内用大量报文攻击CPU,因为CPU处理能力有限,会影向其他协议和数据报文的接收,同时影响到网络的连通性,业务的连续性,可管理性。因此,加强对CPU的保护对提高网络设备特别是交换机产品的稳定性有着重要意义。
目前对于CPU抗攻击的现有方法,主要分为硬件和软件的防护方法两种类型。对于硬件防护方法,一般是采用预先设置硬件访问控制列表(ACL,Access Control List)规则来对报文进行过滤;对于软件防护方法,一般是采用在网络设备中设置专门的软件,用该软件限制报文速率,从而实现对网络设备接收的报文进行过滤的方法来抵抗对CPU的攻击。
对于硬件预先设置ACL规则的方法,以交换机为例,在交换机正常工作时,也占用ACL的规则,消耗硬件资源。同时缺少自动分析和防御CPU攻击的能力,无法自动完成对芯片的设置,或是只有在使用者干预下才能完成芯片的设置,因而无法及时对攻击报文进行响应。
对于软件限制报文速率的方法,需要使用软件对报文特征进行分析,对超速率的报文进行限速。但在受到大流量报文攻击的时候,软件限制报文速率的方法需要对CPU接收到的所有报文进行分析,会占用较多的CPU资源。且攻击报文仍然会占用端口正常业务报文的硬件队列的带宽,无法避免与攻击报文在同一个硬件接收队列的其他业务报文被攻击报文淹没的情形,导致软件分析的效率低。
发明内容
本发明所要解决的技术问题就是提供一种网络攻击的防护方法以解决上述现有技术中存在的单纯使用硬件设置ACL规则或软件限制报文速率方法进行网络攻击防护而带来缺陷。
为此,本发明提供一种网络攻击的防护方法,应用在具有CPU的网络设备中,包括下列步骤(1)对网络设备端口接收的异常报文提取异常报文特征并保存;(2)根据所述异常报文特征对相应端口设置访问控制列表规则,仅禁止端口转发具有所述异常报文特征的报文;(3)对所述设置访问控制列表规则端口启动采样任务,在采样周期内对该端口接收的报文进行采样,提取所述接收报文的报文特征;(4)将所述接收报文采样得到的报文特征与保存的异常报文特征进行比较;(5)如果所述采样得到的报文特征和保存的异常报文特征不匹配,则取消设置的访问控制列表规则,允许端口接收报文。
其中,步骤(3)中所述采样采用具有sFlow功能的装置实现,具体实现方法为(33)在所述网络设备中采用具有sFlow采样功能的交换芯片;(34)在所述网络设备中设置采样任务模块,用来调用所述交换芯片中的sFlow驱动程序实现采样。
另外,步骤(1)之前包括检测端口接收报文是否为异常报文,如果异常报文则执行步骤(1),否则不作处理。
其中,所述异常报文为所述网络设备接收报文的报文速率超过预定数值的报文。
另外,所述异常报文特征以报文模板方式保存,建立报文模板的步骤包括预先设置网络设备端口所述异常报文特征的检测项;对接收的所述异常报文每个检测项的特征值对应的统计计数加1;将检测项的特征值作为报文特征,对具有相同的特征值的报文进行总数统计;若统计出的所述检测项下具有相同特征值的报文总数超过预定阀值,则将所述统计总数超过预定阀值的报文所对应的检测项下的特征值提取为报文模板,并作为全局变量保存起来。
其中,所述异常报文模板还具有异常报文模板计数器,步骤(5)中进一步包括,若所述采样得到的报文特征和所述报文模板中的异常报文特征匹配,则将所述异常报文模板计数器累加。
另外,该方法还包括下列步骤a)在采样周期结束时,若异常报文模板计数器数值大于预设数值,则将报文模板计数器清零,并转到步骤d);b)若所述异常报文模板计数器数值小于预设数值,则将异常报文模板计数器清零,清除相应的异常报文模板;c)取消根据该异常报文特征设置的访问控制列表规则;d)判断所述端口是否存在其它异常报文模板,若有则返回步骤(1),否则取消所述采样任务。
更为一般的,本发明的另一方面是提供一种网络攻击的防护方法,用来解决网络设备中的对CPU流量攻击难以很好的防护的问题,该方法包括以下步骤(1)检测网络设备端口接收的报文是否异常;(2)对检测到的异常报文禁止转发,并启动一个针对端口接收报文的采样任务;(3)判断采样到的报文包含异常报文数量是否小于预定的数值;(4)若步骤(3)的判断结果为是,取消前述禁止转发,若判断结果为否,则保持禁止转发。
其中,步骤(3)所述采样任务按照可变的采样比率对报文进行采样,所述采样比率反比于端口当前的接收到的报文速率。
其中,网络设备对异常报文的定义是速率超过某个数值报文为异常报文。
本发明中充分利用硬件的特性和软件的灵活控制,将硬件设置如ACL规则的设置和取消与软件控制如sFlow采样技术的应用相结合,在软件的检测分析下自动的设置芯片的ACL规则实现对报文的过滤,并用采样技术分析异常例如超速的攻击报文,判断何时攻击结束。攻击结束时,恢复端口的功能,取消设置的ACL规则,以达到CPU抗攻击的目的。本发明将网络设备抗CPU攻击的硬件和软件方法较好的融合在一起,因此吸取了软件和硬件防止攻击方法的优点。
在融合上述软件、硬件方法优点的同时,本发明还很好的克服了背景技术中提到的单纯利用软件和硬件防止网络攻击的缺陷。如本发明中采用的动态设置和删除ACL硬件规则过滤攻击报文的方法,可以避免同一硬件队列报文过多导致业务报文被淹没的现象,并可在网络设备如交换机正常工作时,取消ACL的规则,节省ACL硬件资源。同时,本发明中采用的相关软件方法特别是利用sFlow采样技术进行报文采样并进行软件分析,既可以减小报文对CPU的攻击,也可以做到自动的对攻击报文进行分析,提高了对攻击报文的响应速度。
图1是本发明提供的一种具体实施方式
的流程图。
具体实施例方式
本发明的核心思想是充分利用硬件的特性和软件的灵活控制,在软件的分析下自动的设置芯片的ACL规则对报文的过滤,并用采样技术分析异常报文,判断何时攻击结束。攻击结束时,恢复端口的功能,取消下发的ACL规则,以达到CPU抗攻击的目的。
具体来说,是在网络设备的底层驱动的网络收包模块对收到的报文进行检测,若收到异常报文,例如短时间内检测到某一个端口存在大流量报文,则可以认为此端口存在报文攻击,则发出报警信息,提示用户,同时在受攻击端口接收到的报文中提取报文特征并建立异常报文的报文模板。并且根据报文特征对受到攻击的端口设置ACL规则,用于限制具有异常报文模板中的报文特征值的接收报文的转发等正常的处理操作,但该端口对不具备异常报文特征的正常报文仍可以进行转发等正常处理。
对设置ACL规则的端口,启动采样机制对该端口按一定间隔进行采样,并将采样得到的报文特征与报文模板中存储的报文特征进行比较。本发明中的采样功能可以对ACL规则限制的异常报文进行采样,且可以将采样报文划分为一个单独的硬件队列,防止影响其他硬件队列的报文的正常接收。由于使用的是采样机制,不会占用过多CPU资源,保证了CPU对其他报文的正常处理。
多次采样后,如果采样报文中没有与报文模板中存储的异常报文特征匹配的报文或该种报文的数量可以忽略,说明端口在采样期间内没有收到异常报文,端口已经不受到攻击,从而取消原先设置的ACL规则,恢复端口的功能;如果采样的报文的报文特征与报文模板中的异常报文特征匹配,则说明端口仍然收到异常报文,则不能取消ACL规则,应继续维持端口安全保护状态。
下面结合图1阐述具体实施例来对本发明做进一步的具体说明。需要说明的是,在本具体实施方式
中,采样功能的实现本实施例以sFlow技术为例进行说明,该技术定义了一种监视具有交换机或路由器网络的机制包括三个部分,即sFlow Agent、sFlow MIB和sFlow Analyzer(或称数据收集中心),其中sFlowAgent对所监视网络进行采样,对监视的设备提取流量统计信息,且可以设置间隔多少报文采集一次;sFlow MIB对sFlow Agent进行控制。sFlow Agent将采样得到的数据以标准格式向sFlow Analyzer即数据收集中心进行传送。SFlowAnalyzer对传来的数据进行分析。sFlow技术在RFC3176中有详细介绍,不再赘述。
本发明的一个实施例中,在相关网络设备如交换机、路由器中采用了具有sFlow技术的交换芯片,特别是采用如交换芯片厂商Marvell公司固化了sFlow的功能的EX116/EX126交换芯片,但这种具体的应用方式并不能构成对本发明保护范围的限制,本发明的保护范围当然及于其他的变换方式。
本具体实施方式
的流程如图1所示,下面分别描述在步骤S10,接收网络设备端口的报文,这可以通过调用网络设备如交换机、路由器端口的相关底层驱动函数来实现,对此,本领域中的普通技术人员会知道,现有技术中有较多地实现方法,此处不再赘述。
在步骤S20,通过报文所携带的信息判断报文是否是采样得到的报文,比如在marvell公司的交换芯片上可以通过CPU CODE判断。如果不是通过采样得到的报文,进入步骤S30。否则,进入步骤S40。当然,此步骤所做的判断在没有启动采样任务之前是没有意义的,因为此时网络设备中不存在采样得到的报文,但为了流程简便起见,本实施例中,首先判断收到的报文类型以决定下一步的操作流程。
在步骤S30,判断该端口接收报文是否异常。在本实施例中,端口报文是否异常的判断条件是接收报文的速率是否超过了某预先设置的数值。如果报文没有超速,则说明端口工作正常,不必启动任何防护机制,进行该网络设备正常的报文处理流程即可。若端口报文异常则进入步骤S31。
在步骤S31,该接收报文不是采样得到的且该接收报文超速,此时可以判定该端口受到了攻击。通过分析报文内容,提取报文的特征,如目的MAC,源MAC,目的IP,源IP等。并将这些特征记录成报文模板,该报文模板作为全局变量保存起来。
这里需要详细介绍一下报文模板的建立方法。
建立报文模扳的基本原理是在正常网络报文的报头各字段和网络设备端口中选择至少一个检测项。例如可以选择与网络寻址和各层协议间寻址相关的字段作为检测项,还可以增加网络设备的物理端口或逻辑端口作为检测项。在本具体实施方式
中选用最为常用的以太网IP协议报文目的MAC地址、源MAC地址、目的IP地址、源IP地址等部分作为报文特征的检测项,然后监测网络设备处理报文的到达速率,当到达速率超过某预定值时,网络设备在预定的检测周期内,网络设备将该报文中每个检测项的特征值即该检测项在到达报文中的具体数值所对应的统计计数加1。然后以检测项的特征值作为报文特征,对具有相同的特征的报文进行总数统计。
在一个预定的检测周期内,如果每个检测项下每个特征值的统计计数都不超过预定攻击阈值,则未发生流量攻击;否则即是网络设备检测到发生了流量攻击,并且攻击报文的特征为超过预定攻击阈值的报文总数所对应的具有该特征值的该检测项。其中预定攻击阈值应根据该网络设备通常情况下处理的报文流量进行设定,当通常情况下处理的报文流量大时,应选择较高的值。
其中,在一些核心网络设备处理的报文中,各个检测项可能具有非常多的特征值,网络设备需要对这些特征值进行分别统计,这样会占用较多的内存。因此,对核心网络设备和一些内存小的网络设备,可以设定每个检测项保存的特征值的个数N,只对总数最大的N个特征值进行统计。
然后将上述攻击报文的特征即超过预定攻击阈值的报文总数所对应的具有该特征值的该检测项的特征值存为报文模板。这样的报文模板可建立多个,并作为全局变量保存起来。
例如,一个交换机工作在以太网中,选择源MAC地址、目的端口号、源端口号和该交换机的物理端口作为检测项,设置预定检测周期为1秒,预定攻击阈值为300,为每个检测项保存的特征值个数为5。该交换机启动攻击检测,一个预定检测周期后得到的统计计数结果如下表所示
可见,统计计数结果中,源MAC地址的特征值是00a6-4513-0011的报文总数为330,目的端口号是3344的报文总数为为325,物理端口号是21的报文总数为320,其他检测项特征值的统计计数结果都小于300,则检测出攻击报文特征具有以下特征源MAC地址00a6-4513-0011;目的端口号3344;来自21号物理端口。
则这些特征将被提取作为攻击报文摸板,当作全局变量储存起来。
在步骤S32,准备设置ACL规则。将提取到的报文的特征存于数据结构中,通过消息队列发送数据结构指针。并根据接收到的消息,设置芯片ACL。上述过程中需调用网络设备中的一些常用的底层函数来实现软件的自动设置ACL规则,设置ACL规则后将禁止相应端口接收攻击报文,但同时允许该端口接收其他正常的报文。
在步骤S33,判断是否这是网络设备对该端口第一次设置ACL规则。如果是,则进入步骤S34,启用采样任务。并在用户界面上发送消息,提示用户注意。
这里需要说明的是,启用采样任务后,该采样任务将连续不断的进行处理,直至判断最后一个报文模板被取消,在S49步骤中取消采样任务后,才会停止采样任务。在图1中,没有展示出采样步骤的具体实现流程。下面将本实施例中所采样的详细原理、步骤描述如下。
在本实施例中,启动采样任务处理任务后,采样任务将根据预先设置好的周期,比如1秒,调用底层芯片sFlow驱动,启动该端口的采样机制。在采样过程中,可以对采样过程进行相应的控制。
这里需要说明的是,sFlow机制提供两种采样方式触发(Trigger)方式每次采样后都可以重新改写采样间隔。连续(Continue)方式每次采样后自动按照预先的设置填写新的采样间隔。在具体应用中,采用Trigger方式更加灵活,即每次采样后都可以重新改写采样间隔。具体实现方法是每次得到采样报文后,都回调相应的软件函数来设置芯片下次采样的间隔。该软件函数每次被底层芯片驱动回调时都将重新设置下一次采样的比率,例如上一次是1/100采样率,下一次可能是1/50的采样比率。采用Trigger方式后,对采样比率的设置可以通过设置一种较为合理的算法进行控制,也可以通过随机函数进行处理。采用Trigger方式后,最大的优点在于可以对采样过程施加较好的控制,因为在Trigger方式下,sFlow机制采样后都会和上层软件进行交互,此时上层软件可以按照预先的设置对采样过程的参数(如采样比率)进行设置调整,以便在下一个采样间隔中更加灵活的适应变化的实际情况。在每一个采样间隔中,随机的采样一个报文,并送交处理。
另外,在采样过程中,为防止超速报文对采样造成不利的影响,比如报文流量过大时,即使设置1/1000的采样率,在短时间内仍将收到大量的采样报文,从而对设备造成流量攻击,因此可以对采样报文数量进行控制,比如在采样数量超过指定个数后(例如30个)将关闭采样(将采样比率设为0),此时说明该端口受到了比较强的报文流量攻击,所以暂时关闭采样功能,过滤攻击报文。
这样做主要是因为考虑到交换芯片的sFlow采样功能只能设置采样的间隔报文数量,即设置的是采样的比率,并无时间的概念。若直接使用芯片的sFlow采样功能,只通过采样比率来对采样报文进行控制的话,对于短时间内接收大量攻击报文的情况,需要将采样比率减小,防止CPU受到采样报文的攻击。对于短时间内接收少量报文的情况,需要将采样比率加大,以便对网络情况作出快速的反应。这样的设计需要处理的情况复杂,难以及时调整采样比率。
所以在本实施例中,最好预先设置固定的采样比率(例如1/100采样率),则sFlow采样机制将控制对每收到100个报文后提取一个报文送交处理。在采样数量超过指定个数后(例如30个)将关闭采样(将采样比率设为0)。关闭采样功能后,可以设置经过一定的周期,比如5秒,由采样任务及时恢复采样即可。
下面着重描述对下发了ACL的端口进行报文采样并收到采样报文后的逻辑判断处理的流程如上步骤S20所述,如果判断接收到的报文是采样报文,则进入到步骤S40。
在步骤S40,根据报文模板与采样得到的报文进行比较,判断采样所得到的报文是否是异常报文。判断的方法是将该端口采样得到报文的特征和该端口存储的所有报文模板逐一进行比较,如果采样得到的报文特征与某个存储的报文模板特征吻合,则说明是异常报文,进入步骤S41,如果和任何一个报文模板的特征均不符合,则说明不是异常报文,进入到步骤S42。
在步骤S41,由于每个报文模板都有一个计数器。因此经过比较,如果报文是攻击报文,则对报文模板计数器累加。
在步骤S42,直接丢弃报文。
在步骤S43,判断采样报文是否达到预定的数量,采样过程中,可设置软件按照一定的规则进行判断,比如,采样报文是否达到了100个(假设预定数值是100),如果已经达到,则进入步骤S44,否则返回步骤S10。
在步骤S44,进行进一步的判断,根据报文模板计数器判断端口是否仍然受到攻击。判断端口没有受到攻击的方法是查询报文模板计数器在采样期间是否一直为零,当然根据需要,也可以设定报文模板计数器若小于等于某一个数值的时候,即可视为该端口并不受到报文的攻击,从而认为报文模板计数器为零。反过来也就是说当模板计数器的数值大于某个预定数值比如10时,说明该端口在本次采样期间受到了报文的攻击,相反则说明该端口在本采样期间没有受到报文攻击或该报文攻击可以忽略。在采样期间内,如果端口持续受到攻击,即模板计数器大于预定值,进入步骤S45;如果端口不再收到此类特征的报文,即模板计数器为零或小于预定值,则也进入步骤S45。
在步骤S45,进行的操作是将报文模板对应的计数器清零,这时不管模板计数器的值是多少都要进行清零的操作,以便开始下一个采样周期。需要说明的是,根据上一步骤S44的判断,如果攻击报文模板计数器<=预定值判断为否时,则说明收到了异常报文,此时不能清除报文模板,因此就跳过步骤S46、S47,直接进入到S48,否则直接进入到步骤S46。
在步骤S46,由于端口不存在异常报文,清除相应的报文模板,并把取消报文模板的信息发送到消息队列,根据接收到的消息,调用网络设备底层驱动函数中的相关ACL规则设置函数,进入步骤S47。
在步骤S47,通过调用网络设备底层驱动函数中的相关ACL规则设置函数,取消原来设置的对应ACL规则,允许端口接收报文。随后端口可以进行正常的报文收发,然后进入步骤S48。
在步骤S48,判断最后一个报文模板是否已经取消了。如果取消的是最后一个报文模板,说明CPU不再受到攻击。为了节省CPU资源,进入步骤S49。
在步骤S49,取消采样任务,并在用户界面上发送信息,提示用户不再受到攻击。
更为一般的,本领域的熟练技术人员会知道,本发明的本质精神在于对采用流量攻击网络设备CPU的异常报文特征的把握,即网络设备对异常报文的接收速率会超过某个数值。为此,可简单的禁止转发该类报文,但同时启动一个采样任务以不断的检查该类报文是否已经消失,若消失则取消类似的禁止转发。
综上,本发明的另一方面可概括为,提供一种网络攻击的防护方法,该方法包括以下步骤(1)检测网络设备端口接收的报文是否异常;(2)对检测到的异常报文禁止转发,并启动一个针对端口接收报文的采样任务;(3)判断采样到的报文包含异常报文数量是否小于预定的数值;(4)若步骤(3)的判断结果为是,取消前述禁止转发,若判断结果为否,则保持禁止转发。
其中,步骤(3)所述采样任务按照可变的采样比率对报文进行采样,所述采样比率反比于端口当前的接收到的报文速率。
其中,网络设备对异常报文的定义是速率超过某个数值报文为异常报文。
由此可见,采用本发明提供的方法,能充分利用硬件的特性和软件的灵活控制,并较好的解决了单纯使用硬件和软件方法防范攻击的缺陷。
权利要求
1.一种网络攻击的防护方法,应用在具有CPU的网络设备中,其特征在于,包括下列步骤(1)对网络设备端口接收的异常报文提取异常报文特征并保存;(2)根据所述异常报文特征对相应端口设置访问控制列表规则,仅禁止端口转发具有所述异常报文特征的报文;(3)对所述设置访问控制列表规则端口启动采样任务,对该端口接收的报文进行采样,提取所述接收报文的报文特征;(4)将所述接收报文采样得到的报文特征与保存的异常报文特征进行比较;(5)如果所述采样得到的报文特征和保存的异常报文特征不匹配,则取消设置的访问控制列表规则,允许端口接收报文。
2.如权利要求1所述的方法,其特征在于,步骤(3)中所述采样采用具有sFlow功能的装置实现,具体实现方法为(31)在所述网络设备中采用具有sFlow采样功能的交换芯片;(32)在所述网络设备中设置采样任务模块,用来调用所述交换芯片中的sFlow驱动程序实现采样。
3.如权利要求1或2所述的网络攻击的防护方法,其特征在于,步骤(1)之前包括检测端口接收报文是否为异常报文,如果异常报文则执行步骤(1),否则不作处理。
4.如权利要求3所述的网络攻击的防护方法,其特征在于,所述异常报文为所述网络设备接收报文的报文速率超过阀值的报文。
5.如权利要求1或2所述的网络攻击的防护方法,其特征在于,所述异常报文特征以报文模板方式保存,建立报文模板的步骤包括预先设置网络设备端口所述异常报文特征的检测项;对接收的所述异常报文每个检测项的特征值对应的统计计数加1;将检测项的特征值作为报文特征,对具有相同的特征值的报文进行总数统计;若统计出的所述检测项下具有相同特征值的报文总数超过预定阀值,则将所述统计总数超过预定阀值的报文所对应的检测项下的特征值提取为报文模板,并作为全局变量保存起来。
6.如权利要求5所述的网络攻击的防护方法,其特征在于,所述异常报文模板还具有异常报文模板计数器,步骤(5)中进一步包括,若所述采样得到的报文特征和所述报文模板中的异常报文特征匹配,则将所述异常报文模板计数器累加。
7.如权利要求6所述的网络攻击的防护方法,其特征在于,还包括下列步骤a)在采样周期结束时,若异常报文模板计数器数值大于预设数值,则将报文模板计数器清零,并转到步骤d);b)若所述异常报文模板计数器数值小于预设数值,则将异常报文模板计数器清零,清除相应的异常报文模板;c)取消根据该异常报文特征设置的访问控制列表规则;d)判断所述端口是否存在其它异常报文模板,若有则返回步骤(1),否则取消所述采样任务。
8.一种网络攻击的防护方法,其特征在于,包括以下步骤(1)检测网络设备端口接收的报文是否异常;(2)对检测到的异常报文禁止转发,并启动一个针对端口接收报文的采样任务;(3)判断采样到的报文包含异常报文数量是否小于预定的数值;(4)若步骤(3)的判断结果为是,取消前述禁止转发,若判断结果为否,则保持禁止转发。
9.如权利要求8所述的网络攻击的防护方法,其特征在于,步骤(3)所述采样任务按照可变的采样比率对报文进行采样,所述采样比率反比于端口当前的接收到的报文速率。
10.如权利要求8所述的网络攻击的防护方法,其特征在于,网络设备对异常报文的定义是速率超过某个数值报文为异常报文。
全文摘要
本发明提供一种网络攻击的防护方法,应用在具有CPU的网络设备中,该方法对网络设备的端口报文进行检测,当发现异常报文时建立报文模板,并设置该端口的ACL访问规则,然后启动采样机制,对异常报文的特征进行采样并和保存的报文模板进行比较,当发现异常报文不存在时,取消设置的ACL规则。采用本发明提供的方法,能充分利用硬件的特性和软件的灵活控制,并较好的解决了单纯使用硬件和软件方法防范攻击的缺陷。
文档编号H04L12/56GK1878082SQ20051007525
公开日2006年12月13日 申请日期2005年6月9日 优先权日2005年6月9日
发明者杨孙永 申请人:杭州华为三康技术有限公司