CN101902461B - 一种数据流内容过滤的方法及装置 - Google Patents

一种数据流内容过滤的方法及装置 Download PDF

Info

Publication number
CN101902461B
CN101902461B CN 201010142148 CN201010142148A CN101902461B CN 101902461 B CN101902461 B CN 101902461B CN 201010142148 CN201010142148 CN 201010142148 CN 201010142148 A CN201010142148 A CN 201010142148A CN 101902461 B CN101902461 B CN 101902461B
Authority
CN
China
Prior art keywords
data message
data
stream record
message
finite
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
CN 201010142148
Other languages
English (en)
Other versions
CN101902461A (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.)
Beijing Star Net Ruijie Networks Co Ltd
Original Assignee
Beijing Star Net Ruijie Networks 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 Beijing Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN 201010142148 priority Critical patent/CN101902461B/zh
Publication of CN101902461A publication Critical patent/CN101902461A/zh
Application granted granted Critical
Publication of CN101902461B publication Critical patent/CN101902461B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种数据流内容过滤的方法及装置,用以检测出特征码分布在多个报文的网络蠕虫病毒,提供防火墙的预防能力。该包括:获取数据报文,确定所述数据报文所属数据流的流记录,以及所述数据报文的方向;将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中;当所述有限状态自动机输出特征码命中时,对所述数据报文所属数据流进行过滤处理;否则,根据所述有限状态自动机中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态。

Description

一种数据流内容过滤的方法及装置
技术领域
本发明涉及网络数据传输技术领域,特别涉及一种数据流内容过滤的方法及装置。
背景技术
互联网技术的迅猛发展,为数据传输带来前所未有的便利的同时,也为网络蠕虫病毒的广泛蔓延带来了更大的便利。网络蠕虫病毒威胁着网络数据流的安全,严重困扰着各个领域越来越多的网络用户。因此,对网络数据流内容进行过滤,拦截携带有网络蠕虫病毒的数据流越来越重要。
目前,采用防火墙技术来过滤网络数据流内容。其中,防火墙都以“链表数组”的形式来组织和管理数据流,这个“链表数组”通常称为“流表”。
以传输控制协议(Transmission Control Protocol,TCP)报文为例,防火墙一般通过五元组标识一个TCP流,这五元组包括:源IP地址、目的IP地址、协议类型,源端口和目的端口。
每收到一个TCP报文,防火墙从该TCP报文的报头提取出源IP、目的IP、协议类型,源端口和目的端口,五元组经过哈希(HASH)运算,得到的HASH结果,假设为X,作为“流表”的索引。
在“流表”的第X位置上,是一条“流”记录链表,链表的每个节点是一个“流”记录,每个“流”的五元组的HASH运算结果都等于X。
然后,防火墙把该TCP报文的五元组与链表上的每个节点所记录的五元组逐个匹配,如有命中,则表示该TCP报文所属的“流”已存在;否则,防火墙在确定该TCP报文符合创建新“流”记录的条件后,将创建一个“流”记录,添加到在“流表”的第X位置的“流”链表上,以记录该TCP报文所属的连接的上下文环境,即在“流表”的第X位置上增加了一个节点。这里,导致防火墙新创建一个“流”记录的报文,通常称“首报文”。若该TCP报文不符合创建新“流”记录的条件,则丢弃该TCP报文。
当防火墙确定接收到的TCP报文所属的“流”已存在后,将该TCP报文的内容与保存的每个网络蠕虫病毒特征码进行比对,当确定该TCP报文的内容中携带有一个或多个网络蠕虫病毒特征码时,则阻止该TCP报文通过,并截止该TCP报文所属的“流”。
上述以TCP报文为例,对于“协议类型”特殊的报文,例如:非TCP、非用户数据包协议(User Datagram Protocol,UDP)、或非因特网控制报文协议(Internet Control Message Protocol,ICMP),防火墙从接收到的报文的报头提取“源IP”、“目的IP”和“协议类型”,而“源端口”和“目的端口”两个参数置0,参与HASH运算,确定该报文所属的“流”。然后,将该报文的内容与保存的每个网络蠕虫病毒特征码进行比对,根据比对结果对该报文以及该报文所属的“流”进行处理。
可见,现有的防火墙报文过滤功能可以阻止携带有网络蠕虫病毒特征码的报文通过。但防火墙在进行内容过滤时,都是检查单个报文的内容。而有时,网络蠕虫病毒特征码分布在两个或多个报文中,即单个报文的内容中并没有携带一个完整的网络蠕虫病毒特征码,两个或多个报文的内容合起来才携带了一个完整的网络蠕虫病毒特征码,这种情况下,采用上述方法进行内容过滤时,单个报文的内容与保存的每个网络蠕虫病毒特征码是没有匹配的,防火墙允许每个报文,以及对应的“流“通过。因此,现有的防火墙报文过滤功能还不能检测出特征码分布在多个报文的网络蠕虫病毒,从而也不能截止这样的数据流。
发明内容
本发明实施例提供一种数据流内容过滤的方法及装置,用以检测出特征码分布在多个报文的网络蠕虫病毒,提供防火墙的预防能力。
本发明实施例提供一种数据流内容过滤的方法,包括:
获取数据报文,确定所述数据报文所属数据流的流记录,以及所述数据报文的方向,其中,一个数据流对应一个流记录;
将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中,其中,所述有限状态自动机为在系统初始化时由所有待检测的特征码构造生成,并且所述流记录中与所述方向对应的有限状态自动机的记录状态为与数据流对应的流记录中保存的与所述数据报文的方向对应的所述有限状态自动机的状态;当接收的数据报文是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为状态“0”,当接收的数据报文不是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为所述有限状态自动机处理上一同方向的数据报文后的输出状态;
当所述有限状态自动机输出特征码命中时,对所述数据报文所属数据流进行过滤处理;
否则,根据所述有限状态自动机中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态;
其中,所述确定所述数据报文所属数据流的流记录包括:
在保存的流记录中查找是否有与所述数据报文的五元组相匹配的流记录,其中,所述五元组包括:源IP地址、目的IP地址、协议类型,源端口和目的端口,若有,将查找到的流记录作为所述数据报文所属数据流的流记录,若没有,判断所述数据报文是否符合创建新的流记录的条件,当所述数据报文符合所述条件时,建立所述数据报文所属数据流的流记录;
所述确定所述数据报文的方向包括:
当数据报文的源IP地址与数据报文所属数据流的流记录的源IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的目的IP地址一致时,确定数据报文为正向数据报文;当数据报文的源IP地址与数据报文所属数据流的流记录的目的IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的源IP地址一致时,确定数据报文为反向数据报文。
本发明实施例提供一种数据流内容过滤的装置,包括:
获取单元,用于获取数据报文;
确定单元,用于确定所述数据报文所属数据流的流记录,以及所述数据报文的方向;其中,其中,一个数据流对应一个流记录,并且所述确定单元包括查找子单元、确定子单元、建立子单元、正向确定子单元和反向确定子单元;
读入单元,用于将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中,其中,所述有限状态自动机为在系统初始化时由所有待检测的特征码构造生成,并且所述流记录中与所述方向对应的有限状态自动机的记录状态为与数据流对应的流记录中保存的与所述数据报文的方向对应的所述有限状态自动机的状态;当接收的数据报文是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为状态“0”,当接收的数据报文不是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为所述有限状态自动机处理上一同方向的数据报文后的输出状态;
过滤单元,用于当所述有限状态自动机输出特征码命中时,对所述数据报文所属数据流进行过滤处理;
更新单元,用于当所述有限状态自动机没有输出特征码命中时,根据所述有限状态自动机中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态;
其中,
所述查找子单元,用于在保存的流记录中查找是否有与所述数据报文的五元组相匹配的流记录,其中,所述五元组包括:源IP地址、目的IP地址、协议类型,源端口和目的端口;
所述确定子单元,用于将查找到的流记录作为所述数据报文所属数据流的流记录;
所述建立子单元,用于当没有查找到与所述数据报文的五元组相匹配的流记录,且所述数据符合创建新的流记录的条件时,建立所述数据报文对应的流记录;
所述正向确定子单元,用于当数据报文的源IP地址与数据报文所属数据流的流记录的源IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的目的IP地址一致时,确定数据报文为正向数据报文;
所述反向确定子单元,用于当数据报文的源IP地址与数据报文所属数据流的流记录的目的IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的源IP地址一致时,确定数据报文为反向数据报文。
本发明实施例中,系统初始化时候,基于所有待检测的网络蠕虫病毒的特征码,构造出一个有限状态自动机。则在对获取的数据报文进行数据流内容过滤时,确定获取到的数据报文所属数据流的流记录,以及该数据报文的方向,将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中;当所述有限状态自动机输出特征码命中时,对所述数据报文所属数据流进行过滤处理;否则,根据所述有限状态自动机中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态。这样,能够在线过滤特征码分布在多个数据报文的网络蠕虫病毒,且过滤数据流内容的性能不受需要过滤的网络蠕虫病毒数目及特征码的长度影响。
附图说明
图1为本发明实施例中数据流内容过滤的流程图;
图2为本发明另一实施例中数据流内容过滤的流程图;
图3为本发明再一实施例中数据流内容过滤的流程图;
图4为本发明实施例一中进行数据流内容过滤处理的流程图;
图5为本发明实施例中数据流内容过滤装置的结构图。
具体实施方式
本发明实施例提供的数据流内容过滤的方法中,采用有限状态自动机(Deterministic Finite State Automaton,DFA)查询与构成该DFA的任一特征码相匹配的数据流,其中,该数据流包括一条或多条数据报文。并且,当DFA查询到数据流后,对该数据流进行过滤处理。
DFA是基于Aho-Corasick算法的一个涵盖所有查询关键字的DFA。待搜索的数据库中的每个字符逐个输入到DFA中,当某个查询关键字命中,DFA输出报告。可用于字符串匹配、文本检索、网络数据流深度内容过滤、入侵检测、网络防毒等领域中。
通过Aho-Corasick算法得到DFA的过程中,需要构造三个函数:GOTO,FAILURE和OUTPUT。构造这三个函数的流程包括:
1.1构造GOTO函数。
该过程需要输入的是:要查询的关键字集合。例如:输入的关键字集合是K={y1,y2,…,yk}。
输出的是:GOTO函数和部分完成的OUTPUT函数。
1.2构造FAILURE函数。
该过程需要输入的是:上述过程1.1中得到的GOTO函数及部分完成的OUTPUT函数。
输出的是:FAILURE函数和完成的OUTPUT函数。
1.3构造OUTPUT函数。
该过程将GOTO函数和FAILURE函数进一步合并,得到DFA。
所以该过程输入的是:上述过程1.1中得到的GOTO函数及过程1.2中得到的FAILURE函数。
输出的是:构造完成的DFA。
假设需要在一个字符串数据库中搜索4个关键字,分别是:HE,SHE,HIS和HERZWXY。则在流程1.1中输入K={HE,SHE,HIS,HERZWXY},经过步骤1.1、1.2、1.3的构建过程,得到包含输入状态(即当前状态)、输入字符与对应输出的输出状态(即下一状态)的对应关系的DFA,如表1所示。
表1
  输入状态   输入字符   输出状态
  0   H   1
  0   S   3
  0   其他字符   0
  1   E   2
  1   I   6
  1   H   1
  1   S   3
  1   其他字符   0
  3,7   H   4
  3,7   S   3
  3,7   其他字符   0
  2,5   R   8
  2,5   H   1
  2,5   S   3
  2,5   其他字符   0
  6   S   7
  6   H   1
  6   其他字符   0
  4   E   5
  4   I   6
  4   H   1
  4   S   3
  4   其他字符   0
  8   Z   9
  8   S   3
  8   H   1
  8   其他字符   0
  9   W   10
  9   S   3
  9   H   1
  9   其他字符   0
  10   X   11
  10   S   3
  10   H   1
  10   其他字符   0
  11   Y   12
  11   S   3
  11   H   1
  11   其他字符   0
