具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,可以提供了一种可以用于实施本申请装置实施例的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种数据检测方法,该方法可由计算机或者类似的运算装置执行。图1所示为一种计算机的结构框图。如图1所示,计算机100包括一个或多个(图中仅示出一个)处理器102、存储器104、以及传输模块106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储软件程序以及模块,如本发明实施例中的数据检测方法和装置对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据检测方法和装置,例如对网络传输的数据进行入侵检测。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网进行通讯。在一个实例中,传输模块106可以是射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
图2是根据本发明第一实施例的数据检测方法的流程图。如图所示,该数据检测方法包括以下步骤:
步骤S202,获取用于进行入侵检测的检测数据。
检测数据可以是通过传输模块106传输的网络数据,即来自网络的信息流。具体地,传输模块106连接至网络,接收来自网络的各种各样的数据,入侵检测系统在对网络传输进行及时监控的过程中,需要实时收集网络传输的数据。另外,检测数据还可以是主机数据,例如主机的审计日志等数据。本发明实施例中,获取的检测数据优选为网络数据和主机数据,以便于将网络数据和主机数据进行关联分析,检测出入侵行为。获取检测数据,以便于对检测数据进行收集。可以是实时获取检测数据,以便对网络传输的数据进行实时检测。
步骤S204,通过第一进程将检测数据缓存到内存中。
获取到检测数据之后,通过第一进程将该检测数据缓存到内存中,该内存可以是存储器104。同时,由于内存的读写速度比传统的基于硬盘读写的数据库要快,且能快上好几个数量级,使得系统的分析计算效率波传统的数据库快几个数量级,从而减少在数据读写上的耗时,提高数据入侵检测的效率。第一进程可以是守护进程,由守护进程对检测数据进行写入,同时,守护进程还可以对写入内存的数据进行维护等操作。
步骤S206,通过第二进程从内存中读取缓存后的数据。
第二进程为与第一进程不同的进程,第二进程可以为多个进程,可以采用多个进程同时从内存中读取数据,以进行相应的分析,提高数据检测分析的速度。其中,多个进程可以采用无锁并行的方式从内存中读取数据。
步骤S208,对从内存中读取的数据进行入侵检测。
对读取的数据进行入侵检测,可以是对读取的数据进行入侵分析和计算,得到分析计算结果,以检测出是否存在入侵行为。
根据本发明实施例,通过获取检测数据,第一进程将检测数据缓存到内存中,第二进程从内存中读取缓存后的数据,对从内存中读取的数据进行入侵检测,解决了对数据的检测时间长导致无法及时检测出入侵行为的问题,达到了减少入侵检测的时间以便于及时检测出入侵行为的效果。
优选地,通过第一进程将检测数据缓存到内存中包括:对所述检测数据进行过滤,得到过滤后的数据;以及通过所述第一进程将所述过滤后的数据缓存到内存中。
由于用于进行入侵检测的数据量巨大,在获取到检测数据之后,对该数据进行过滤,以便于减少进行入侵检测的数据量。具体地,对检测数据进行过滤可以是先对该数据进行异常行为分析以分析出检测数据中的异常数据,该异常数据中包含有入侵行为的数据。获取到的检测数据量巨大,然而检测数据中异常数据量少,且该异常数据中包含有入侵行为的数据,因此,通过对检测数据进行过滤,得到过滤后的数据,从而减少进行入侵检测的数据量,提高入侵检测的效率。
由于对数据进行过滤后,数据量降低,因此可以将过滤后的数据缓存到内存中,降低内存存储压力。
图3是根据本发明第二实施例的数据检测方法的流程图。该实施例的数据检测方法可以作为上述实施例的数据检测方法的一种优选实施方式。如图所示,该数据检测方法包括:
步骤S302与步骤S202相同,这里不做赘述。
步骤S304,将检测数据与预设的匹配条件进行匹配。
匹配条件用于对检测数据进行过滤,预设的匹配条件可以是具有疑似入侵数据的特征,或者是具有一定条件的过滤规则,将获取到的检测数据与匹配条件进行匹配,以便于从中筛选出与匹配条件相匹配的数据。
步骤S306,将检测数据中与匹配条件匹配的数据作为过滤后的数据。
通过将检测数据与匹配条件进行匹配,得到与匹配条件匹配的数据,这些数据可以是疑似入侵行为的异常数据。这些异常数据相对于获取到的数据而言,数据量小,因此可以将这些数据作为过滤后的数据缓存到内存中,以便于从内存中读取数据,提高数据读写的速度。
具体的,由于入侵检测系统收集各种各样的数据,分析数据的异常行为,而这些数据中异常数据的比例较低;再加上入侵检测的时效性,通过分析实时数据发现当前的异常行为;综上两个方面,系统不用关注过去很长一段时间的全部数据;只需要分析实时数据,和过去的异常数据。尽管系统每天分析的数据量很大,然而实时分析的数据量有限,这样就可以将这些数据缓存到内存中,附加超时淘汰的方式,即将超时无效的数据及时从内存中删除。
步骤S308,通过第一进程将过滤后的数据缓存到内存中。
步骤S310、步骤S312依次与步骤S206、步骤S208相同,这里不做赘述。
根据本发明实施例,通过将检测数据与预设的匹配条件进行匹配,以对检测数据进行过滤,从而降低用于进行入侵检测的数据量,进一步提高入侵检测的速度,以快速检测出入侵行为。
图4是根据本发明第三实施例的数据检测方法的流程图。该实施例的数据检测方法可以作为上述实施例的数据检测方法的一种优选实施方式。如图所示,该数据检测方法包括以下步骤:
步骤S402、步骤S404依次与图2所示的步骤S202、步骤S204相同,这里不做赘述。
步骤S406,建立缓存后的数据的索引。
步骤S408,通过第二进程基于索引从内存中读取缓存后的数据。
在将检测数据缓存到内存之后,建立缓存后的数据的索引,这样,通过第二进程读取数据时,可以直接通过索引从内存中读取相应的数据。由于建立了索引,可以使得更加快速地找到需要读取的数据,提高数据读取的效率。同时,由于采用了索引,在对数据进行入侵检测时,可以同构索引查找到相互关联的数据,从而可以将相互关联的数据进行关联分析,以检测是否有入侵行为。
由于随着入侵检测系统(IDS)的发展,入侵方式也日趋多样化。依赖单一数据纬度的入侵检测系统越来越满足不了入侵发现的需要。本发明实施例,通过实时收集各种各样的数据,例如网络数据和主机数据,并对该数据进行关联分析、交互印证,从而发现入侵行为。
步骤S410与步骤S208相同,这里不做赘述。
优选地,建立缓存后的数据的索引包括:按照时间顺序建立缓存后的数据的时间索引;和/或,获取缓存后的数据的标识,对标识作哈希计算,得到标识对应的哈希值,将哈希值作为缓存后的数据的索引,其中,标识用于表示缓存后的数据的来源。
建立的索引可以是建立存入到内存中的数据的时间索引,可以按照时间先后顺序建立时间索引。建立的索引还可以是根据用于表示缓存后的数据来源的标识建立的索引,具体地,可以是获取缓存到内存中的数据的标识,对该标识作哈希计算,得到哈希值,将该哈希值作为数据的索引。
具体地,如图5所示,时间索引可以是环形队列索引(滑动时间窗口):以时间先后顺序保存数据的索引指针;读取数据时可以直接通过该索引查询。
Hash:以agent_id值做hash,该agent_id用于表示数据的来源,例如服务器、网关设备、交换机的设备的ID;做hash过程中发生碰撞时,可以采用开链法,放在在Agent指针链中。其中,Agent指针链可以以agent_id递增序排列。
数据链为以数据插入时间先后顺序排列的数据链。
滑动时间窗口采用环形队列,以时间先后顺序缓存数据。
在新数据插入时,直接插入到数据链尾部(push_back),时间复杂度O(1)。
在旧数据删除时,删除环形队列(滑动时间窗口)头部超时数据(rm_head),时间复杂度O(1)。
数据节点采用json格式,支持非结构化数据快速存储,和读取。
由于本发明实施例中,将数据缓存到内存中,可以支持非结构化的数据存储,避免采用数据库中导致无法存储非结构化的数据的问题。
优选地,第一进程为守护进程,其中,通过第一进程将检测数据缓存到内存中包括:通过守护进程采用原子操作将检测数据写入到内存中。
将检测数据写入到内存中,该过程中写操作由一个守护进程执行,并采用原子操作进行,使得缓存数据无修改,避免读取数据时读取到被修改前的数据(即脏数据)。具体地,守护进程对内存中数据进行维护可以包括以下情况:
数据增加push_back。增加最新数据。先写数据内容,然后原子操作添加环形队列尾部。
数据删除rm_head。删除最旧数据。首先原子操作删除索引,之后清空数据内容。
内存中缓存数据内容不修改:保证不读取脏数据,数据只增删,不修改。
优选地,第二进程包括多个进程,其中,通过第二进程从内存中读取缓存后的数据包括:通过多个进程从内存中读取缓存后的数据。通过多个进程从内存中读取数据,并进行入侵检测,从而提高入侵检测的效率。其中,多个进程可以采用无锁并行的方式对数据进行读取操作。
多个进程以无锁并行从内存中读取数据,其中,无锁并行是指读写同步进行,无冲突;无须加锁。多个进程可以称为多个分析作业,多个进程可以同时读取内存中的数据,相互不影响。数据读取只读取安全数据:比如缓存最近4个小时数据,只读最近3.5小时内的数据,保证数据读取时不被删除。
通过索引读取数据:根据环形队列(滑动时间窗口)索引直接取数据。
原内存数据不修改:可以多个作业无锁并行读取,分析处理后的数据(可修改),经过分析作业直接展示出来。
根据本发明实施例,通过采用多进程以无锁并行方式读取和分析数据,可以充分利用多核CPU的优势,进行并行分析计算,提高入侵检测的效率。
进一步地,多个进程包括第一读取进程和第二读取进程,其中,通过多个进程从内存中读取缓存后的数据包括:第一读取进程在不对读取的数据进行加锁的情况下从内存中读取缓存数据,缓存数据为缓存后的数据中的部分数据;以及第二读取进程在第一读取进程读取缓存数据的过程中读取缓存数据。
第一读取进程在不对读取的数据进行加锁的情况下从内存中读取缓存数据,第二读取进程在第一读取进程读取缓存数据的过程中读取缓存数据,这一过程即第一读取进程与第二读取进程以无锁并行的方式对缓存数据进行读取,从而使得多个进程在对同一数据进行读取时,相互之间不受到影响。
本发明实施例中,将主机数据和网络传输的数据进行关联分析,因此多个进程在读取数据过程中,会读取到相同的数据(缓存数据),通过采用采用上述方式,避免读取进程读取数据时相互影响,降低数据读取效率,而延长入侵检测时间的问题。
具体地,多个进程数据读取分析流程如图6所示,包括以下步骤:
步骤S602,分析作业开始执行(即读取进程开始执行)。
步骤S604,加载配置、内存数据接口。加载相关配置和内存数据接口,以便于从内存中读取数据。
步骤S606,是否有新数据。即判断内存中是否存在新数据。如果是,则执行步骤S608,反之,则执行步骤S612,休眠(sleep)。
步骤S608,根据索引读取数据、分析计算。具体地,根据在向内存中缓存数据时建立的索引,从内存中读取该数据,并进行入侵检测分析和计算,得到分析计算结果。
步骤S610,输出分析计算结果。根据分析计算结果确定该数据是否有入侵行为。
在输出计算结果或者判断出没有新数据之后,进程继续判断是否有新的数据,从而实现对新数据的实时检测。
本发明实施例的数据检测方法通过数据流式处理、内存缓存、分析作业无锁并发、分析逻辑配置化,来实现大数据下,入侵检测非结构化数据,实时关联分析计算,可以实现数十秒内发现、告警入侵行为。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的数据检测方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例,还提供了一种用于实施上述数据检测方法的数据检测装置,该装置主要用于执行本发明实施例上述内容所提供的数据检测方法,以下对本发明实施例所提供的数据检测装置做具体介绍。
图7是根据本发明第一实施例的数据检测装置的示意图。如图所示,该数据检测装置包括:获取单元10、缓存单元30、读取单元40和检测单元50。
获取单元10用于获取用于进行入侵检测的检测数据。
检测数据可以是通过传输模块106传输的网络数据,即来自网络的信息流。具体地,传输模块106连接至网络,接收来自网络的各种各样的数据,入侵检测系统在对网络传输进行及时监控的过程中,需要实时收集网络传输的数据。另外,检测数据还可以是主机数据,例如主机的审计日志等数据。本发明实施例中,获取的检测数据优选为网络数据和主机数据,以便于将网络数据和主机数据进行关联分析,检测出入侵行为。获取检测数据,以便于对检测数据进行收集。可以是实时获取检测数据,以便对网络传输的数据进行实时检测。
缓存单元30用于通过第一进程将检测数据缓存到内存中。
获取到检测数据之后,通过第一进程将该检测数据缓存到内存中,该内存可以是存储器104。同时,由于内存的读写速度比传统的基于硬盘读写的数据库要快,且能快上好几个数量级,使得系统的分析计算效率波传统的数据库快几个数量级,从而减少在数据读写上的耗时,提高数据入侵检测的效率。第一进程可以是守护进程,由守护进程对检测数据进行写入,同时,守护进程还可以对写入内存的数据进行维护等操作。
读取单元40用于通过第二进程从内存中读取缓存后的数据。
第二进程为与第一进程不同的进程,第二进程可以为多个进程,可以采用多个进程同时从内存中读取数据,以进行相应的分析,提高数据检测分析的速度。其中,多个进程可以采用无锁并行的方式从内存中读取数据。
检测单元50用于对从内存中读取的数据进行入侵检测。
对读取的数据进行入侵检测,可以是对读取的数据进行入侵分析和计算,得到分析计算结果,以检测出是否存在入侵行为。
根据本发明实施例,通过获取检测数据,第一进程将检测数据缓存到内存中,第二进程从内存中读取缓存后的数据,对从内存中读取的数据进行入侵检测,解决了对数据的检测时间长导致无法及时检测出入侵行为的问题,达到了减小入侵检测的时间以便于及时检测出入侵行为的效果。
具体地,如图8所示,可以通过分析引擎来获取检测数据,其中,分析引擎包括内存和处理器,处理器可以为多个,如图中处理器1,处理器2至处理器N,分析引擎通过第一进程将获取到检测数据缓存到内存中,多个处理器通过第二进程从内存中依次读取缓存后的数据,用于进行入侵检测,得到检测结果。
优选地,缓存单元30包括:过滤模块,用于对所述检测数据进行过滤,得到过滤后的数据;以及缓存模块,用于通过所述第一进程将所述过滤后的数据缓存到内存中。
由于用于进行入侵检测的数据量巨大,在获取到检测数据之后,对该数据进行过滤,以便于减少进行入侵检测的数据量。具体地,对检测数据进行过滤可以是先对该数据进行异常行为分析以分析出检测数据中的异常数据,该异常数据中包含有入侵行为的数据。获取到的检测数据量巨大,然而检测数据中异常数据量少,且该异常数据中包含有入侵行为的数据,因此,通过对检测数据进行过滤,得到过滤后的数据,从而减少进行入侵检测的数据量,提高入侵检测的效率。
由于对数据进行过滤后,数据量降低,因此可以将过滤后的数据缓存到内存中,降低内存存储压力。
图9是根据本发明第二实施例的数据检测装置的示意图。该实施例的数据检测装置可以作为上述实施例的数据检测装置的一种优选实施方式。如图所示,该数据检测装置包括:获取单元10、缓存单元30、读取单元40和检测单元50,其中,缓存单元30包括过滤模块301和缓存模块302,过滤模块301包括匹配子模块3011和生成子模块3012。
匹配子模块3011用于将检测数据与预设的匹配条件进行匹配。
匹配条件用于对检测数据进行过滤,预设的匹配条件可以是具有疑似入侵数据的特征,或者是具有一定条件的过滤规则,将获取到的检测数据与匹配条件进行匹配,以便于从中筛选出与匹配条件相匹配的数据。
生成子模块3012用于将检测数据中与匹配条件匹配的数据作为过滤后的数据。
通过将检测数据与匹配条件进行匹配,得到与匹配条件匹配的数据,这些数据可以是疑似入侵行为的异常数据。这些异常数据相对于获取到的数据而言,数据量小,因此可以将这些数据作为过滤后的数据缓存到内存中,以便于从内存中读取数据,提高数据读写的速度。
具体的,由于入侵检测系统收集各种各样的数据,分析数据的异常行为,而这些数据中异常数据的比例较低;再加上入侵检测的时效性,通过分析实时数据发现当前的异常行为;综上两个方面,系统不用关注过去很长一段时间的全部数据;只需要分析实时数据,和过去的异常数据。尽管系统每天分析的数据量很大,然而实时分析的数据量有限,这样就可以将这些数据缓存到内存中,附加超时淘汰的方式,即将超时无效的数据及时从内存中删除。
根据本发明实施例,通过将检测数据与预设的匹配条件进行匹配,以对检测数据进行过滤,从而降低用于进行入侵检测的数据量,进一步提高入侵检测的速度,以快速检测出入侵行为。
优选地,数据检测装置还包括:建立单元,用于在通过第一进程将检测数据缓存到内存中之后,建立缓存后的数据的索引,读取单元包括第一读取模块,用于通过第二进程基于索引从内存中读取缓存后的数据。
在将缓存后的数据缓存到内存之后,建立缓存后的数据的索引,这样,通过第二进程读取数据时,可以直接通过索引从内存中读取相应的数据。由于建立了索引,可以使得更加快速地找到需要读取的数据,提高数据读取的效率。同时,由于采用了索引,在对数据进行入侵检测时,可以同构索引查找到相互关联的数据,从而可以将相互关联的数据进行关联分析,以检测是否有入侵行为。
由于随着入侵检测系统(IDS)的发展,入侵方式也日趋多样化。依赖单一数据纬度的入侵检测系统越来越满足不了入侵发现的需要。本发明实施例,通过实时收集各种各样的数据,进行关联分析、交互印证,从而发现入侵行为。
优选地,建立单元包括:第一建立模块,用于按照时间顺序建立缓存后的数据的时间索引;和/或,第二建立模块,用于获取缓存后的数据的标识,对标识作哈希计算,得到标识对应的哈希值,将哈希值作为缓存后的数据的索引,其中,标识用于表示缓存后的数据的来源。
建立的索引可以是建立存入到内存中的数据的时间索引,可以按照时间先后顺序建立时间索引。建立的索引还可以是根据用于表示缓存后的数据来源的标识建立的索引,具体地,可以是获取缓存到内存中的数据的标识,对该标识作哈希计算,得到哈希值,将该哈希值作为数据的索引。
具体地,如图5所示,时间索引可以是环形队列索引(滑动时间窗口):以时间先后顺序保存数据的索引指针;读取数据时可以直接通过该索引查询。
Hash:以agent_id值做hash,该agent_id用于表示数据的来源,例如服务器、网关设备、交换机的设备的ID;做hash过程中发生碰撞时,可以采用开链法,放在在Agent指针链中。其中,Agent指针链可以以agent_id递增序排列。
数据链为以数据插入时间先后顺序排列的数据链。
滑动时间窗口采用环形队列,以时间先后顺序缓存数据。
在新数据插入时,直接插入到数据链尾部(push_back),时间复杂度O(1)。
在旧数据删除时,删除环形队列(滑动时间窗口)头部超时数据(rm_head),时间复杂度O(1)。
数据节点采用json格式,支持非结构化数据快速存储,和读取。
由于本发明实施例中,将数据缓存到内存中,可以支持非结构化的数据存储,避免采用数据库中导致无法存储非结构化的数据的问题。
优选地,第一进程为守护进程,其中,缓存单元包括:写入模块,用于
通过守护进程采用原子操作将检测数据写入到内存中。
将检测数据写入到内存中,该过程中写操作由一个守护进程执行,并采用原子操作进行,使得缓存数据无修改,避免读取数据时读取到被修改前的数据(即脏数据)。具体地,守护进程对内存中数据进行维护可以包括以下情况:
数据增加push_back。增加最新数据。先写数据内容,然后原子操作添加环形队列尾部。
数据删除rm_head。删除最旧数据。首先原子操作删除索引,之后清空数据内容。
内存中缓存数据内容不修改:保证不读取脏数据,数据只增删,不修改。
优选地,第二进程包括多个进程,其中,读取单元包括:第二读取模块,用于通过多个进程从内存中读取缓存后的数据。通过多个进程从内存中读取数据,并进行入侵检测,从而提高入侵检测的效率。其中,多个进程可以采用无锁并行的方式对数据进行读取操作。
多个进程以无锁并行从内存中读取数据,其中,无锁并行是指读写同步进行,无冲突;无须加锁。多个进程可以称为多个分析作业,多个进程可以同时读取内存中的数据,相互不影响。数据读取只读取安全数据:比如缓存最近4个小时数据,只读最近3.5小时内的数据,保证数据读取时不被删除。
通过索引读取数据:根据环形队列(滑动时间窗口)索引直接取数据。
原内存数据不修改:可以多个作业无锁并行读取,分析处理后的数据(可修改),经过分析作业直接展示出来。
根据本发明实施例,通过采用多进程以无锁并行方式读取和分析数据,可以充分利用多核CPU的优势,进行并行分析计算,提高入侵检测的效率。
进一步地,多个进程包括第一读取进程和第二读取进程,其中,第二读取模块包括:第一读取子模块,用于第一读取进程在不对读取的数据进行加锁的情况下从内存中读取缓存数据,缓存数据为缓存后的数据中的部分数据;以及第二读取子模块,用于第二读取进程在第一读取进程读取缓存数据的过程中读取缓存数据。
第一读取进程在不对读取的数据进行加锁的情况下从内存中读取缓存数据,第二读取进程在第一读取进程读取缓存数据的过程中读取缓存数据,这一过程即第一读取进程与第二读取进程以无锁并行的方式对缓存数据进行读取,从而使得多个进程在对同一数据进行读取时,相互之间不受到影响。
本发明实施例中,将主机数据和网络传输的数据进行关联分析,因此多个进程在读取数据过程中,会读取到相同的数据(缓存数据),通过采用采用上述方式,避免读取进程读取数据时相互影响,降低数据读取效率,而延长入侵检测时间的问题。
图10是根据本发明实施例的又一数据检测装置的框架结构图。如图所示,该数据检测装置包括标准化中心、分析引擎和存储器。
标准化中心用于接收外接网络客户端(Client)发送的检测数据,并对网络传输数据进行过滤,得到过滤后的数据。标准化中心可以实现本发明实施例前面所述的过滤单元20的功能。
分析引擎用于对标准化中心传输过来的数据缓存到共享内存中,并对该数据进行分析计算,以检测入侵行为。分析引擎可以用于实现本发明实施例中缓存单元30、建立单元、读取单元40和检测单元50的功能。在分析引擎中,将过滤后的数据缓存到共享内存中,并按照时间先后顺序建立数据的索引,以滑动时间窗口的形式展现,多个进程(即分析作业1、分析作业2至分析作业N)从共享内存中以无锁并行的方式读取数据并进行分析计算,得到分析计算结果。
存储器用于存储分析引擎输出的分析计算结果。
本发明实施例的数据检测装置还对外提供读写接口;数据存储采用共享内存hash,并有滑动时间窗口,可在0(1)时间内读取数据,实现了数据的快速读取、计算。数据读写方式:为一写、多读,通过环形队列,实现无锁并发。分析作业可以动态添加、删除,而不相互影响。
整个分析引擎框架采用一写多读。由分析引擎的一个守护进程维护内存的数据,写入和删除。可以有多个分析作业同时读取数据、进行分析。该守护进程维护的内存数据机构如下图所示。内存表修改,采用gcc原子操作,避免分析作业读脏数据。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。