CN101695031B - 入侵防御***的升级方法和装置 - Google Patents

入侵防御***的升级方法和装置 Download PDF

Info

Publication number
CN101695031B
CN101695031B CN2009102070563A CN200910207056A CN101695031B CN 101695031 B CN101695031 B CN 101695031B CN 2009102070563 A CN2009102070563 A CN 2009102070563A CN 200910207056 A CN200910207056 A CN 200910207056A CN 101695031 B CN101695031 B CN 101695031B
Authority
CN
China
Prior art keywords
engine
sign
message
prevention system
intrusion prevention
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009102070563A
Other languages
English (en)
Other versions
CN101695031A (zh
Inventor
廉莲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Digital Technologies Chengdu Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN2009102070563A priority Critical patent/CN101695031B/zh
Publication of CN101695031A publication Critical patent/CN101695031A/zh
Application granted granted Critical
Publication of CN101695031B publication Critical patent/CN101695031B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种入侵防御***的升级方法和装置,所述入侵防御***的升级方法包括:创建进程,在创建的进程中下载对入侵防御***进行升级的升级包;在所述进程中,加载所述升级包中的引擎,设置并记录加载的引擎的标识;通过所述加载的引擎加载并编译所述升级包中的特征库,生成状态机,升级所述入侵防御***。本发明实施例实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务。

Description

入侵防御***的升级方法和装置
技术领域
本发明实施例涉及通信技术领域,特别涉及一种入侵防御***的升级方法和装置。
背景技术
随着网络攻击技术的不断提高和网络安全漏洞的不断发现,传统的防火墙加入侵检测***(Intrusion Detection System;以下简称:IDS)的技术,已经无法应对一些安全威胁。在这种情况下,入侵防御***(Intrusion PreventionSystem;以下简称:IPS)技术应运而生,IPS可以深度感知并检测流经该IPS的报文,对恶意报文进行丢弃以阻断攻击,对滥用报文进行限流以保护网络带宽资源。
部署在报文转发路径上的IPS可以根据预先设定的安全策略,对流经该IPS的每个报文进行深度检测;其中,对报文进行深度检测包括:对报文进行协议分析跟踪、特征匹配、流量统计分析和事件关联分析等。对报文进行检测时,一旦发现隐藏于报文中的网络攻击,IPS可以根据该网络攻击的威胁级别立即采取抵御措施,该抵御措施包括:向管理中心告警;丢弃该报文;切断此次应用会话;切断此次TCP连接。在安全策略设定好之后,IPS需要对安全策略进行编译处理,对每个安全策略对应生成一套状态机,供报文检测时使用;如果安全策略被修改,则IPS需要重新编译生成新的状态机,供报文检测时使用。
IPS的升级包括两种情况:引擎与特征库一同升级和只升级特征库。升级引擎会更新引擎接口的动态链接库;升级特征库会更新签名库的内容,例如:添加、修改或删除签名。在IPS升级之后,升级之前配置的安全策略会根据升级后更新的内容进行相应地修改,并重新编译生成新的状态机。当IPS对一条数据流的报文进行检测时,对相同数据流的报文,IPS使用相同的状态机进行检测。一条数据流的报文必须从首报文开始,按顺序且没有重叠地送入引擎检测,否则,IPS可能会产生漏检和误报。
现有技术中,IPS升级成功后的报文处理方式为:如果当前报文仍属于IPS升级前检测的数据流,则不检测该报文,直接放过;如果当前报文属于升级后新建的数据流,则将该报文送入引擎进行检测处理。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:IPS升级成功后,现有的报文处理方式只能对升级后新建的数据流的报文进行扫描,如果升级前的数据流仍然要持续较长时间,或者虽然升级前的数据流结束了但是会话表还未老化,又发起了新的相同的连接,则IPS不会对属于上述升级前的数据流的报文进行检测,造成报文的漏检测。
发明内容
本发明实施例提供一种入侵防御***的升级方法和装置,以实现加载多个引擎,编译出多组状态机同时工作,实现在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务。
本发明实施例提供一种入侵防御***的升级方法,包括:
创建进程,在创建的进程中下载对入侵防御***进行升级的升级包;
在所述进程中,加载所述升级包中的引擎,设置并记录加载的引擎的标识;通过所述加载的引擎加载并编译所述升级包中的特征库,生成状态机,升级所述入侵防御***。
本发明实施例还提供一种入侵防御***的升级装置,包括:
创建模块,用于创建进程;
下载模块,用于在所述创建模块创建的进程中下载对入侵防御***进行升级的升级包;
加载模块,用于在所述创建模块创建的进程中,加载所述下载模块下载的升级包中的引擎,设置并记录加载的引擎的标识;
编译模块,用于在所述创建模块创建的进程中,通过所述加载模块加载的引擎加载并编译所述下载模块下载的升级包中的特征库,生成状态机,升级所述入侵防御***。
本发明实施例通过创建进程,并在创建的进程中下载对入侵防御***进行升级的升级包,在该创建的进程中加载该升级包中的引擎,设置并记录加载的引擎的标识,并通过加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***。本发明实施例不仅可以在每次需要升级引擎时,均创建一个新的进程,在一个进程中加载一个引擎;也可以只创建一个进程,在同一个进程中加载多个引擎,从而实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明入侵防御***的升级方法一个实施例的流程图;
图2为本发明对报文进行检测的一个实施例的流程图;
图3为本发明入侵防御***的升级方法另一个实施例的流程图;
图4为本发明入侵防御***的升级方法再一个实施例的流程图;
图5为本发明对报文进行检测的另一个实施例的流程图;
图6为本发明入侵防御***的升级方法又一个实施例的流程图;
图7为本发明入侵防御***的升级装置一个实施例的结构示意图;
图8为本发明入侵防御***的升级装置另一个实施例的结构示意图;
图9为本发明入侵防御***的升级装置再一个实施例的结构示意图;
图10为本发明入侵防御***的升级装置又一个实施例的结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明入侵防御***的升级方法一个实施例的流程图,如图1所示,该实施例包括:
步骤101,创建进程,在创建的进程中下载对入侵防御***进行升级的升级包。
本实施例中,每次需要对入侵防御***进行升级时,均创建一个新的进程;具体地,可以在每次引擎和特征库一同升级时,或者,只升级特征库时,均创建一个新的进程;然后在创建的进程中下载对入侵防御***进行升级的升级包。
步骤102,在上述进程中,加载该升级包中的引擎,设置并记录加载的引擎的标识。
具体地,加载的引擎的标识可以按照加载时间的先后设置,例如:按照加载时间由先至后的顺序,将引擎的标识分别设为1,2,...,n,即标识为1的引擎是最先加载的引擎。以上只是设置引擎的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置引擎的标识,只要设置的引擎的标识可以区分出引擎加载的先后顺序即可。
步骤103,在上述进程中,通过加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***。
本实施例中,每次需要对入侵防御***进行升级时,执行步骤101~步骤103,完成对入侵防御***的升级。具体地,可以在每次引擎和特征库一同升级时,或者,只升级特征库时,均创建一个新的进程,执行步骤101~步骤103。其中,在只升级特征库时,可以通过记录的引擎的标识,确定当前最新加载的引擎,并在新创建的进程中,重新加载当前最新加载的引擎,然后为该重新加载的引擎设置一个新的引擎的标识。因此在本实施例中,引擎和状态机一一对应。
在接收到报文之后,可以根据接收到的报文的报文头中的信息和记录的引擎的标识确定对报文进行检测的引擎,通过确定的引擎调用生成的状态机,对报文进行检测。
下面结合图2,对本实施例中对报文进行检测的方式进行详细介绍。
图2为本发明对报文进行检测的一个实施例的流程图,如图2所示,本实施例对报文进行检测的流程包括:
步骤201,接收报文。
步骤202,根据该报文的报文头中的信息判断该报文是否为数据流的首报文。如果该报文是数据流的首报文,则执行步骤203;如果该报文不是数据流的首报文,则执行步骤204。
具体地,判断报文是否为数据流的首报文可以为:解析报文的报文头,确定该报文采用的传输协议;当该报文采用传输控制协议(TransmissionControl Protocol;以下简称:TCP)传输时,如果该报文的报文头中包括首报文标识,则该报文是数据流的首报文;如果该报文的报文头中不包括首报文标识,则该报文不是数据流的首报文。当该报文采用用户数据报协议(UserDatagram Protocol;以下简称:UDP)传输时,则需要根据该报文的五元组信息,在入侵防御***中查找是否有该五元组信息的记录,如果没有查找到该五元组信息的记录,则可以确定该报文是数据流的首报文,记录首报文的五元组信息;如果查找到该五元组信息的记录,则说明该报文不是数据流的首报文。其中,报文的五元组信息包括:报文的源因特网协议(Internet Protocol;以下简称:IP)地址、目的IP地址、源端口、目的端口和报文所采用的传输协议;属于同一数据流的报文具有相同的五元组信息。
步骤203,根据记录的引擎的标识确定最新加载的引擎,该最新加载的引擎为对该报文进行检测的引擎;并记录所述报文的报文头中的五元组信息,建立五元组信息与对该报文进行检测的引擎的标识的对应关系,执行步骤205。
具体地,在确定接收到的报文是一个数据流的首报文之后,可以通过查找记录的引擎的标识确定最新加载的引擎,以该最新加载的引擎作为对首报文进行检测的引擎,然后记录该报文的报文头中的五元组信息,建立五元组信息与对该报文进行检测的引擎的标识的对应关系。由于同一数据流的报文具有相同的五元组信息,因此在接收到该数据流的后续报文时,可以根据后续报文的五元组信息,以及该五元组信息与记录的引擎的标识的对应关系,确定与上述五元组信息对应的引擎的标识,从而可以确定对后续报文进行检测的引擎,并且可以保证对同一数据流的报文采用同一引擎进行检测。
步骤204,根据该报文的报文头中的五元组信息,利用在数据流的首报文时建立的五元组信息与引擎的标识的对应关系,在记录的引擎的标识中查找与该五元组信息对应的引擎的标识,确定该标识对应的引擎为对该报文进行检测的引擎,执行步骤205。
步骤205,通过确定的引擎调用该引擎生成的状态机,对该报文进行检测。
本实施例中,引擎与状态机一一对应,因此确定对报文进行检测的引擎之后,该引擎就可调用该引擎生成的状态机,对接收到的报文进行检测。
步骤206,检测通过后,发送该报文。
具体地,如果入侵防御***确定在该报文中未发现网络攻击,则检测通过,发送该报文;如果入侵防御***在该报文中发现了隐藏于报文中的网络攻击,该入侵防御***可以根据该网络攻击的威胁级别立即采取抵御措施,该抵御措施包括:向管理中心告警、丢弃该报文、切断此次应用会话和切断此次连接之一或组合。
在本实施例中,在入侵防御***尚未启动,或者,该入侵防御***刚刚启动,该入侵防御***的引擎尚未加载完成时,对于流过该入侵防御***的报文不进行检测,并且对该报文所属数据流的后续报文均不进行检测,直接发送。
上述实施例通过创建进程,在创建的进程中下载对入侵防御***进行升级的升级包,并加载该升级包中的引擎,设置并记录加载的引擎的标识,并通过加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***。本实施例在每次引擎和特征库一同升级,或者,只升级特征库时,均创建一个新的进程,从而实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务。
图3为本发明入侵防御***的升级方法另一个实施例的流程图,如图3所示,该实施例包括:
步骤301,创建进程,在创建的进程中下载对入侵防御***进行升级的升级包。
本实施例中,每次需要对入侵防御***进行升级时,均创建一个新的进程;具体地,可以在每次引擎和特征库一同升级时,或者,只升级特征库时,均创建一个新的进程。
步骤302,根据创建进程的时间,设置并记录创建的进程的标识。
具体地,创建的进程的标识可以按照创建时间的先后设置,例如:按照创建时间由先至后的顺序,将创建的进程的标识分别设为a1,a2,...,an,即标识为a1的进程是最先创建的进程。以上只是设置创建的进程的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置创建的进程的标识,只要设置的进程的标识可以区分出进程创建的先后顺序即可。
步骤303,在上述进程中,加载该升级包中的引擎,设置并记录加载的引擎的标识。
具体地,加载的引擎的标识可以按照加载时间的先后设置,例如:按照加载时间由先至后的顺序,将引擎的标识分别设为b1,b2,...,bn,即标识为b1的引擎是最先加载的引擎。以上只是设置引擎的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置引擎的标识,只要设置的引擎的标识可以区分出引擎加载的先后顺序即可。
步骤304,在上述进程中,通过加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***。
本实施例中,每次需要对入侵防御***进行升级时,执行步骤301~步骤304,完成对入侵防御***的升级。具体地,可以在每次引擎和特征库一同升级时,或者,只升级特征库时,均创建一个新的进程,执行步骤301~步骤304。其中,在只升级特征库时,可以通过记录的引擎的标识,确定当前最新加载的引擎,并在新创建的进程中,重新加载当前最新加载的引擎,然后为该重新加载的引擎设置一个新的引擎的标识。因此在本实施例中,引擎和状态机一一对应。
在接收到报文之后,可以根据接收到的报文的报文头中的信息和记录的引擎的标识确定对报文进行检测的引擎,通过确定的引擎调用生成的状态机,对报文进行检测。具体地,在接收到报文之后,对报文进行检测时,可以采用本发明图2所示实施例中提供的方法。
步骤305,当需要对入侵防御***再次进行升级时,判断已创建的进程的个数是否达到预设的第一阈值。如果已创建的进程的个数达到预设的第一阈值,则执行步骤306;如果已创建的进程的个数小于预设的第一阈值,则执行步骤301。
本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对创建的进程的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第一阈值设为n,n为正整数,可以取n=2。
步骤306,根据记录的进程的标识确定最先创建的进程,卸载最先创建的进程中的引擎,释放该引擎占用的资源,执行步骤307。
当需要对入侵防御***再次进行升级时,如果已创建的进程的个数达到n,则可以根据步骤302记录的进程的标识确定最先创建的进程,本实施例中,该最先创建的进程为标识为a1的进程;然后卸载标识为a1的进程中的引擎,释放该引擎占用的资源。
步骤307,在最先创建的进程中下载对入侵防御***进行升级的升级包,并执行步骤302及其后续步骤。
在卸载标识为a1的进程中的引擎,释放该引擎占用的资源之后,在该标识为a1的进程中下载对入侵防御***进行升级的升级包,并执行步骤302及其后续步骤;在标识为a1的进程中下载对入侵防御***进行升级的升级包之后,需要为标识为a1的进程重新设置一个新的标识,以表示该进程是最新的进程。
在升级完成之后,如果接收到一个新的数据流的报文,则通过原标识为a1的进程中最新加载的引擎对该数据流的报文进行检测;而升级之前,在原标识为a1的进程中进行检测的数据流的后续报文,将会被直接发送出去,不继续检测。
上述实施例通过创建进程,在创建的进程中下载对入侵防御***进行升级的升级包,并加载该升级包中的引擎,设置并记录加载的引擎的标识,并通过加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***。本实施例在每次引擎和特征库一同升级,或者,只升级特征库时,均创建一个新的进程,从而实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务;并且本实施例对创建的进程的个数加以限制,确保了创建的进程不会占用太多的内存,保证了入侵防御***的正常运行。
图4为本发明入侵防御***的升级方法再一个实施例的流程图,如图4所示,该实施例包括:
步骤401,创建进程,在创建的进程中下载对入侵防御***进行升级的升级包。
步骤402,根据创建进程的时间,设置并记录创建的进程的标识。
具体地,创建的进程的标识可以按照创建时间的先后设置,例如:按照创建时间由先至后的顺序,将创建的进程的标识分别设为a1,a2,...,an,即标识为a1的进程是最先创建的进程。以上只是设置创建的进程的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置创建的进程的标识,只要设置的进程的标识可以区分出进程创建的先后顺序即可。
步骤403,在上述进程中,加载该升级包中的引擎,设置并记录加载的引擎的标识。
具体地,加载的引擎的标识可以按照加载时间的先后设置,例如:按照加载时间由先至后的顺序,将引擎的标识分别设为b1,b2,...,bn,即标识为b1的引擎是最先加载的引擎。以上只是设置引擎的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置引擎的标识,只要设置的引擎的标识可以区分出引擎加载的先后顺序即可。
步骤404,在上述进程中,通过加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***;设置并记录生成的状态机的标识,建立该状态机的标识与生成状态机的引擎的标识的对应关系。
本实施例中,每次需要对入侵防御***进行升级时,执行步骤401~步骤404,完成对入侵防御***的升级。具体地,可以在每次引擎和特征库一同升级时,创建一个新的进程,执行步骤401~步骤404;只升级特征库时,不再创建新的进程,这时,可以根据步骤402中记录的进程的标识确定最新创建的进程,在最新创建的进程中下载对所述特征库进行升级的升级包,并通过最新创建的进程中加载的引擎,加载并编译上述升级包中的特征库,生成状态机,完成对特征库的升级。因此本实施例中,进程和引擎一一对应,但是一个引擎可能对应多个状态机,在生成状态机之后,需要设置并记录生成的状态机的标识,建立状态机的标识与生成状态机的引擎的标识的对应关系。
具体地,状态机的标识可以按照生成时间的先后进行设置,例如:按照生成时间由先至后的顺序,将状态机的标识分别设为c1,c2,...,cn,即标识为c1的状态机是最先生成的状态机。以上只是设置状态机的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置状态机的标识,只要设置的状态机的标识可以区分出状态机生成的先后顺序即可。
在接收到报文之后,可以根据接收到的报文的报文头中的信息和记录的引擎的标识确定对报文进行检测的引擎,通过确定的引擎调用生成的状态机,对报文进行检测。
步骤405,当需要对入侵防御***再次进行升级时,判断是否引擎和特征库一同升级。如果引擎和特征库一同升级,则执行步骤406~步骤409;如果只升级特征库,则执行步骤410~步骤413。
步骤406,判断已创建的进程的个数是否达到预设的第一阈值。如果已创建的进程的个数达到预设的第一阈值,则执行步骤408~步骤409;如果已创建的进程的个数小于预设的第一阈值,则执行步骤407。
本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对创建的进程的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第一阈值设为n,n为正整数,可以取n=2。
步骤407,判断已生成的状态机的数量是否达到预设的第二阈值。如果已生成的状态机的数量达到预设的第二阈值,则执行步骤408~步骤409;如果已生成的状态机的数量小于预设的第二阈值,则执行步骤401。
本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对生成的状态机的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第二阈值设为m,m为正整数,可以取m=4。
步骤408,根据记录的进程的标识确定最先创建的进程,卸载最先创建的进程中的引擎。
当需要对入侵防御***再次进行升级时,如果已创建的进程的个数达到n,则可以根据步骤402记录的进程的标识确定最先创建的进程,本实施例中,该最先创建的进程为标识为a1的进程;然后卸载标识为a1的进程中的引擎,释放该引擎占用的资源。
对于已创建的进程的个数小于预设的第一阈值,但已生成的状态机的数量达到预设的第二阈值的情形,可以卸载最先创建的进程中的一个状态机;具体地,可以根据步骤404中记录的状态机的标识确定最先创建的进程中最先生成的状态机,然后释放该最先创建的进程中最先生成的状态机。
步骤409,在最先创建的进程中下载对入侵防御***进行升级的升级包,并执行步骤402及其后续步骤。
在卸载标识为a1的进程中的引擎,释放该引擎占用的资源之后,在该标识为a1的进程中下载对入侵防御***进行升级的升级包,并执行步骤402及其后续步骤;在标识为a1的进程中下载对入侵防御***进行升级的升级包之后,需要为标识为a1的进程重新设置一个新的标识,以表示该进程是最新的进程。
在升级完成之后,如果接收到一个新的数据流的报文,则通过原标识为a1的进程中最新加载的引擎对该数据流的报文进行检测;而升级之前,在原标识为a1的进程中进行检测的数据流的后续报文,将会被直接发送出去,不继续检测。
步骤410,判断已生成的状态机的数量是否达到预设的第二阈值。如果已生成的状态机的数量达到预设的第二阈值,则执行步骤411;如果已生成的状态机的数量小于预设的第二阈值,则执行步骤412~步骤413。
本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对生成的状态机的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第二阈值设为m,m为正整数,可以取m=4。
步骤411,根据记录的进程的标识确定最先创建的进程,释放最先创建的进程中的一个状态机;或者,卸载最先创建的进程中的引擎,释放该引擎占用的资源,执行步骤412。
具体地,在释放最先创建的进程中的一个状态机时,可以根据步骤404中记录的状态机的标识确定最先创建的进程中最先生成的状态机,然后释放该最先创建的进程中最先生成的状态机。
步骤412,根据记录的进程的标识确定最新创建的进程,在最新创建的进程中下载对特征库进行升级的升级包。
步骤413,通过最新创建的进程中加载的引擎,加载并编译升级包中的特征库,生成新的状态机,同样,在生成状态机之后,需要设置生成的状态机的标识,建立该状态机的标识与生成该状态机的引擎的标识的对应关系;并执行步骤405及其后续步骤。
本实施例中,进程和引擎一一对应,但是一个引擎可能对应多个状态机。下面结合图5,对本实施例中对报文进行检测的方式进行详细介绍。
图5为本发明对报文进行检测的另一个实施例的流程图,如图5所示,本实施例对报文进行检测的流程包括:
步骤501,接收报文。
步骤502,根据该报文的报文头中的信息判断该报文是否为数据流的首报文。如果该报文是数据流的首报文,则执行步骤503;如果该报文不是数据流的首报文,则执行步骤504。
具体地,判断报文是否为数据流的首报文可以为:解析报文的报文头,确定该报文采用的传输协议;当该报文采用TCP传输时,如果该报文的报文头中包括首报文标识,则该报文是数据流的首报文;如果该报文的报文头中不包括首报文标识,则该报文不是数据流的首报文。当该报文采用UDP传输时,则需要根据该报文的五元组信息,在入侵防御***中查找是否有该五元组信息的记录,如果没有查找到该五元组信息的记录,则可以确定该报文是数据流的首报文,记录首报文的五元组信息;如果查找到该五元组信息的记录,则说明该报文不是数据流的首报文。其中,报文的五元组信息包括:报文的源IP地址、目的IP地址、源端口、目的端口和报文所采用的传输协议;属于同一数据流的报文具有相同的五元组信息。
步骤503,根据记录的引擎的标识确定最新加载的引擎,通过最新加载的引擎调用最新生成的状态机,对报文进行检测;并记录该报文的报文头中的五元组信息,建立该五元组信息与最新加载的引擎的标识,以及上述最新生成的状态机的标识对应关系。
具体地,在确定接收到的报文是一个数据流的首报文之后,可以通过查找记录的引擎的标识确定最新加载的引擎,以该最新加载的引擎作为对首报文进行检测的引擎;由于最新加载的引擎可能对应一个或多个状态机,根据最新加载的引擎的标识,可以确定与该最新加载的引擎对应的状态机的标识,根据该状态机的标识可以确定最新生成的状态机。本实施例中,通过最新加载的引擎调用最新生成的状态机,对数据流的首报文进行检测,并记录该首报文的报文头中的五元组信息,建立该五元组信息与最新加载的引擎的标识,以及上述最新生成的状态机的标识的对应关系。由于同一数据流的报文具有相同的五元组信息,因此在接收到该数据流的后续报文时,可以根据后续报文的五元组信息,以及该五元组信息、记录的引擎的标识和状态机的标识的对应关系,确定与该五元组信息对应的引擎的标识和对应的状态机的标识,从而可以确定对后续报文进行检测的引擎和状态机,可以保证对同一数据流的报文采用同一引擎和同一状态机进行检测。
步骤504,根据报文的报文头中的五元组信息,利用在数据流的首报文时建立的五元组信息、引擎的标识与状态机的标识的对应关系,在记录的引擎的标识中查找与该五元组信息对应的引擎的标识,在记录的状态机的标识中查找与该五元组信息对应的状态机的标识;通过查找到的引擎的标识所对应的引擎,调用查找到的状态机的标识所对应的状态机,对报文进行检测。
上述实施例通过创建进程,在创建的进程中下载对入侵防御***进行升级的升级包,并加载该升级包中的引擎,设置并记录加载的引擎的标识,通过加载的引擎加载并编译升级包中的特征库,生成状态机,升级该入侵防御***。本实施例只在每次引擎和特征库一同升级时,创建一个新的进程,实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务;并且本实施例对创建的进程的个数加以限制,同时对生成的状态机的个数加以限制,确保了创建的进程、加载的引擎和生成的状态机不会占用太多的内存,保证了入侵防御***的正常运行。
图6为本发明入侵防御***的升级方法又一个实施例的流程图,如图6所示,该实施例包括:
步骤601,在对入侵防御***进行第一次升级时,创建进程,并在创建的进程中下载对该入侵防御***进行升级的升级包。
步骤602,在上述进程中,加载该升级包中的引擎,设置并记录加载的引擎的标识。
具体地,加载的引擎的标识可以按照加载时间的先后设置,例如:按照加载时间由先至后的顺序,将引擎的标识分别设为b1,b2,...,bn,即标识为b1的引擎是最先加载的引擎。以上只是设置引擎的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置引擎的标识,只要设置的引擎的标识可以区分出引擎加载的先后顺序即可。
步骤603,在上述进程中,通过加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***;设置并记录生成的状态机的标识,建立该状态机的标识与生成状态机的引擎的标识的对应关系。
本实施例只在对入侵防御***的引擎和特征库进行第一次升级时,创建一个进程,后续再对该入侵防御***进行升级时,均在创建的这一个进程中下载对入侵防御***进行升级的升级包,执行步骤602~步骤603,完成对入侵防御***的升级。因此本实施例中,一个进程中加载了多个引擎,每个引擎可能对应多个状态机,在生成状态机之后,需要设置并记录生成的状态机的标识,建立状态机的标识与生成状态机的引擎的标识的对应关系。
具体地,状态机的标识可以按照生成时间的先后进行设置,例如:按照生成时间由先至后的顺序,将状态机的标识分别设为c1,c2,...,cn,即标识为c1的状态机是最先生成的状态机。以上只是设置状态机的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置状态机的标识,只要设置的状态机的标识可以区分出状态机生成的先后顺序即可。
在接收到报文之后,可以根据接收到的报文的报文头中的信息和记录的引擎的标识确定对报文进行检测的引擎,通过确定的引擎调用生成的状态机,对报文进行检测。具体地,本实施例中,在对接收到的报文进行检测时,可以采用本发明图5所示实施例中提供的方法。
步骤604,当需要对入侵防御***再次进行升级时,判断是否引擎和特征库一同升级。如果引擎和特征库一同升级,则执行步骤605~步骤608;如果只升级特征库,则执行步骤609~步骤612。
步骤605,判断已加载的引擎的个数是否达到预设的第三阈值。如果已加载的引擎的个数达到预设的第三阈值,则执行步骤607;如果已加载的引擎的个数小于预设的第三阈值,则执行步骤606。
本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对加载的引擎的个数进行限制,预先设置第三阈值,使加载的引擎的个数不会超过该第三阈值;第三阈值为正整数,可以设第三阈值为2。
步骤606,判断已生成的状态机的数量是否达到预设的第二阈值。如果已生成的状态机的数量达到预设的第二阈值,则执行步骤607;如果已生成的状态机的数量小于预设的第二阈值,则执行步骤608。
本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对生成的状态机的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第二阈值设为m,m为正整数,可以取m=4。
步骤607,根据记录的引擎的标识确定最先加载的引擎,卸载该引擎,释放该引擎占用的资源,然后执行步骤608。
当需要对入侵防御***再次进行升级时,如果已加载的引擎的个数达到预设的第三阈值,则可以根据步骤602记录的引擎的标识确定最先加载的引擎,本实施例中,该最先加载的引擎为标识为b1的引擎;然后卸载标识为b1的引擎,释放该引擎占用的资源。
对于已加载的引擎的个数小于预设的第三阈值,但已生成的状态机的数量达到预设的第二阈值的情形,可以卸载最先加载的引擎的一个状态机;具体地,可以根据步骤603中记录的状态机的标识确定最先加载的引擎对应的状态机中最先生成的状态机,然后释放该最先生成的状态机。
步骤608,在创建的同一个进程中下载对引擎和特征库进行升级的升级包,执行步骤602。
步骤609,判断已生成的状态机的数量是否达到预设的第二阈值。如果已生成的状态机的数量达到预设的第二阈值,则执行步骤610;如果已生成的状态机的数量小于预设的第二阈值,则执行步骤611~步骤612。
本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对生成的状态机的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第二阈值设为m,m为正整数,可以取m=4。
步骤610,根据记录的引擎的标识确定最先加载的引擎,卸载该最先加载的引擎,释放该引擎占用的资源;或者,释放最先加载的引擎对应的状态机中的一个状态机;执行步骤611。
具体地,在释放最先加载的引擎对应的状态机中的一个状态机时,可以根据步骤603中记录的状态机的标识确定最先加载的引擎对应的状态机中最先生成的状态机,然后释放该最先生成的状态机。
步骤611,在创建的同一个进程中下载对特征库进行升级的升级包。
步骤612,根据记录的引擎的标识确定最新加载的引擎,通过最新加载的引擎加载并编译升级包中的特征库,生成一组新的状态机,同样,在生成状态机之后,需要设置生成的状态机的标识,建立该状态机的标识与生成该状态机的引擎的标识的对应关系,并执行步骤604及其后续步骤。
上述实施例在对入侵防御***进行第一次升级时,创建进程,在创建的进程中下载对入侵防御***进行升级的升级包,加载该升级包中的引擎,设置并记录加载的引擎的标识,并通过加载的引擎加载并编译特征库,生成状态机,升级该入侵防御***。本实施例只在对入侵防御***进行第一次升级时,创建一个进程,后续的升级过程均在同一个进程中加载引擎、编译特征库和生成状态机,实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务;并且本实施例对加载的引擎的个数加以限制,同时对生成的状态机的个数加以限制,确保了加载的引擎和生成的状态机不会占用太多的内存,保证了入侵防御***的正常运行。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图7为本发明入侵防御***的升级装置一个实施例的结构示意图,该入侵防御***的升级装置,可以位于入侵防御***中,实现本发明图1所示实施例的流程。如图7所示,该入侵防御***的升级装置可以包括:创建模块71,下载模块72、加载模块73和编译模块74。
具体地,创建模块71,用于创建进程;
下载模块72可以在创建模块71创建的进程中下载对入侵防御***进行升级的升级包;
加载模块73可以在创建模块71创建的进程中,加载下载模块72下载的升级包中的引擎,设置并记录加载的引擎的标识;具体地,加载的引擎的标识可以按照加载时间的先后设置,例如:按照加载时间由先至后的顺序,将引擎的标识分别设为1,2,...,n,即标识为1的引擎是最先加载的引擎。以上只是设置引擎的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置引擎的标识,只要设置的引擎的标识可以区分出引擎加载的先后顺序即可。
编译模块74可以在创建模块71创建的进程中,通过加载模块73加载的引擎加载并编译下载模块72下载的升级包中的特征库,生成状态机,升级该入侵防御***。
上述实施例中,创建模块71创建进程,下载模块72在创建模块71创建的进程中下载对入侵防御***进行升级的升级包,加载模块73在上述进程中加载下载模块72下载的升级包中的引擎,设置并记录加载的引擎的标识,并由编译模块74通过加载的引擎加载并编译特征库,生成状态机,升级该入侵防御***。本实施例在每次引擎和特征库一同升级,或者,只升级特征库时,均创建一个新的进程,从而实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务。
图8为本发明入侵防御***的升级装置另一个实施例的结构示意图,该入侵防御***的升级装置,可以位于入侵防御***中,实现本发明图3所示实施例的流程。如图8所示,该入侵防御***的升级装置可以包括:创建模块81、下载模块82、加载模块83、编译模块84、检测模块85和进程标识记录模块86。
具体地,创建模块81,用于创建进程,具体地,创建模块81可以在每次对入侵防御***进行升级时,创建进程;下载模块82可以在创建模块81创建的进程中下载对入侵防御***进行升级的升级包。
加载模块83可以在创建模块81创建的进程中加载下载模块82下载的升级包中的引擎,设置并记录加载的引擎的标识;具体地,加载的引擎的标识可以按照加载时间的先后设置,例如:按照加载时间由先至后的顺序,将引擎的标识分别设为b1,b2,...,bn,即标识为b1的引擎是最先加载的引擎。以上只是设置引擎的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置引擎的标识,只要设置的引擎的标识可以区分出引擎加载的先后顺序即可。
编译模块84可以在创建模块81创建的进程中,通过加载模块83加载的引擎加载并编译下载模块82下载的升级包中的特征库,生成状态机,升级该入侵防御***;检测模块85可以根据接收到的报文的报文头中的信息和记录的引擎的标识确定对报文进行检测的引擎,通过确定的引擎调用生成的状态机,对该报文进行检测。具体地,检测模块85可以采用本发明图2所示实施例中提供的方法,对接收到的报文进行检测。
其中,检测模块85可以包括:判断子模块851、第一确定子模块852、第二确定子模块853和报文检测子模块854。具体地,判断子模块851可以根据接收到的报文的报文头中的信息判断该报文是否为数据流的首报文;具体地,判断报文是否为数据流的首报文可以为:解析报文的报文头,确定该报文采用的传输协议;当该报文采用TCP传输时,如果该报文的报文头中包括首报文标识,则该报文是数据流的首报文;如果该报文的报文头中不包括首报文标识,则该报文不是数据流的首报文。当该报文采用UDP传输时,则需要根据该报文的五元组信息,在入侵防御***中查找是否有该五元组信息的记录,如果没有查找到该五元组信息的记录,则可以确定该报文是数据流的首报文,记录首报文的五元组信息;如果查找到该五元组信息的记录,则说明该报文不是数据流的首报文。其中,报文的五元组信息包括:报文的源IP地址、目的IP地址、源端口、目的端口和报文所采用的传输协议;属于同一数据流的报文具有相同的五元组信息。
第一确定子模块852可以当判断子模块851确定接收到的报文是数据流的首报文时,根据记录的引擎的标识确定最新加载的引擎,该最新加载的引擎为对报文进行检测的引擎;并记录该报文的报文头中的五元组信息,建立该五元组信息与对该报文进行检测的引擎的标识的对应关系;由于同一数据流的报文具有相同的五元组信息,因此在接收到该数据流的后续报文时,第二确定子模块853可以根据后续报文的五元组信息,以及该五元组信息与记录的引擎的标识的对应关系,确定与该五元组信息对应的引擎的标识,进而可以确定对后续报文进行检测的引擎,并且可以保证对同一数据流的报文采用同一引擎进行检测。
第二确定子模块853可以当判断子模块851确定接收到的报文不是数据流的首报文时,根据该报文的报文头中的五元组信息,利用在数据流的首报文时建立的五元组信息与引擎的标识的对应关系,在记录的引擎的标识中查找与该五元组信息对应的引擎的标识,确定该标识对应的引擎为对该报文进行检测的引擎;
报文检测子模块854可以通过第一确定子模块852或第二确定子模块853确定的引擎调用编译模块84生成的状态机,对报文进行检测。
本实施例中,在每次引擎和特征库一同升级,或者,只升级特征库时,创建模块81均创建一个新的进程,并由下载模块82、加载模块83和编译模块84执行后续步骤。其中,在只升级特征库时,创建模块81创建一个新的进程之后,加载模块83可以通过记录的引擎的标识,确定当前最新加载的引擎,并在创建模块81新创建的进程中,重新加载当前最新加载的引擎,然后为该重新加载的引擎设置一个新的引擎的标识。因此在本实施例中,引擎和状态机一一对应,因此第一确定子模块852或第二确定子模块853确定对报文进行检测的引擎之后,报文检测子模块854就可以通过该引擎调用该引擎生成的状态机,对接收到的报文进行检测。
本实施例中,进程标识记录模块86可以根据创建进程的时间,设置并记录创建的进程的标识;具体地,创建的进程的标识可以按照创建时间的先后设置,例如:按照创建时间由先至后的顺序,将创建的进程的标识分别设为a1,a2,...,an,即标识为a1的进程是最先创建的进程。以上只是设置创建的进程的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置创建的进程的标识,只要设置的进程的标识可以区分出进程创建的先后顺序即可。
本实施例中,下载模块82可以包括:进程确定子模块821、卸载子模块822和升级包下载子模块823。其中,进程确定子模块821可以在创建模块81已创建的进程的个数达到预设的第一阈值时,根据进程标识记录模块86记录的进程的标识确定最先创建的进程;本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对创建的进程的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第一阈值设为n,n为正整数,可以取n=2;
卸载子模块822可以卸载该进程确定子模块821确定的最先创建的进程中的引擎,释放该引擎占用的资源;这时,升级包下载子模块823可以在卸载子模块822卸载进程确定子模块821确定的最先创建的进程中的引擎之后,在进程确定子模块821确定的最先创建的进程中下载对入侵防御***进行升级的升级包。
上述实施例中,创建模块81创建进程,下载模块82在创建模块81创建的进程中下载对入侵防御***进行升级的升级包,加载模块83在创建模块81创建的进程中加载该升级包中的引擎,设置并记录加载的引擎的标识,并由编译模块84在创建模块81创建的进程中通过加载模块83加载的引擎加载并编译该升级包中的特征库,生成状态机,升级该入侵防御***,在接收到报文之后,检测模块85根据该报文的报文头中的信息和记录的引擎的标识确定对报文进行检测的引擎,然后通过确定的引擎调用生成的状态机,对该报文进行检测。本实施例在每次引擎和特征库一同升级,或者,只升级特征库时,均创建一个新的进程,从而实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务;并且本实施例对创建的进程的个数加以限制,确保了创建的进程不会占用太多的内存,保证了入侵防御***的正常运行。
图9为本发明入侵防御***的升级装置再一个实施例的结构示意图,该入侵防御***的升级装置,可以位于入侵防御***中,实现本发明图4所示实施例的流程。如图9所示,该入侵防御***的升级装置可以包括:创建模块91、下载模块92、加载模块93、编译模块94、检测模块95、进程标识记录模块96和状态机标识记录模块97。
具体地,创建模块91可以创建进程,具体地,创建模块91可以在每次引擎和特征库一同升级时,创建一个新的进程;下载模块92可以在创建模块91创建的进程中下载对入侵防御***进行升级的升级包。
加载模块93可以在创建模块91创建的进程中加载下载模块92下载的升级包中的引擎,设置并记录加载的引擎的标识;具体地,加载的引擎的标识可以按照加载时间的先后设置,例如:按照加载时间由先至后的顺序,将引擎的标识分别设为b1,b2,...,bn,即标识为b1的引擎是最先加载的引擎。以上只是设置引擎的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置引擎的标识,只要设置的引擎的标识可以区分出引擎加载的先后顺序即可。
编译模块94可以在创建模块91创建的进程中,通过加载模块93加载的引擎加载并编译下载模块92下载的升级包中的特征库,生成状态机;在编译模块94生成一组状态机之后,状态机标识记录模块97可以设置并记录生成的状态机的标识,建立该状态机的标识与生成该状态机的引擎的标识的对应关系。
检测模块95可以根据接收到的报文的报文头中的信息和加载模块93记录的引擎的标识确定对报文进行检测的引擎,通过确定的引擎调用编译模块94生成的状态机,对该报文进行检测。
本实施例中,在每次引擎和特征库一同升级时,创建模块91创建一个新的进程,并由下载模块92、加载模块93和编译模块94执行后续步骤。因此在本实施例中,进程和引擎一一对应,而一个引擎可能对应多个状态机。
本实施例中,检测模块95可以包括:首报文判断子模块951、第一报文检测子模块952和第二报文检测子模块953。
具体地,首报文判断子模块951可以根据接收到的报文的报文头中的信息判断所述报文是否为数据流的首报文;具体地,判断报文是否为数据流的首报文可以为:解析报文的报文头,确定该报文采用的传输协议;当该报文采用TCP传输时,如果该报文的报文头中包括首报文标识,则该报文是数据流的首报文;如果该报文的报文头中不包括首报文标识,则该报文不是数据流的首报文。当该报文采用UDP传输时,则需要根据该报文的五元组信息,在入侵防御***中查找是否有该五元组信息的记录,如果没有查找到该五元组信息的记录,则可以确定该报文是数据流的首报文,记录首报文的五元组信息;如果查找到该五元组信息的记录,则说明该报文不是数据流的首报文。其中,报文的五元组信息包括:报文的源IP地址、目的IP地址、源端口、目的端口和报文所采用的传输协议;属于同一数据流的报文具有相同的五元组信息。
第一报文检测子模块952可以当首报文判断子模块951确定接收到的报文为数据流的首报文时,根据加载模块93记录的引擎的标识确定最新加载的引擎,该最新加载的引擎为对该报文进行检测的引擎;通过最新加载的引擎调用编译模块94生成的新的状态机,对该报文进行检测;并记录报文的报文头中的五元组信息,建立该五元组信息与最新加载的引擎的标识,以及新的状态机的标识对应关系。
第二报文检测子模块953可以当首报文判断子模块951确定接收到的报文不是数据流的首报文时,根据该报文的报文头中的五元组信息,利用在该数据流的首报文时建立的五元组信息、引擎的标识与状态机的标识的对应关系,在加载模块93记录的引擎的标识中查找与该五元组信息对应的引擎的标识,在状态机标识记录模块97记录的状态机的标识中查找与该五元组信息对应的状态机的标识;通过查找到的引擎的标识所对应的引擎,调用查找到的状态机的标识所对应的状态机,对接收到的报文进行检测。
本实施例中,进程标识记录模块96可以根据创建进程的时间,设置并记录创建的进程的标识;具体地,创建的进程的标识可以按照创建时间的先后设置,例如:按照创建时间由先至后的顺序,将创建的进程的标识分别设为a1,a2,...,an,即标识为a1的进程是最先创建的进程。以上只是设置创建的进程的标识的一种方式,本实施例并不仅限于此,还可通过其他方式设置创建的进程的标识,只要设置的进程的标识可以区分出进程创建的先后顺序即可。
本实施例中,下载模块92可以包括:进程确定子模块921、卸载子模块922和升级包下载子模块923。其中,进程确定子模块921可以在创建模块91已创建的进程的个数达到预设的第一阈值时,根据进程标识记录模块96记录的进程的标识确定最先创建的进程;本实施例中,在不断升级的过程中,可以根据入侵防御***的内存的具体情况对创建的进程的个数进行限制,具体地,可以根据入侵防御***的内存的具体情况将第一阈值设为n,n为正整数,可以取n=2;
卸载子模块922可以卸载该进程确定子模块921确定的最先创建的进程中的引擎,释放该引擎占用的资源;这时,升级包下载子模块923可以在卸载子模块922卸载进程确定子模块921确定的最先创建的进程中的引擎之后,在进程确定子模块921确定的最先创建的进程中下载对入侵防御***进行升级的升级包。
若后续仅需对入侵防御***的特征库进行升级,则进程确定子模块921可以根据进程标识记录模块96记录的进程的标识确定最新创建的进程;这时,升级包下载子模块923可以在进程确定子模块921确定的最新创建的进程中下载对特征库进行升级的升级包;然后,由编译模块94通过最新创建的进程中加载的引擎,加载并编译升级包中的特征库,生成状态机。
上述实施例中的入侵防御***的升级装置,实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务;并且本实施例中的入侵防御***的升级装置对创建的进程的个数加以限制,同时对生成的状态机的个数加以限制,确保了创建的进程、加载的引擎和生成的状态机不会占用太多的内存,保证了入侵防御***的正常运行。
图10为本发明入侵防御***的升级装置又一个实施例的结构示意图,该入侵防御***的升级装置,可以位于入侵防御***中,实现本发明图6所示实施例的流程。如图10所示,该入侵防御***的升级装置可以包括:创建模块1001、下载模块1002、加载模块1003、编译模块1004、检测模块1005和卸载模块1006。
其中,创建模块1001可以在对入侵防御***进行第一次升级时,创建进程;下载模块1002可以在创建模块1001创建的进程中下载对入侵防御***进行升级的升级包;加载模块1003可以在创建模块1001创建的进程中,加载下载模块1002下载的升级包中的引擎,设置并记录加载的引擎的标识;编译模块1004可以在创建模块1001创建的进程中,通过加载模块1003加载的引擎加载并编译下载模块1002下载的升级包中的特征库,生成状态机;检测模块1005可以根据接收到的报文的报文头中的信息和加载模块1003记录的引擎的标识确定对报文进行检测的引擎,通过确定的引擎调用编译模块1004生成的状态机,对该报文进行检测;具体地,检测模块1005在对接收到的报文进行检测时,可以采用本发明图5所示实施例中提供的方法。
本实施例中,当后续仅需对入侵防御***的特征库进行升级时,下载模块1002具体可以在创建模块1001创建的进程中下载对特征库进行升级的升级包;这时,编译模块1004具体可以根据加载模块1003记录的引擎的标识确定最新加载的引擎,通过该最新加载的引擎加载并编译该升级包中的特征库,生成新的状态机。
卸载模块1006可以在加载模块1003加载的引擎的个数达到预设的第三阈值时,根据记录的引擎的标识确定最先加载的引擎,卸载最先加载的引擎,释放该引擎占用的资源;卸载模块1006还可以在编译模块1004已生成的状态机的数量达到预设的第二阈值时,根据记录的引擎的标识确定最先加载的引擎,释放该最先加载的引擎对应的状态机中的一个状态机。
具体地,可以根据入侵防御***的内存的具体情况设置第二阈值和第三阈值,第二阈值和第三阈值为正整数,可以将第三阈值设为2,将第二阈值设为4。
上述实施例中的入侵防御***的升级装置,实现了在入侵防御***的升级过程中加载多个引擎,编译出多组状态机同时工作,实现了在对入侵防御***升级的同时最大限度地不中断升级操作前的数据流的报文检测业务;并且本实施例中的入侵防御***的升级装置对加载的引擎的个数加以限制,同时对生成的状态机的个数加以限制,确保了创建的进程、加载的引擎和生成的状态机不会占用太多的内存,保证了入侵防御***的正常运行。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。

Claims (9)

1.一种入侵防御***的升级方法,其特征在于,包括:
创建进程,在创建的进程中下载对入侵防御***进行升级的升级包;
在所述进程中,加载所述升级包中的引擎,设置并记录加载的引擎的标识;通过所述加载的引擎加载并编译所述升级包中的特征库,生成状态机,升级所述入侵防御***;
根据接收到的报文的报文头中的信息和记录的引擎的标识确定对所述报文进行检测的引擎,通过确定的引擎调用生成的状态机,对所述报文进行检测。
2.根据权利要求1所述的方法,其特征在于,所述根据接收到的报文的报文头中的信息和记录的引擎的标识确定对所述报文进行检测的引擎包括:
根据所述报文的报文头中的信息判断所述报文是否为数据流的首报文;
当所述报文是数据流的首报文时,根据所述记录的引擎的标识确定最新加载的引擎,所述最新加载的引擎为对所述报文进行检测的引擎;记录所述报文的报文头中的五元组信息,建立所述五元组信息与对所述报文进行检测的引擎的标识的对应关系;
当所述报文不是数据流的首报文时,根据所述报文的报文头中的五元组信息,利用在所述数据流的首报文时建立的五元组信息与引擎的标识的对应关系,在所述记录的引擎的标识中查找与所述五元组信息对应的引擎的标识,确定所述标识对应的引擎为对所述报文进行检测的引擎。
3.根据权利要求1所述的方法,其特征在于,还包括:根据创建进程的时间,设置并记录创建的进程的标识;
所述在创建的进程中下载对入侵防御***进行升级的升级包包括:
当已创建的进程的个数达到预设的第一阈值时,根据记录的进程的标识确定最先创建的进程,卸载所述最先创建的进程中的引擎;在所述最先创建的进程中下载对所述入侵防御***进行升级的升级包。
4.根据权利要求3所述的方法,其特征在于,在所述通过所述加载的引擎加载并编译所述升级包中的特征库,生成状态机之前,还包括:
当对所述入侵防御***的引擎和特征库一同升级,并且已创建的进程的个数小于预设的第一阈值,并且已生成的状态机的数量达到预设的第二阈值时,根据记录的进程的标识确定最先创建的进程,卸载所述最先创建的进程中的引擎或者卸载所述最先创建的进程中的一个状态机;
当仅需对所述入侵防御***的特征库进行升级,并且已生成的状态机的数量达到预设的第二阈值时,根据记录的进程的标识确定最先创建的进程,释放所述最先创建的进程中的一个状态机;或者,卸载所述最先创建的进程中的引擎。
5.根据权利要求3所述的方法,其特征在于,还包括:若仅需对所述入侵防御***的特征库进行升级,则根据记录的进程的标识确定最新创建的进程,在所述最新创建的进程中下载对所述特征库进行升级的升级包;通过所述最新创建的进程中加载的引擎,加载并编译所述升级包中的特征库,生成状态机。
6.一种入侵防御***的升级装置,其特征在于,包括:
创建模块,用于创建进程;
下载模块,用于在所述创建模块创建的进程中下载对入侵防御***进行升级的升级包;
加载模块,用于在所述创建模块创建的进程中,加载所述下载模块下载的升级包中的引擎,设置并记录加载的引擎的标识;
编译模块,用于在所述创建模块创建的进程中,通过所述加载模块加载的引擎加载并编译所述下载模块下载的升级包中的特征库,生成状态机,升级所述入侵防御***;
检测模块,用于根据接收到的报文的报文头中的信息和所述加载模块记录的引擎的标识确定对所述报文进行检测的引擎,通过确定的引擎调用所述编译模块生成的状态机,对所述报文进行检测。
7.根据权利要求6所述的装置,其特征在于,所述检测模块包括:
判断子模块,用于根据所述报文的报文头中的信息判断所述报文是否为数据流的首报文;
第一确定子模块,用于当所述判断子模块确定所述报文是数据流的首报文时,根据记录的引擎的标识确定最新加载的引擎,所述最新加载的引擎为对所述报文进行检测的引擎;并记录所述报文的报文头中的五元组信息,建立所述五元组信息与对所述报文进行检测的引擎的标识的对应关系;
第二确定子模块,用于当所述判断子模块确定所述报文不是数据流的首报文时,根据所述报文的报文头中的五元组信息,利用在所述数据流的首报文时建立的五元组信息与引擎的标识的对应关系,在所述记录的引擎的标识中查找与所述五元组信息对应的引擎的标识,确定所述标识对应的引擎为对所述报文进行检测的引擎;
报文检测子模块,用于通过所述第一确定子模块或所述第二确定子模块确定的引擎调用所述编译模块生成的状态机,对所述报文进行检测。
8.根据权利要求6所述的装置,其特征在于,还包括:
进程标识记录模块,用于根据创建进程的时间,设置并记录创建的进程的标识;
所述下载模块包括:
进程确定子模块,用于当所述创建模块已创建的进程的个数达到预设的第一阈值时,根据所述进程标识记录模块记录的进程的标识确定最先创建的进程;
卸载子模块,用于卸载所述进程确定子模块确定的最先创建的进程中的引擎;
升级包下载子模块,用于在所述卸载子模块卸载所述进程确定子模块确定的最先创建的进程中的引擎之后,在所述进程确定子模块确定的最先创建的进程中下载对所述入侵防御***进行升级的升级包。
9.根据权利要求8所述的装置,其特征在于,若仅需对所述入侵防御***的特征库进行升级,则所述进程确定子模块根据所述进程标识记录模块记录的进程的标识确定最新创建的进程;所述升级包下载子模块在所述进程确定子模块确定的最新创建的进程中下载对所述特征库进行升级的升级包;所述编译模块通过所述最新创建的进程中加载的引擎,加载并编译所述升级包下载子模块下载的升级包中的特征库,生成状态机。
CN2009102070563A 2009-10-27 2009-10-27 入侵防御***的升级方法和装置 Expired - Fee Related CN101695031B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102070563A CN101695031B (zh) 2009-10-27 2009-10-27 入侵防御***的升级方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102070563A CN101695031B (zh) 2009-10-27 2009-10-27 入侵防御***的升级方法和装置

Publications (2)

Publication Number Publication Date
CN101695031A CN101695031A (zh) 2010-04-14
CN101695031B true CN101695031B (zh) 2011-12-07

Family

ID=42093972

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102070563A Expired - Fee Related CN101695031B (zh) 2009-10-27 2009-10-27 入侵防御***的升级方法和装置

Country Status (1)

Country Link
CN (1) CN101695031B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102457415B (zh) * 2011-12-27 2015-08-19 华为数字技术(成都)有限公司 Ips检测处理方法、网络安全设备和***
CN104348660B (zh) * 2013-08-08 2018-08-21 华为技术有限公司 防火墙设备中检测引擎的升级方法及装置
CN106936805B (zh) * 2015-12-31 2019-06-04 亿阳安全技术有限公司 一种网络攻击的防御方法和***
CN107368582B (zh) * 2017-07-21 2020-12-22 深信服科技股份有限公司 一种sql语句检测方法及***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1450757A (zh) * 2002-10-11 2003-10-22 北京启明星辰信息技术有限公司 网络入侵监测的方法和***
CN1738257A (zh) * 2004-12-31 2006-02-22 北京大学 基于应用协议检测引擎的网络入侵检测***和方法
CN101282244A (zh) * 2008-05-09 2008-10-08 浙江大学 基于spm的入侵检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1450757A (zh) * 2002-10-11 2003-10-22 北京启明星辰信息技术有限公司 网络入侵监测的方法和***
CN1738257A (zh) * 2004-12-31 2006-02-22 北京大学 基于应用协议检测引擎的网络入侵检测***和方法
CN101282244A (zh) * 2008-05-09 2008-10-08 浙江大学 基于spm的入侵检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2008-98766A 2008.04.24

Also Published As

Publication number Publication date
CN101695031A (zh) 2010-04-14

Similar Documents

Publication Publication Date Title
US11995177B2 (en) In-memory protection for controller security
EP3635562B1 (en) In-memory protection for controller security
CN102970272B (zh) 用于病毒检测的方法、装置和云服务器
CN111274583A (zh) 一种大数据计算机网络安全防护装置及其控制方法
EP3440819A1 (en) Centralized controller management and anomaly detection
CN101695031B (zh) 入侵防御***的升级方法和装置
CN102868699A (zh) 一种提供数据交互服务的服务器的漏洞检测方法及工具
CN105550584A (zh) 一种Android平台下基于RBAC的恶意程序拦截及处置方法
CN111541686B (zh) 一种扫描器的调用方法和装置
CN105471935A (zh) 信息提示方法和装置
WO2021121382A1 (en) Security management of an autonomous vehicle
CN112084091B (zh) 一种***行为审计方法、装置、终端及存储介质
CA2674327A1 (en) Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
CN104573497A (zh) 一种启动项的处理方法和装置
CN109145638B (zh) 一种获取自加载模块函数的方法及装置
CN103310135A (zh) 一种屏蔽应用权限的方法和移动终端
CN101599113A (zh) 驱动型恶意软件防御方法和装置
CN114021176B (zh) 一种SELinux动态授权的方法及***
WO2024125108A1 (zh) 移动端安全切面的按需开启方法及装置
US9154519B1 (en) System and method for antivirus checking of objects from a plurality of virtual machines
CN109784051A (zh) 信息安全防护方法、装置及设备
KR100456512B1 (ko) 커널 백도어 탐지 시스템, 이를 이용한 커널 백도어 탐지방법 및 커널 데이터 복구 방법
CN105740028A (zh) 一种访问控制方法及装置
CN104348660A (zh) 防火墙设备中检测引擎的升级方法及装置
CN116595523A (zh) 基于动态编排的多引擎文件检测方法、***、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

Free format text: FORMER NAME: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee after: Huawei Symantec Technologies Co., Ltd.

Address before: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee before: Chengdu Huawei Symantec Technologies Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111207

Termination date: 20191027