各输出状态所对应的字符匹配结果如表2所示。
表2
  输出状态   输出结果
  2   HE命中
  5   SHE,HE命中
  7   HIS命中
  12   HEZSWXY命中
  其他状态   无输出
DFA输入状态为状态“0”。输入字符‘H’,则DFA输出状态改为“1”;若输入字符‘S’,则进入“3”状态;若输入其他字符,则保持“0”状态。当DFA处于状态“1”时,若输入字符‘E’,则DFA进入状态“2”,且输出“HE命中”。
假设字符串数据库中某个字符串“SHISHE”,这六个字符将按顺序逐个输入DFA。DFA的初始的输入状态是状态“0”,接收输入字符‘S’后,进入状态“3”;输入字符‘H’后,进入状态“4”;输入字符‘I’后,进入状态“6”;输入字符‘S’后,进入状态“7”,并输出“HIS命中”;接着输入字符‘H’和‘E’,使DFA进入状态“5”,并输出“SHE,HE命中”。
可见,DFA中包含了在输入状态、输入字符后所对应的各种可能的下一状态,即输出状态。以及各个状态和命中的关键字的对应关系。当命中某一关键字时,能够及时的输出命中结果。
应用DFA进行字符匹配时,待搜索数据库中的每个字符在DFA中能够触发一次且仅能够触发一次状态转换。所以,Aho-Corasick的算法应用的优势在于其算法复杂度仅与待搜索数据库的长度有关,而与查询关键字的长度及数目都无关。因此,在字符串匹配的各种已有算法中,Aho-Corasick是迄今为止最快的算法。
本发明实施例中,防火墙并非仅仅以单个报文为目标,根据规则允许或阻止其通过;而是跟踪完整的数据流交互过程,在一定的上下文环境中,审核数据流交互过程双方每个往来报文的合法性。其中,防火墙通过流记录来保存对应的数据流交互过程的上下文环境,即一个数据流对应一个流记录。由于防火墙在系统初始化时候,需要基于所有待检测的网络蠕虫病毒的特征码,构造出一个DFA。因此,流记录中还包括了DFA的记录状态。
这样,防火墙在跟踪数据流,进行数据流内容过滤的过程参见图1,包括:
步骤101:获取数据报文。
网络设备之间进行通信时,每条报文都需要经过防火墙。这样,防火墙通过网络,接收网络设备发送的数据报文。其中,可以采用中断的方式或者查询的方式获取网络设备发送的数据报文。
步骤102:确定获取到的数据报文所属数据流的流记录,以及数据报文的方向。
这里,防火墙在运行过程中,每获取到一个数据报文,就在保存的流记录中查找是否有与该数据报文的五元组相匹配的流记录,如果有,则将查找到的流记录作为该数据报文所属数据流的流记录,如果没有,则判断该数据报文是否符合创建新的流记录的条件,如果符合,就新建一个与该数据报文所属数据流对应的流记录,否则,就丢弃接收到的数据报文。
并在此过程中确定数据报文的方向。其中,方向包括:正向,或反向。当数据报文的源IP地址与数据报文所属的流记录的源IP地址一致,且数据报文的目的IP地址与数据报文所属的流记录的目的IP地址一致时,确定数据报文为正向数据报文;当数据报文的源IP地址与数据报文所属的流记录的目的IP地址一致,且数据报文的目的IP地址与数据报文所属的流记录的源IP地址一致时,确定数据报文为反向数据报文。
步骤103:将确定的流记录中与确定的方向对应的DFA的记录状态作为DFA的输入状态,将数据报文的第一个字符作为输入字符。
防火墙在系统初始化时候,已经构造出一个DFA了,流记录中也保存了与方向对应的DFA的状态,即记录状态。这里,可以用一个数组的形式保存DFA的记录状态,例如:(1,6),即正向数据报文对应的DFA的状态为“1”,反向数据报文对应的DFA的状态为“6”。因此,从流记录中保存的DFA的记录状态中,提取出与确定的方向对应的DFA的记录状态,将提取出的DFA的记录状态作为DFA的输入状态,即将提取出的DFA的记录状态作为DFA的当前状态。
根据上述DFA的描述,DFA确定输入状态后,是按照输入的字符顺序开始跳转的。因此,这里,将数据报文的第一字符作为输入字符,即将数据报文的第一字符作为当前字符。
当接收的数据报文是对应数据流的首报文时,流记录中与其同方向的DFA的记录状态为状态“0”。当接收的数据报文不是对应数据流的首报文时,流记录中与其同方向的DFA的记录状态为DFA处理上一同方向的数据报文后,输出的状态。
步骤104:将数据报文中的输入字符读入DFA中,DFA从输入状态开始运行。
这里,数据报文中字符是按照顺序逐个读入DFA中的,DFA从步骤103确定的输入状态开始,每读入数据报文中的一个字符,DFA就跳转到下一个状态。
步骤105:判断DFA是否输出特征码命中,如果有,执行步骤106;如果没有,则执行步骤107。
根据上述对于DFA的介绍,在DFA的某些输出状态,会对应一个或多个特征码命中,这样在上述DFA运行过程中,DFA会输出特征码命中,从而执行步骤106。否则,执行步骤107。
步骤106:对数据报文所属数据流进行过滤处理。
因DFA输出了特征码命中,即表明该数据流携带有待检测的特征码,因此,对整个数据报文所属数据流进行过滤处理。这里,过滤处理包括:对该数据流进行拦截;或者,进行病毒报警;再或者,对该数据流进行拦截并进行病毒报警。对数据流进行拦截具体可以直接丢弃整个数据流,或者,截断该数据流。本发明实施例中是将数据流进行拦截处理,即只有DFA输出了特征码命中,不论是正向数据报文,还是反向数据报文都需拦截。
步骤107:判断数据报文是否还有未处理的字符,如果有,将下一个字符作为输入字符,返回步骤104;如果有没有,则执行步骤108。
当DFA没有输出了特征码命中时,该数据报文的每个字符都要输入DFA中进行检索。
步骤108:根据DFA中对应的输出状态,更新流记录中与确定的方向对应的DFA的记录状态。
根据数据报文中的最后一个字符在DFA中对应的下一个状态,即DFA读入该数据报文全部内容后的输出状态,更新流记录中与确定的方向对应的DFA的记录状态,并转发该数据报文。
DFA读入数据报文中的所有字符后,会有一个输出状态,即下一个状态,此时,将流记录中与确定的方向对应的DFA的记录状态更新为下一个状态,即将流记录中与数据报文同方向的DFA的记录状态更新为输出状态。由于DFA运行过程中,没有输出特征码命中,因此,防火墙会根据该数据报文中的目的IP,发送该数据报文。
例如:DFA的特征码中包括:HIS。构建的DFA如表1所示。这样,当接收的报文为:AFHI时,根据上述的过滤流程,该报文中所有字符读入后,DFA没有输出特征码命中,此时,该报文对应的流记录中的DFA的记录状态更新为“6”。而随后接收的同方向的报文为:SEF时,根据上述的过滤流程,DFA运行前的输入状态为“6”,当读入“S”时,DFA跳转到状态“7”,此时,DFA会输出“HIS”命中。这样,防火墙就会对数据流进行过滤处理,包括:将接收到的报文丢弃。
在上述步骤102中,在保存的流记录中查找是否有与该数据报文的五元组相匹配的流记录包括:从该数据报文的报头提取出源IP地址、目的IP地址、协议类型,源端口和目的端口,五元组经过HASH运算,得到流表的索引X;然后,在保存的流记录中查找索引为X的所有流记录;将该数据报文的五元组与索引为X的所有流记录的五元组进行匹配,当有流记录的五元组与该数据报文的五元组相匹配,则将流记录作为该数据报文所属数据流的流记录。
其中,流记录的五元组与数据报文的五元组匹配的过程包括:流记录的源IP地址、目的IP地址、协议类型,源端口和目的端口分别与数据报文的源IP地址、目的IP地址、协议类型,源端口和目的端口一致,则确定两者匹配;或者,流记录的源IP地址、目的IP地址、协议类型,源端口和目的端口分别与数据报文的目的IP地址、源IP地址、协议类型,源端口和目的端口一致时确定两者匹配。即匹配过程中,数据报文的目的IP地址、源IP地址可以分别与流记录的源IP地址、目的IP地址完全一致;或者,数据报文的目的IP地址、源IP地址可以分别与流记录的源IP地址、目的IP地址恰好相反。
这样,在上述匹配过程中,也就可以确定出该数据报文的方向,包括:当数据报文的源IP地址与流记录的源IP地址一致,且数据报文的目的IP地址与流记录的目的IP地址一致时,确定数据报文为正向数据报文;当数据报文的源IP地址与流记录的目的IP地址一致,且数据报文的目的IP地址与流记录的源IP地址一致时,确定数据报文为方向数据报文。
另外,判断该数据报文是否符合创建一个新的流记录的条件包括:报头合法性检查,包过滤规则匹配,流量控制等。即包括:判断该数据报文是否是SYN报文,是否未达到带宽要求等。
因此,本发明实施例中,数据流内容过滤的过程包括:获取数据报文,确定该数据报文所属数据流的流记录,以及该数据报文的方向;将该流记录中与方向对应的DFA的记录状态作为DFA的输入状态,将所述数据报文中的字符读入DFA中;当DFA输出特征码命中时,对该数据报文所属数据流进行过滤处理;否则,根据DFA中对应的输出状态,更新确定的流记录中与确定的方向对应的DFA的记录状态。
本发明实施例中,防火墙可以采用上述流程对获取的网络设备之间的每条数据报文进行处理,从而实现对应数据流的内容过滤。但是,对于采用某种通信协议的网络设备之间的数据通信,防火墙只需要对一端发送的数据报文进行上述处理,就可以实现对应数据流的内容过滤。例如:服务器与客户端之间采用超文本传输协议(HyperText Transfer Protocol,HTTP)进行数据通信,服务器向客户端发送的数据报文一般都是安全的,不需要进行内容过滤,而客户端向服务器发送的数据报文则有可能携带有网络蠕虫病毒,则需要采用上述流程进行处理。
因此,在这种情况下,防火墙在将确定的流记录中与方向对应的DFA的记录状态作为DFA的输入状态之前,还包括:将该数据报文的方向与预设方向进行比较,当两者一致时,将确定的流记录中与方向对应的DFA的记录状态作为输入状态。否则,防火墙不做内容过滤处理,直接转发该数据报文。即上述步骤103之前,还包括一个判断流程,判断数据报文的的方向与预设方向是否一致,当数据报文的方向与预设方向一致,才执行步骤103,否则,上述流程结束,防火墙直接转发该数据报文。这里,预设方向即为防火墙确定需要监控的数据流的方向,可以为正向或反向。例如:上述采用HTTP协议通信过程中,客户端向服务器发送的数据报文需要监控,则可见预设方向置为正向。
上述实施例中,防火墙都是顺序检查接收到数据报文,即防火墙都是按“先发先到”的接收到数据报文。但是,很多通信协议,例如“TCP”协议,都允许TCP报文“后发先至”,即先发出去的报文迟于后发出去的报文到达目的端。因此,防火墙可能是乱序接收到一个数据流中的数据报文。这样,防火墙在跟踪数据流时,流记录中不仅包括了DFA的记录状态,还包括了数据报文的期望序号。参见图2,防火墙进行数据流内容过滤的过程包括:
步骤201:获取数据报文。
这里,数据报文可以是一个TCP数据流中的一个TCP报文,获取的数据报文可以是数据交互中发送端发送的报文,或者是响应端发送的报文。
本发明实施例中,防火墙可能是乱序接收到一个数据流中的数据报文,防火墙把后发先至的数据报文存入缓存区中,或者丢弃该数据报文。因此,当防火墙的缓存区中有数据报文,且防火墙未接收到网络设备发送的数据报文时,防火墙可按照先进先出的原则,从本地的缓存区中获取数据报文。
步骤202:确定接收到的数据报文所述数据流的流记录,以及数据报文的方向。
同样,在保存的流记录中查找是否有与该数据报文的五元组相匹配的流记录,如有,将查找到的流记录作为所述数据报文所属数据流的流记录;否则,判断该数据报文是否符合创建新的流记录的条件,并且,当该数据报文符合创建新的流记录的条件时,建立该数据报文对应的所属数据流的流记录。
并在此过程中确定数据报文的方向。其中,方向包括:正向,或反向。当数据报文的源IP地址与数据报文所属的流记录的源IP地址一致,且数据报文的目的IP地址与数据报文所属的流记录的目的IP地址一致时,确定数据报文为正向数据报文;当数据报文的源IP地址与数据报文所属的流记录的目的IP地址一致,且数据报文的目的IP地址与数据报文所属的流记录的源IP地址一致时,确定数据报文为反向数据报文。
步骤203:将数据报文的序号与确定的流记录中与确定的方向对应的期望序号进行比较,当两者一样时,执行步骤204,否则,执行步骤212。
这里,防火墙可能是乱序接收到一个数据流中的数据报文,因此,需要进行数据流重构。这样,每接收到一个数据报文后,都会计算出与该数据报文同方向的下一个后继报文的序号,即期望序号,并保存在流记录中。这样,在流记录中保存了与每个方向对应的期望序号。
因此,进行DFA处理之前,需要提取数据报文的序号,并将提取到的序号与流记录中与确定的方向对应的期望序号进行比较,当两者一样时,则该数据报文即为期望处理的数据报文,执行步骤204,否则,该报文可能是后发先到的报文,则执行步骤212。
步骤204:将确定的流记录中与确定的方向对应的DFA的记录状态作为DFA的输入状态,将数据报文的第一个字符作为输入字符。
从流记录中保存的DFA的记录状态中,提取出与确定的方向对应的DFA的记录状态,将提取出的DFA的记录状态作为DFA的当前状态,即输入状态,并将数据报文的第一字符作为当前字符,即输入字符。
步骤205:将数据报文中的输入字符读入DFA中,DFA从输入状态开始运行。
这里,每读入数据报文中的一个字符,DFA就跳转到下一个状态。
步骤206:判断DFA是否输出特征码命中,如果有执行步骤207;如果没有,则执行步骤208。
根据上述对于DFA的介绍,在DFA的某些输出状态,会对应一个或多个特征码命中,这样DFA会输出特征码命中,从而执行步骤207。否则,执行步骤208。
步骤207:对数据报文所属数据流进行过滤处理。
因DFA输出了特征码命中,即表明该数据流携带有待检测的特征码,因此,对整个数据报文所属数据流进行过滤处理。这里,可以直接丢弃整个数据流。或者,截断该数据流后,进行病毒报警。
步骤208:判断数据报文是否还有未处理的字符,如果有,将下一个字符作为输入字符,返回步骤205;如果有没有,则执行步骤209。
当DFA没有输出了特征码命中时,该数据报文的每个字符都要输入DFA中进行检索。
步骤209:根据DFA中对应的输出状态,更新流记录中与确定的方向对应的DFA的记录状态。
这里,根据数据报文中的最后一个字符在DFA中对应的下一个状态的值,即DFA读入该数据报文全部内容后的输出状态,更新流记录中与确定的方向对应的DFA的记录状态。
DFA读入数据报文中的所有字符后,会有一个输出状态,即下一个状态,此时,将流记录中与确定的方向对应的DFA的记录状态更新为下一个状态,即将流记录中与数据报文同方向的DFA的记录状态更新为输出状态。
步骤210:根据数据报文的序号,以及所述数据报文中的数据字节数,更新所述流记录中与确定的方向对应的期望序号。
防火墙进行数据流重构,将数据报文的序号加上数据报文中的数据字节数,得到期望序号,将得到的期望序号保存在流记录中。
步骤211:根据数据报文中的目的IP,转发该数据报文,本流程结束。
在上述DFA的运行过程中,没有特征码命中,则根据数据报文中的目的IP,转发该数据报文。
步骤212:丢弃数据报文,或者将数据报文存入缓存区中。
对于“后发先至”的报文,防火墙可以有多种处理方式,包括:直接将该数据报文丢弃,或者,将该数据报文存入缓存区中。
由于很多通信协议,例如:TCP协议,的可靠性连接特性保证了发送端能够重新发送接收端没有确认收到的报文。因此,当防火墙将“后发先至”的报文丢弃后,也可以在后续过程中继续接收到该报文。
当防火墙接收到的报文时,优先处理接收到的报文;若网络上暂时无报文到来,防火墙则按照“先进先出”顺序重新处理缓冲区中的报文,即按照先进先出的原则,从缓存区中获取数据报文,然后进行上述的数据流内容过滤处理,具体过程就不再累述了。
另外,本发明实施例中,如果一条数据报文被重新处理的次数超过规定值,比如:3次,则丢弃该数据报文,并截断对应的数据流。
同样,在本发明实施例中,防火墙在将确定的流记录中与方向对应的DFA的记录状态作为DFA的输入状态之前,还包括一个判断流程,判断数据报文的方向与预设方向是否一致,其中,预设方向即为防火墙确定需要监控的数据流的方向。具体包括:上述步骤203之前,将该数据报文的方向与预设方向进行比较,当数据报文的方向与预设方向一致,才执行步骤203,否则,防火墙直接转发该数据报文,上述流程结束,可以具体参见图3,其对应的过程就不再累述了。
通过上述数据流内容过滤的过程,防火墙不仅可以检测出特征码分布在多个报文的网络蠕虫病毒,并对携带网络蠕虫病毒的数据流进行过滤,而且,经过防火墙输出的数据报文已经恢复成原来的发送端的发送顺序,实现了数据流的重构。
下面结合说明书附图对本发明实施例作进一步详细描述。
实施例一,本发明实施例中,数据报文为TCP报文。防火墙待检测的网络蠕虫病毒的特征码集合为{HE,SHE,HIS,HERZWXY},防火墙初始化时,基于该特征码集合构造DFA,如表1所示。防火墙设置为缓存“后发先至”报文。本发明实施例中,防火墙只需要对发送端发送的每条TCP报文行内容过滤,即预设方向为正向。则防火墙在跟踪TCP数据流,进行TCP数据流内容过滤的过程参见图4,包括:
步骤401:防火墙接收到一条SYN报文,该报文序号为S1。
本发明实施例中,SYN报文、SYNACK报文、以及FIN报文是特殊的TCP报文,其中,SYN报文与SYNACK报文是网络设备间的链路建立报文,FIN报文是链路结束报文。
一般,SYN报文、SYNACK报文中不携带有数据内容,各自对应的数据字节数为1。而FIN报文中可以携带有数据内容,或者不携带有数据内容,其对应的数据字节为数据内容的字符数+1。
步骤402:防火墙确定接收到SYN报文符合设定的创建新的流记录的条件,因此,建立一个TCP流记录:F1。
其中,该TCP流记录F1中与正向对应的DFA的记录状态为“0”。
步骤403:SYN报文为首报文,对应的TCP流记录F1中与正向对应的DFA的记录状态为“0”,因此,将TCP流记录F1中与正向对应的DFA的记录状态为“0”作为DFA的输入状态。
步骤404:该SYN报文没有数据内容,DFA不能读取到字符,DFA没有输出特征码命中,因此,更新后的TCP流记录F1中与正向对应的DFA的记录状态为仍为“0”,并计算下一个后继TCP报文的序号,SYN报文对应的数据字节数为1,期望序号为S1+1=S1+1,在TCP流记录F1中记录与正向对应的期望序号S1+1。同时,转发该SYN报文。
步骤405:防火墙接收到SYNACK报文,该报文序号为R1,并根据该SYNACK报文的五元组,确定该SYNACK报文对应的TCP流记录为F1,且该SYNACK报文为反向报文。
根据TCP协议,网络设备进行数据通信时,发送端送SYN报文后,接收端会发送SYNACK报文,这样,防火墙接收到SYNACK报文,根据该SYNACK报文的五元组,确定该SYNACK报文对应的TCP流记录为F1,且该SYNACK报文与创建流记录的SYN报文的来源不同,则可以确定该SYNACK报文为反向报文。
步骤406:防火墙已确定该SYNACK报文为反向,直接转发该SYNACK报文。
防火墙中预设方向为正向。这样,SYNACK报文的方向与预设方向不一致,则直接转发该SYNACK报文。
当然,若另一实施例中,防火墙需要对发送端,接收端发送的每条TCP报文都进行内容过滤,即双向过滤,没有设置预设方向,那么,防火墙有与正向、以及反向分别对应的DFA的记录状态。这里,TCP流记录F1中的与反向对应的DFA的记录状态为“0”,与反向对应的期望序号为R1+1=R1+1,具体过程就不在累述了。
步骤407:防火墙接收到ACK报文,该报文的序号为S1+1,报文没有数据内容,并根据该ACK报文的五元组,确定该ACK报文对应的TCP流记录为F1,以及该ACK报文是正向数据报文。
根据TCP协议,发送端与接收端之间需要三次握手,发送端接收到SYNACK报文后,会再发送一次不携带数据内容的ACK报文。该ACK报文对应的TCP流记录也为F1。
步骤408:防火墙确定该ACK报文的方向与预设方向一致。且该ACK报文没有数据内容,DFA不能读取到字符,DFA没有输出特征码命中,这样,DFA运行后,TCP流记录F1中与正向对应的DFA的记录状态为仍为“0”,并计算下一个后继TCP报文的序号,ACK报文对应的数据字节数为0,则期望序号为S1+1,即在TCP流记录F1中记录的与正向对应的期望序号仍为S1+1。同时,转发该ACK报文。
步骤409:防火墙接收到一条TCP报文,该报文序号为A1,报文的内容是:ABCHI。
发送端与接收端之间的三次握手已完成,发送端与接收端之间进行数据通信。发送端开始发送TCP数据报文,这样,防火墙接收到每条TCP报文。本发明实施例中,对发送端发送的每条TCP报文都需进行内容过滤,即防火墙中预设方向为正向。
步骤410:防火墙根据该TCP报文的五元组,确定该TCP报文对应的TCP流记录为F1,该TCP报文是正向数据报文。
这里,在确定该TCP报文对应的TCP流记录为F1的同时,可以确定了这个TCP报文是正向数据报文。
步骤411:防火墙确定该TCP报文的方向与预设方向一致后,将该TCP报文的序号A1与TCP流记录F1中与正向对应的期望序号S1+1进行比较,确定A1=S1+1,则将TCP报文对应的TCP流记录F1中与正向对应的DFA的记录状态“0”作为DFA的输入状态。
步骤412:将该TCP报文的内容“ABCHI”逐一读入DFA中,DFA如表1所示从状态“0”开始跳转。
步骤413:在上述过程中,DFA没有输出特征码命中,且最后一个字符“I”对应的下一个状态为“6”,即输出状态为“6”,则防火墙将TCP流记录F1中记录的与正向对应的DFA的记录状态更新为“6”。
步骤414:防火墙计算下一个与正向对应的后继TCP报文的序号,并转发该TCP报文。
这里,该TCP报文是一条普通的数据报文,该数据报文中的数据字节数即为报文内容的字符数。该TCP报文的内容是:ABCHI。即该TCP报文中的数据字节数为5,则期望的序号为S1+1+5=S1+6,将TCP流记录F1中与正向对应的期望序号更新为S1+6。
步骤415:防火墙接收到一条TCP报文,该报文序号为A2,报文的内容为:FHS。
步骤416:防火墙根据该TCP报文的五元组,确定该TCP报文对应的TCP流记录为F1,以及该TCP报文是正向数据报文。
步骤417:防火墙确定该TCP报文的方向与预设方向一致后,将该TCP报文的序号A2与TCP流记录F1中与正向对应的期望序号S1+6进行比较,确定A2>S1+6,则将该条TCP报文存入缓存区中。
步骤418:防火墙接收到一条TCP报文,该报文序号为A3,报文的内容为:SXYZ。
步骤419:防火墙根据该TCP报文的五元组,确定该TCP报文对应的TCP流记录为F1,以及该TCP报文是正向数据报文。
步骤420:防火墙确定该TCP报文的方向与预设方向一致后,将该TCP报文的序号A3与TCP流记录F1中与正向对应的期望序号S1+6进行比较,确定A3=S1+6,则将TCP报文对应的TCP流记录F1中的与正向对应的DFA的记录状态“6”作为DFA的输入状态。
步骤421:将该TCP报文的内容“SXYZ”逐一读入DFA中,DFA如表1从状态“6”开始跳转。
步骤422:DFA输入状态为6,读入“S”后,下一状态为“7”,此时,DFA输出“HIS命中”,则防火墙截断该TCP流,并报警。流程处理结束。
在上述实施例中,若步骤418中接收到的TCP报文的序号为A4,则当步骤420中确定A4<S1+6时,则该报文已经处理过,防火墙丢弃该报文。
另外,若步骤418中接收到的TCP报文的内容为:RZY,则步骤421中将该内容逐一输入DFA中,DFA也不会输出特征码命中,这样,DFA中与最后一个字符的对应的状态为“0”,即输出状态为“0”。则TCP流记录F1中与正向对应的DFA的记录状态为“0”,期望序号为S1+6+3=S1+9。此后,防火墙没有接收到TCP报文,则按照先进先出的原则,从缓存区中取出TCP报文,然后对获取的TCP报文进行过滤处理。若缓存区中取出TCP报文为步骤417中缓存进去的TCP报文,则可以确定该报文的流记录为F1,该报文是正向数据报文,且该报文的序号A2=S1+9,这样,DFA对该TCP报文进行处理,具体过程就不再累述了。
根据上述数据流内容过滤的方法,可以构造一种数据流内容过滤的装置,该装置可以在防火墙中,或者在入侵检测系统(Intrusion Detection System,IDS)/入侵预防系统(Intrusion Prevention System,IPS)等具有防御网络蠕虫病毒的设备中。参见图5,该数据流内容过滤的装置包括:获取单元100、确定单元200、读入单元300、过滤单元400和更新单元500。其中,
获取单元100,用于获取数据报文。
确定单元200,用于确定所述数据报文所属数据流的流记录,以及所述数据报文的方向。
读入单元300,用于将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中,其中,所述有限状态自动机由所有待检测的特征码构造生成。
过滤单元400,用于当所述有限状态自动机输出特征码命中时,对所述数据报文所属数据流进行过滤处理。
更新单元500,用于当所述有限状态自动机没有输出特征码命中时,根据所述有限状态自动机中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态。
当获取到数据报文后,该确定单元200就在保存的流记录中查找是否有与该数据报文的五元组相匹配的流记录,如果有,则将查找到的流记录作为该数据报文所属数据流的流记录,如果没有,则判断该数据报文是否符合创建一个新的流记录的条件,如果符合,就新建一个与该数据报文所属数据流对应的流记录,否则,就丢弃接收到的数据报文。
可见,确定单元100包括:查找子单元、确定子单元和建立子单元。
查找子单元,用于在保存的流记录中查找是否有与所述数据报文的五元组相匹配的流记录,其中,所述五元组包括:源IP地址、目的IP地址、协议类型,源端口和目的端口。
确定子单元,用于将查找到的流记录作为所述数据报文所属数据流的流记录。
建立子单元,用于当没有查找到与所述数据报文的五元组相匹配的流记录,且所述数据符合创建新的流记录的条件时,建立所述数据报文对应的流记录。
该确定单元100还包括:正向确定子单元和反向确定子单元。
正向确定子单元,用于当所述数据报文的源IP地址与所述数据报文所属的流记录的源IP地址一致,且所述数据报文的目的IP地址与所述数据报文所属的流记录的目的IP地址一致时,确定所述数据报文为正向数据报文。
反向确定子单元,用于当所述数据报文的源IP地址与所述数据报文所属的流记录的目的IP地址一致,且所述数据报文的目的IP地址与所述数据报文所属的流记录的源IP地址一致时,确定所述数据报文为反向数据报文。
本发明实施例中,当乱序接收到一个数据流中的数据报文时,该装置还包括:第一比较单元和处理单元。
第一比较单元,用于将所述数据报文的序号与所述流记录中与所述方向对应的期望序号进行比较,当两者一样时,通知所述读入单元300进行处理。
处理单元,用于当两者不一样时,将所述数据报文丢弃,或,将所述数据报文存入缓存区。
本发明实施例中,该装置可以只对一端发送的数据报文的内容进行过滤处理,因此,该装置还可以包括:第二比较单元,用于将确定的所述数据报文的方向与预设方向进行比较,当两者一样时,通知读入单元300进行处理。这样,读入单元300才会将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中。
因此,当数据报文的序号与流记录中与所述方向对应的期望序号一致,读入单元300才会将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中。
或者,当所述数据报文的方向与预设方向一致,且数据报文的序号与流记录中与所述方向对应的期望序号一致,读入单元300才会将所述流记录中与该方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中。
这样,更新单元500,还用于根据所述数据报文的序号,以及所述数据报文中的数据字节数,更新所述流记录中与所述方向对应的期望序号。
本发明实施例中,当接收到的报文时,优先处理接收到的报文;若网络上暂时无报文到来,该装置可以按照“先进先出”顺序重新处理缓冲区中的报文,包括:按照先进先出的原则,从缓存区中获取数据报文。
因此,本发明实施例中,获取单元100,具体用于接收网络设备发送的数据报文,或,当未接收到网络设备发送的数据报文时,按照先进先出的原则,从所述缓存区中获取数据报文。
本发明实施例中还包括了一种装有上述的数据流内容过滤的装置的网络设备。该网络设备可以是防火墙,或者是IDS/IPS等具有防御网络蠕虫病毒的设备,其中,防火墙,或者设备中都包括了上述的数据流内容过滤的装置。
综上所述,本发明实施例中,防火墙在系统初始化时候,基于所有待检测的网络蠕虫病毒的特征码,构造出一个DFA。则在对获取的数据报文进行数据流内容过滤时,确定获取到的数据报文所属数据流的流记录,以及该数据报文的方向,将所述流记录中与所述方向对应的DFA的记录状态作为DFA的输入状态,将所述数据报文中的字符读入所述DFA中;当所述DFA输出特征码命中时,对所述数据报文所属数据流进行过滤处理;否则,根据所述DFA中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态。这样,能够在线过滤特征码分布在多个数据报文的网络蠕虫病毒,且过滤数据流内容的性能不受需要过滤的网络蠕虫病毒数目及特征码的长度影响。并且,流记录中保存了下一个与所述方向对应的后继报文的序号,即期望序号,只有获取的数据报文的序号与所述方向对应的期望序号一致,才能进行DFA处理,这样,经过防火墙输出的数据报文已经恢复成原来的发送端的发送顺序,实现了数据流的重构。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (9)

1.一种数据流内容过滤的方法,其特征在于,包括:
获取数据报文,确定所述数据报文所属数据流的流记录,以及所述数据报文的方向,其中,一个数据流对应一个流记录;
将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中,其中,所述有限状态自动机为在系统初始化时由所有待检测的特征码构造生成,并且所述流记录中与所述方向对应的有限状态自动机的记录状态为与数据流对应的流记录中保存的与所述数据报文的方向对应的所述有限状态自动机的状态;当接收的数据报文是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为状态“0”,当接收的数据报文不是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为所述有限状态自动机处理上一同方向的数据报文后的输出状态;
当所述有限状态自动机输出特征码命中时,对所述数据报文所属数据流进行过滤处理;
否则,根据所述有限状态自动机中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态;
其中,所述确定所述数据报文所属数据流的流记录包括:
在保存的流记录中查找是否有与所述数据报文的五元组相匹配的流记录,其中,所述五元组包括:源IP地址、目的IP地址、协议类型,源端口和目的端口,若有,将查找到的流记录作为所述数据报文所属数据流的流记录,若没有,判断所述数据报文是否符合创建新的流记录的条件,当所述数据报文符合所述条件时,建立所述数据报文所属数据流的流记录;
所述确定所述数据报文的方向包括:
当数据报文的源IP地址与数据报文所属数据流的流记录的源IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的目的IP地址一致 时,确定数据报文为正向数据报文;当数据报文的源IP地址与数据报文所属数据流的流记录的目的IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的源IP地址一致时,确定数据报文为反向数据报文。
2.如权利要求1所述的方法,其特征在于,将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态之前,还包括:
将所述数据报文的序号与所述流记录中与所述方向对应的期望序号进行比较;
当两者一样时,将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态;
当两者不一样时,将所述数据报文丢弃,或,将所述数据报文存入缓存区;
则所述获取数据报文包括:
接收网络设备发送的数据报文;或,
当未接收到网络设备发送的数据报文时,按照先进先出的原则,从所述缓存区中获取数据报文。
3.如权利要求2所述的方法,其特征在于,更新所述流记录中与所述方向对应的有限状态自动机的当前状态之后,还包括:
根据所述数据报文的序号,以及所述数据报文中的数据字节数,更新所述流记录中与所述方向对应的期望序号。
4.如权利要求1或2所述的方法,其特征在于,将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态之前,还包括:
将确定的所述数据报文的方向与预设方向进行比较;
当两者一致时,将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态。
5.一种数据流内容过滤的装置,其特征在于,包括: 
获取单元,用于获取数据报文;
确定单元,用于确定所述数据报文所属数据流的流记录,以及所述数据报文的方向;其中,一个数据流对应一个流记录,并且所述确定单元包括查找子单元、确定子单元、建立子单元、正向确定子单元和反向确定子单元;
读入单元,用于将所述流记录中与所述方向对应的有限状态自动机的记录状态作为所述有限状态自动机的输入状态,将所述数据报文中的字符读入所述有限状态自动机中,其中,所述有限状态自动机为在系统初始化时由所有待检测的特征码构造生成,并且所述流记录中与所述方向对应的有限状态自动机的记录状态为与数据流对应的流记录中保存的与所述数据报文的方向对应的所述有限状态自动机的状态;当接收的数据报文是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为状态“0”,当接收的数据报文不是对应数据流的首报文时,流记录中与其同方向的所述有限状态自动机的记录状态为所述有限状态自动机处理上一同方向的数据报文后的输出状态;
过滤单元,用于当所述有限状态自动机输出特征码命中时,对所述数据报文所属数据流进行过滤处理;
更新单元,用于当所述有限状态自动机没有输出特征码命中时,根据所述有限状态自动机中对应的输出状态,更新所述流记录中与所述方向对应的有限状态自动机的记录状态;
其中,
所述查找子单元,用于在保存的流记录中查找是否有与所述数据报文的五元组相匹配的流记录,其中,所述五元组包括:源IP地址、目的IP地址、协议类型,源端口和目的端口;
所述确定子单元,用于将查找到的流记录作为所述数据报文所属数据流的流记录;
所述建立子单元,用于当没有查找到与所述数据报文的五元组相匹配的流记录,且所述数据符合创建新的流记录的条件时,建立所述数据报文对应的流 记录;
所述正向确定子单元,用于当数据报文的源IP地址与数据报文所属数据流的流记录的源IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的目的IP地址一致时,确定数据报文为正向数据报文;
所述反向确定子单元,用于当数据报文的源IP地址与数据报文所属数据流的流记录的目的IP地址一致,且数据报文的目的IP地址与数据报文所属数据流的流记录的源IP地址一致时,确定数据报文为反向数据报文。
6.如权利要求5所述的装置,其特征在于,还包括:
第一比较单元,用于将所述数据报文的序号与所述流记录中与所述方向对应的期望序号进行比较,当两者一样时,通知所述读入单元进行操作;
处理单元,用于当两者不一样时,将所述数据报文丢弃,或,将所述数据报文存入缓存区。
7.如权利要求6所述的装置,其特征在于,
所述获取单元,具体用于接收网络设备发送的数据报文,或,当未接收到网络设备发送的数据报文时,按照先进先出的原则,从所述缓存区中获取数据报文。
8.如权利要求6或7所述的装置,其特征在于,
所述更新单元,还用于根据所述数据报文的序号,以及所述数据报文中的数据字节数,更新所述流记录中与所述方向对应的期望序号。
9.如权利要求5或6所述的装置,其特征在于,还包括:
第二比较单元,用于将确定的所述数据报文的方向与预设方向进行比较,当两者一样时,通知所述读入单元进行操作。 
CN 201010142148 2010-04-07 2010-04-07 一种数据流内容过滤的方法及装置 Expired - Fee Related CN101902461B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010142148 CN101902461B (zh) 2010-04-07 2010-04-07 一种数据流内容过滤的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010142148 CN101902461B (zh) 2010-04-07 2010-04-07 一种数据流内容过滤的方法及装置

Publications (2)

Publication Number Publication Date
CN101902461A CN101902461A (zh) 2010-12-01
CN101902461B true CN101902461B (zh) 2013-01-30

Family

ID=43227663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010142148 Expired - Fee Related CN101902461B (zh) 2010-04-07 2010-04-07 一种数据流内容过滤的方法及装置

Country Status (1)

Country Link
CN (1) CN101902461B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103236940A (zh) * 2013-03-29 2013-08-07 北京星网锐捷网络技术有限公司 内容处理方法和装置及网络设备
CN105871573A (zh) * 2015-01-20 2016-08-17 国家计算机网络与信息安全管理中心 一种报文分析过滤方法及装置
US10091188B2 (en) * 2015-03-30 2018-10-02 Qualcomm Incorporated Accelerated passphrase verification
CN107689962B (zh) * 2017-09-25 2021-03-19 深圳市盛路物联通讯技术有限公司 一种数据流过滤方法及系统
CN108460280B (zh) * 2018-02-09 2022-02-01 北京交通大学 一种网络攻击字符匹配方法及装置
CN108900499B (zh) * 2018-06-26 2021-05-25 网易(杭州)网络有限公司 信息处理方法及装置、存储介质、电子装置
CN110557302B (zh) * 2019-08-30 2022-05-20 西南交通大学 网络设备报文观测数据采集方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1720112A2 (en) * 2005-05-03 2006-11-08 DrayTek Corp. Stateful stack inspection for an anit-virus and anti-intrusion firewall system
CN101026510A (zh) * 2007-01-31 2007-08-29 华为技术有限公司 一种网络流量异常检测方法和系统
CN101420440A (zh) * 2008-12-05 2009-04-29 华为技术有限公司 字符串匹配处理方法及装置
CN101631026A (zh) * 2008-07-18 2010-01-20 北京启明星辰信息技术股份有限公司 一种防御拒绝服务攻击的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1720112A2 (en) * 2005-05-03 2006-11-08 DrayTek Corp. Stateful stack inspection for an anit-virus and anti-intrusion firewall system
CN101026510A (zh) * 2007-01-31 2007-08-29 华为技术有限公司 一种网络流量异常检测方法和系统
CN101631026A (zh) * 2008-07-18 2010-01-20 北京启明星辰信息技术股份有限公司 一种防御拒绝服务攻击的方法及装置
CN101420440A (zh) * 2008-12-05 2009-04-29 华为技术有限公司 字符串匹配处理方法及装置

Also Published As

Publication number Publication date
CN101902461A (zh) 2010-12-01

Similar Documents

Publication Publication Date Title
CN101902461B (zh) 一种数据流内容过滤的方法及装置
CN108494746B (zh) 一种网络端口流量异常检测方法及系统
US9848004B2 (en) Methods and systems for internet protocol (IP) packet header collection and storage
EP3117556B1 (en) A system and method for detecting intrusions through real-time processing of traffic with extensive historical perspective
US8726382B2 (en) Methods and systems for automated detection and tracking of network attacks
US7903566B2 (en) Methods and systems for anomaly detection using internet protocol (IP) traffic conversation data
US9185125B2 (en) Systems and methods for detecting and mitigating threats to a structured data storage system
Li et al. Large-scale IP traceback in high-speed Internet: Practical techniques and theoretical foundation
Strayer et al. Botnet detection based on network behavior
TWI729320B (zh) 可疑封包偵測裝置及其可疑封包偵測方法
US7995496B2 (en) Methods and systems for internet protocol (IP) traffic conversation detection and storage
US20050278779A1 (en) System and method for identifying the source of a denial-of-service attack
Sung et al. Large-scale IP traceback in high-speed internet: practical techniques and information-theoretic foundation
US8762515B2 (en) Methods and systems for collection, tracking, and display of near real time multicast data
CN112039904A (zh) 一种网络流量分析与文件提取系统及方法
CN101009607A (zh) 用于检测并防止网络环境中的洪流攻击的系统和方法
CN101370008A (zh) Sql注入web攻击的实时入侵检测系统
Jeong et al. An IP Traceback Protocol using a Compressed Hash Table, a Sinkhole router and data mining based on network forensics against network attacks
US20170149814A1 (en) Real-Time Detection of Abnormal Network Connections in Streaming Data
CN106506531A (zh) Arp攻击报文的防御方法及装置
JP6548823B2 (ja) 木グラフプロパティを適用するjsonデータのリアルタイムバリデーション
Yang et al. Modelling Network Traffic and Exploiting Encrypted Packets to Detect Stepping-stone Intrusions.
CN111131309A (zh) 分布式拒绝服务检测方法、装置及模型创建方法、装置
CN104660584B (zh) 基于网络会话的木马病毒分析技术
Krundyshev Preparing datasets for training in a neural network system of intrusion detection in industrial systems

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
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: 20130130

Termination date: 20200407