首页> 中国专利> 基于模板的异构日志信息自动提取与分析方法

基于模板的异构日志信息自动提取与分析方法

摘要

一种信息技术领域的基于模板的异构日志信息自动提取与分析方法,根据每类日志文件的结构特点采用XML语言定义日志分析模板,基于模板的日志分析系统进入日志信息的自动提取过程,将提取出的日志信息与对应的安全规则进行匹配,从而判断提取出的日志信息中是否反应了目标设备或系统的异常运行使用情况,每次日志分析操作完成之后,系统将记录下此次分析的日志内容的偏移字节值作为日志分析状态信息保存下来,系统将定时检测各个目标设备或系统记录的日志文件的变化情况,根据记录的日志状态信息即实现对日志增量部分的自动分析。本发明有效地解决了对日志信息的自动分析的需求,不仅提高了对日志信息的利用率,同时也减轻了系统管理员的工作负担。

著录项

  • 公开/公告号CN1645336A

    专利类型发明专利

  • 公开/公告日2005-07-27

    原文格式PDF

  • 申请/专利号CN200510023447.1

  • 发明设计人 张世永;廖健;吴承荣;杨暄;

    申请日2005-01-20

  • 分类号G06F11/14;G06F17/27;G06F17/30;

  • 代理机构31201 上海交达专利事务所;

  • 代理人王锡麟;王桂忠

  • 地址 200433 上海市杨浦区国泰路127号3号楼

  • 入库时间 2023-12-17 16:21:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-03-12

    未缴年费专利权终止 IPC(主分类):G06F11/14 授权公告日:20071226 终止日期:20130120 申请日:20050120

    专利权的终止

  • 2007-12-26

    授权

    授权

  • 2005-09-21

    实质审查的生效

    实质审查的生效

  • 2005-07-27

    公开

    公开

说明书

技术领域

本发明涉及一种日志信息的自动提取与分析方法,特别是一种基于模板的异构日志信息自动提取与分析方法,属于信息技术领域。

背景技术

目前各种主机、服务器、网络设备、安全设备、操作系统和应用系统都具备日志记录功能,记录下设备和系统自身的运行状态和使用情况。对各类日志信息进行采集、统一管理和分析,是建立一个全网审计与监控系统的普遍做法。尽管日志文件中包含着大量有价值的信息,但是这些信息只有在经过深入挖掘之后才能够发挥作用。从目前实施的情况来看,大多数系统侧重于对日志信息的收集,日志的分析能力相对较弱,通常是在发生严重安全事件的情况下采取人工观察的方式搜索日志记录,从中获取感兴趣的信息。而对于拥有大量用户、运行非常繁忙的设备或系统来说,日志记录通常极其庞大,用户所关注的信息往往是被淹没在大量的无用信息当中,采用人工方式进行日志分析的话不仅工作量异常繁重,而且由于不同设备或系统的日志格式各有不同,对于大多数系统管理员来说一般只会对少数系统比较熟悉,并非都能够通晓所有类型的日志记录,所以采用人工方式进行日志分析,工作量和工作难度都非常大,其结果是一般对系统的日常维护与管理不会起到太大的作用。

现在已经有一些专门用于分析日志的工具,但是这些日志分析工具通常只是针对某种特定类型的系统或设备的日志设计,而一般的用户系统大都包含多种类型的系统和设备,采用这些针对特定日志类型的分析工具的话,由于各个日志分析工具彼此的表现形式各有不同,彼此之间无法进行交互,使得各个工具的日志分析结果很难共享,通用性和扩展性都较差,不利于对整个系统的日志进行统计管理与关联分析。

经对现有公开技术文献的检索发现,最近发展很快的一种基于Perl的WEB日志分析工具——“AWStats日志分析器”是由法国的一名计算机工程师LaurentDestailleur个人开发的免费开源软件,最新版本是在2004年12月份发布的6.2版。AWStats支持的日志文件包括IIS日志、Apache日志以及其它Web、Proxy、Wap或者流服务器的日志文件,它能够分析出Web服务器、FTP服务器和Mail服务器的日志中包括的所有可能的信息,如用户访问数、访问时间、访问主机列表、访问IP地址列表、浏览器使用情况、病毒攻击情况等等,并将日志分析结果以统计图表的形式展示给用户。虽然AWStats在Web日志的分析上具有一定的特色,但是在处理机制上仍然存在很大的缺陷:AWStats根据每种日志文件的特点,将每种日志文件的分析功能固化在了该工具中,因此该工具仅仅能实现几种特定的Web日志文件的自动分析,对于除此之外的其它种类的日志文件,只能通过改变原有程序才能实现功能上的扩展,这种机制使得AWStats根本无法满足多种类型的系统、服务器或安全设备的日志分析功能,致使其在应用范围上具有很大的局限性。

发明内容

本发明的目的在于克服现有日志自动分析技术中的不足,提出一种基于模板的异构日志信息自动提取与分析方法,使其针对不同类型的日志,可以在不修改日志分析程序的情况下只需定义相应的日志分析模板即可支持各种主流的日志格式,从而实现对多种异构日志信息的自动提取和分析,有效的提高对系统中各种主流操作系统、应用平台、数据库平台、应用系统、各类网络和安全设备(如入侵检测系统等)产生的日志信息的挖掘和利用能力,为大型系统中的日志分析与安全审计监控管理工作提供了强有力技术支持。

本发明是通过以下技术方案实现的:根据每类日志文件的结构特点采用XML语言定义相应的日志分析模板,在日志分析模板中为日志文件中包含的每种记录类型均定义了特征标识信息,并且还为每种记录中所包含的各个数据项也分别定义了特征标识信息,如数据项的分隔标识、需匹配的先导字符串搜索范围、数据类型等,根据这些标识信息,基于模板的日志分析系统即可进入日志信息的自动提取过程,从日志文件中自动提取出这些数据项的值。然后进行日志信息的分析,将提取出的日志信息与对应的安全规则进行匹配,从而判断提取出的日志信息中是否反应了目标设备或系统的异常运行使用情况。每次日志分析操作完成之后,系统将记录下此次分析的日志内容的偏移字节值作为日志分析状态信息保存下来。系统将定时检测各个目标设备或系统记录的日志文件的变化情况,根据记录的日志状态信息即可实现对日志增量部分的自动分析。

下面对本发明的方法作进一步描述:

一、定义日志分析模板

在本发明中设计了两大类的日志分析模板,分别是文本型日志分析模板和二进制日志分析模板,均采用XML(EXtensible Markup Language,扩展标记语言)描述。

1、定义文本类型日志分析模板

文本类型日志分析模板的定义如下:

<?xml version=″1.0″encoding=″iso-8859-1″?>

<文本日志模板

Template_Id=″″

Record_Type_Num=″″

Max_Record_Len=″″

Record_Interval_Start=″″

Record_Interval_End=″″>

<记录类型

Record_Type_Name=″″

Record_Type_Search_Start_Offset=″″

Record_Type_Search_Len=″″

Record_Type_Match_Str=″″>

  <数据项

      Item_Type=″″

      Item_Name=″″

      Item_Search_Start_Offset=″″

      Item_Match_Str=″″

      Cap_Offset=″″

      Cap_Len=″″

    Value=″″

    Option=″″/>

  <数据项……/>

     ……

  <数据项……/>

</记录类型>

     ……

<记录类型……>

  <数据项……/>

     ……

  <数据项……/>

</记录类型>

</文本日志模板>

下面对上述文本型日志分析模板的含义解释如下:

第1行为XML声明,定义了所采用的XML的版本号,encoding属性则指明了数据所采用的编码标准。

文本日志模板中的根元素定义为“文本日志模板”(见第2行),根元素下定义的属性的含义如下:

    属性名称                 含义Template_Id该日志分析模板的标识号,用于区分不同的模板文件Record_Type_Num模板中包括的记录类型数Max_Record_Len记录的最大长度,单位为字节(byte)Record_Interval_Start记录分隔的起始标识Record_Interval_End记录分隔的结束标识

“文本日志模板”根元素下包括一个或多个“记录类型”子元素,在“记录类型”子元素下定义了多个属性,对应的含义如下:

    属性名称    含义
Type_Name记录类型名称Type_Search_Start_Offset搜索该记录类型标识字串的起始位置。该属性有以下几种取值选项,其中str:n表示从记录开始的第n个字节串的位置开始搜索;byte:m表示记录开始的第m个字节的位置开始搜索;str:n+byte:m表示记录开始的第n个字符串的第m个字节开始搜索Type_Search_Len该记录类型标识字串的搜索字节长度,单位为字节(byte)Type_Match_Str该记录类型的匹配字符串

在每个“记录类型”子元素下又包括一个或多个“数据项”子元素,在“数据项”子元素下定义了多个属性,对应的含义如下:

    属性名称    含义Item_Type数据项的数据类型,包括int:代表整型;short:代表短整型;long:代表长整型;str:代表字符型;stdtime:代表标准时间;IP:代表ip地址;CONST STR:代表字符型常量等Item_Name数据项的名称Item_Search_Start_Offset该数据项在所属记录类型中的起始位置,从该位置开始搜索该数据项的先导匹配字符串。该属性的取值为str:n,表示所属记录类型开始的第n个字符串的位置Item_Match_Str该数据项的先导匹配字符串Cap_Offset在先导匹配字符串后提取数据项内容的位移Cap_Len在先导匹配字符串后提取内容的长度。该属性有以下几种取值选项,其中byte:n表示提取n个字节的内容;single_str表示提取一个字符串的全部内容;single_str:m表示提取一个字符串中头m个字节的内容;multi_str:n:m表示提取最大n个字符串m个字节的内容;to_str:xxx表示从Cap_Offset起一直提取到
xxx字符串为止;to_end表示从Cap_Offset起一直提取到该记录的结束位置    Value提取出的数据项内容经运算处理后的最终结果,采用表达式来表示,也可调用内部函数。例如对于不需要处理的被捕获的原始日志内容,在本发明中采用$cap表示。    Option对该数据项的处理。该属性有以下几种取值选项,其中record表示从日志中提取并记录下该数据项的内容;ignore表示忽略该数据项的内容;temp表示暂时记录下该数据项的内容用于后续的处理(如在处理其他数据项时用于运算value值),在后续处理完成后即可删除此时所记录下的内容;缺省取值为record

2、定义二进制类型日志分析模板

二进制类型日志分析模板的定义如下:

<?xml version=″1.0″encoding=″iso-8859-1″?>

<二进制日志模板

  Template_Id=″″

  Record_type_num=″″

  Record_Interval_Method=″″>

<固定长度配置Record_Fixed_Len=″″/>

<分隔标志配置Record_Interval_Flag=″″/>

<获取长度配置Offset=″″Len=″″/>

<记录类型

  Type_Name=″″

  Type_Flag_Offset=″″

  Type_Flag_Len=″″

Type_Match_Value=″″>

<数据项

    Item_Type=″″

    Item_Name=″″

    Cap_Offset=″″

    Cap_Len=″″

    Value=″″

    Option=″″/>

  ……

  <数据项……/>

</记录类型>

  ……

<记录类型……>

  <数据项……/>

    ……

  <数据项……/>

</记录类型>

</二进制日志模板>

下面对上述二进制日志分析模板的含义解释如下:

第1行为XML声明,定义了所采用的XML的版本号,encoding属性则指明了数据所采用的编码标准。

二进制日志模板中的根元素定义为“二进制日志模板”(见第2行),根元素下定义的属性的含义如下:

    属性名称    含义Template_Id该日志分析模板的标识号,用于区分不同的模板文件Record_type_num该模板中包括的记录类型数Record_Interval_Method各种记录类型之间的间隔方法。该属性有以下几种取
值选项,其中fixed_len表示以固定长度作为间隔方法;interval_Flag表示以分隔标志作为间隔方法;get_len表示从本记录中获取“记录长度”字段,得到本记录的长度,以确定下一个记录的起始位置。

如果根元素“二进制日志模板”下属性Record_Interval_Method的取值为fixed_len,则在该根元素下定义“固定长度配置”子元素,该子元素包括一个属性Record_Fixed_Len,其含义是固定记录的长度值,单位为字节(byte);

如果属性Record_Interval_Method的取值为interval_flag,则在该根元素下定义“分隔标志配置”子元素,该子元素包括一个属性Record_Interval_Flag,其含义是记录间隔标志;

如果属性Record_Interval_Method的取值为gen_len,则在该根元素下定义“获取长度配置”子元素,该子元素包括Offset和Len两个属性,其含义分别是获取本记录中的“记录长度”字段的偏移位置和字段长度。

另外在“二进制日志模板”根元素下还包括一个或多个“记录类型”子元素,

在“记录类型”子元素下定义了多个属性,对应的含义如下:

    属性名称    含义  Type_Name记录类型名称  Type_Flag_Offset记录类型标志的偏移量  Type_Flag_Len记录类型标志的长度  Type_Match_Value记录类型的匹配值

在每个“记录类型”子元素下又包括一个或多个“数据项”子元素,在“数据项”子元素下定义了多个属性,对应的含义如下:

    属性名称    含义  Item_Type数据项的数据类型,包括int:代表整型;short:代表短整型;long:代表长整型;str:代表字符型;stdtime:代表标准时间;IP:代表ip地址;CONST STR:代表字符型常量等  Item_Name数据项的名称  Cap_Offset该数据项在所属记录类型中的位移
    Cap_Len该数据项内容的长度。该属性有以下几种取值选项,其中byte:n表示提取n个字节的内容;single_str表示提取一个字符串的全部内容;single_str:m表示提取一个字符串中头m个字节的内容;multi_str:n:m表示提取n个字符串m个字节的内容;to_str:xxx表示从Cap_Offset起一直提取到xxx字符串为止;to_end表示从Cap_Offset起一直提取到该记录类型的结束位置    Value提取出的数据项内容经运算处理后的最终结果,采用表达式来表示,也可调用内部函数。例如对于不需要处理的被捕获的原始日志内容,在本发明中采用$cap表示。    Option对该数据项的处理。该属性有以下几种取值选项,其中record表示从日志中提取并记录下该数据项的内容;ignore表示忽略该数据项的内容;temp表示暂时记录下该数据项的内容用于后续的处理(如在处理其它数据项时,用于运算value值),在后续处理完成后即可删除此时所记录下的内容;缺省取值为record

二、日志信息的自动提取

日志分析模板定义完成之后,进入日志信息的自动提取过程,具体操作流程如下:

(1)定时检测被监控目标设备或系统产生的日志文件的变化情况,根据“日志状态信息”变量的值来获取增量日志内容。

由于日志是采用不断累加的方式记录数据的,根据这一特点,在本发明中为每个目标日志定义一个“日志状态信息”变量,用于记录每次每个日志文件完成信息提取和分析的字节偏移量。一旦发现到日志文件大小发生了变化,即可根据该日志文件所对应的日志状态信息提取出该偏移量之后的增量的日志内容作为进一步的信息提取与分析处理的原始数据。

(2)读取该日志对应的日志分析模板。

(3)根据模板中定义的记录分隔标识从日志文件中获取一条记录内容。

文本日志模板中的记录分隔标识为根元素“文本日志模板”中的Record_Interval_Start属性和Record_Interval_End属性。二进制日志模板中的记录分隔标识包括根元素“二进制日志模板”中的Record_Interval_Method属性、以及子元素固定长度配置、分隔标志配置、获取长度配置中定义的属性。

(4)根据模板中“记录类型”子元素下定义的记录特征标识判断该记录的类型。

文本日志模板中的记录特征标识为“记录类型”子元素下定义的Record_Type_Search_Start_Offset属性、Record_Type_Search_Len属性、Record_Type_Match_Str属性。系统将从该记录的Record_Type_Search_Start_Offset开始,对长度为Record_Type_Search_Len的字符串进行搜索,匹配Record_Type_Match_Str定义的字符串来判断记录类型。

二进制日志模板中的记录特征标识为“记录类型”子元素下定义的Type_Flag_Offset属性、Type_Flag_Len属性、Type_Match_Value属性。系统将从该记录的Type_Flag_Offset位置开始,提取长度为Type_Flag_Len的字段内容,与Type_Match_Value进行匹配,判断记录类型。

对于未匹配成功的情况,则系统将此记录判断为不需要进行处理(在日志模板中未定义此记录类型),系统将会丢弃该记录,转(3)。否则转(5)。

(5)根据模板中“记录类型”下各个“数据项”子元素的定义,在该记录中搜索获取对应的数据项内容,按照Value属性的取值对获取到数据项内容进行运算处理,然后按照Option属性的取值对获取到的数据项执行记录、忽略或临时记录等相应的处理,从不同日志文件中提取和记录下的日志信息分别保存在不同的记录文件中。

(6)判断该记录中的所有数据项是否处理完毕,如果判断结果为“否”,则重复第(5)步的处理转(5);如果判断结果为“是”,转(7)。

(7)判断该日志文件中的所有增量记录是否处理完毕,如果日志文件中仍然包含没有处理过的增量记录,则转到(3),如果日志文件中的所有增量记录全部处理完毕,则进入日志信息的分析流程。

三、日志信息的分析

(1)、定义日志分析的安全规则。

日志分析的安全规则的定义由以下几个字段组成:

规则号:用数字来区分不同的规则,是每个规则的唯一标识

优先级:用数字的大小来区分每条规则的高低优先级,数值越大优先级越高

记录类型名:表示该规则适用于哪种记录类型,该字段缺省,表示该规则适用于所有记录类型

匹配数据项名称:表示此项规则所要匹配的数据项名称

匹配值:表示此项规则所要匹配的数据项的取值

响应方式:定义对符合此项规则的响应方式

(2)获取需要分析的日志记录文件以及对应的安全规则文件。

(3)将记录文件中的信息逐条进行安全规则匹配,根据规则匹配结果判断出产生该日志的设备或系统是否存在异常情况,如果发现异常,立即生成报警记录。

(4)判断该日志记录文件是否处理完毕,如果判断结果为“否”,则重复第

(3)步的处理;如果判断结果为“是”,则判断是否还有其它日志记录文件需要进行安全分析,当所有日志记录文件全部处理完毕,则整个基于模板的异构日志信息自动提取与分析过程结束。

本发明具有实质性特点和显著进步:1)本发明提出的技术方案扩展性极强,对于不同种类的异构日志文件不用改变日志分析程序,只要为该日志定义一个新的日志分析模板即可以实现对该日志的分析与信息自动提取,因此其适用范围更为广泛;2)本发明采用XML语言定义日志分析模板,由于XML是能够自解释的语言,用户可以根据不同日志的特点自定义所需要的元素/标志,使得该模板的可读性和灵活性更强;3)本发明提出的技术方案能够将从不同类型日志文件中提取出的信息形成统一的规范化的格式,更加便于系统管理员的理解与迅速决策,非常适合大型的网络信息系统的使用。

本发明提出的技术方案能够在不改变日志分析处理程序的前提下,实现对多种类型异构的日志文件的信息自动提取与安全性分析,从而在现有日志分析工具之上提高了适用范围和应用的灵活性,有效的解决了大型网络信息系统对多种设备和系统产生的日志信息的自动分析的需求,不仅提高了对日志信息的利用率,同时也减轻了系统管理员的工作负担。

附图说明

图1日志信息的自动提取流程

图2日志信息的分析过程

具体实施方式

下面以天网防火墙日志文件和Solaris系统日志文件wtmp的为例,说明本发明提出的技术方案的具体实现方法。

实施例一:天网防火墙日志文件的信息自动提取与分析过程。

天网防火墙日志文件为文本类型,待分析日志如下所示:

[1:59:58]192.168.0.107的1294端口停止对本机发送数据,

TCP标志:FA

继续下一规则

[1:59:58]本机应答192.168.0.107的1294端口,

TCP标志:A

继续下一规则

[1:59:58]本机的Http[80]端口停止向192.168.0.107发送数据,

TCP标志:FA

继续下一规则

天网防火墙日志文件的信息自动提取与分析过程如下:

(一)定义日志分析模板

从上述信息可以看出,该日志文件包括三种记录类型,从第1行至第3行是远程主机端口停止对本机发送数据的记录,第4行至第6行是本机应答远程主机端口的记录;第7行至第9行是本机的端口停止向远程主机发送数据的记录。在每条记录中包括了事件发生的时间、事件类型标识、远程主机IP地址、远程主机端口号/本机端口号、TCP标志等数据项。根据该日志文件的结构特点,定义的文本日志分析模板如下所示:

<?xml version=″1.0″encoding=″iso-8859-1″?>

<文本日志模板

Template_Id=″21″

Record_Type_Num=″3″

Max_Record_Len=″300″

Record_Interval_Start=″[″

Record_Interval_End=″继续下一规则″>

<记录类型

Record_Type_Name=″停止对本机发送数据″

Record_Type_Search_Start_Offset=″str:5+byte:4″

Record_Type_Search_Len=″18″

Record_Type_Match_Str=″停止对本机发送数据″

Option=″record″>

  <数据项

    Item_Type=″stdtime″

    Item_Name=″event_time″

    Item_Search_Start_Offset=″str:1″

    Item_Match_Str=″[″

    Cap_Offset=″″

    Cap_Len=″to_str:]″

    Value=″zone_time_to_stdtime($cap)″

    Option=″record″/>

  <数据项

    Item_Type=″IP″

    Item_Name=″remote_ip″

    Item_Search_Start_Offset=″str:2″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″single_str″

    Value=″$cap″

    Option=″record″/>

<数据项

   Item_Type=″int″

   Item_Name=″remote_port″

    Item_Search_Start_Offset=″str:4″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″single_str″″

    Value=″$cap″

    Option=″record″/>

<数据项

    Item_Type=″str″

    Item_Name=″TCP_Flag″

    Item_Search_Start_Offset=″str:6″

    Item_Match_Str=″TCP标志:″

    Cap_Offset=″″

    Cap_Len=″tostr:继续″

    Value=″$cap″

    Option=″record″/>

<数据项

    Item_Type=″CONST STR″

    Item_Name=″event_name″

    Item_Search_Start_Offset=″″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″″

    Value=″远程主机停止对本机发送数据″

    Option=″record″/>

</记录类型>

<记录类型

Record_Type_Name=″本机应答其他机器″

Record_Type_Search_Start_Offset=″str:2″

Record_Type_Search_Len=″8″

Record_Type_Match_Str=″本机应答″

Option=″record″>

  <数据项

    Item_Type=″stdtime″

    Item_Name=″event_time″

    Item_Search_Start_Offset=″str:1″

    Item_Match_Str=″[″

    Cap_Offset=″″

    Cap_Len=″to_str:]″

    Value=″zone_time_to_stdtime($cap)″

    Option=″record″/>

  <数据项

    Item_Type=″IP″

    Item_Name=″remote_ip″

    Item_Search_Start_Offset=″str:3″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″single_str″

    Value=″$cap″

    Option=″record″/>

<数据项

    Item_Type=″int″

    Item_Name=″remote_port″

    Item_Search_Start_Offset=″str:4″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″single_str″

    Value=″$cap″

    Option=″record″/>

<数据项

    Item_Type=″str″

    Item_Name=″TCP_Flag″

    Item_Search_Start_Offset=″str:8″

    Item_Match_Str=″TCP标志:″

    Cap_Offset=″″

    Cap_Len=″tostr:继续″

    Value=″$cap″

    Option=″record″/>

<数据项

    Item_Type=″CONST STR″

    Item_Name=″event_name″

    Item_Search_Start_Offset=″″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″″

    Value=″本机应答其他机器″

    Option=″record″/>

</记录类型>

<记录类型>

Record_Type_Name=″本机端口停止向远程主机发送数据″

Record_Type_Seatch_Start_Offset=″str:4″

Record_Type_Search_Len=″10″

Record_Type_Match_Str=″端口停止向″

Option=″record″>

  <数据项

    Item_Type=″stdtime″

    Item_Name=″event_time″

    Item_Search_Start_Offset=″str:1″

    Item_Match_Str=″[″

    Cap_Offset=″″

    Cap_Len=″]″

    Value=″zone_time_to_stdtime($cap)″

    Option=″record″/>

  <数据项

    Item_Type=″str″

    Item_Name=″local_port″

    Item_Search_Start_Offset=″str:3″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″single_str″

    Value=″$cap″

    Option=″record″/>

  <数据项

    Item_Type=″IP″

    Item_Name=″remote_ip″

    Item_Search_Start_Offset=″str:5″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″single_str″

    Value=″$cap″

    Option=″record″/>

<数据项

    Item_Type=″str″

    Item_Name=″TCP_Flag″

    Item_Search_Start_Offset=″str:7″

    Item_Match_Str=″TCP标志:″    

    Cap_Offset=″″

    Cap_Len=″tostr:继续″

    Value=″$cap″

    Option=″record″/>

<数据项

    Item_Type=″CONST STR″

    Item_Name=″event_name″

    Item_Search_Start_Offset=″″

    Item_Match_Str=″″

    Cap_Offset=″″

    Cap_Len=″″

    Value=″本机端口停止向远程主机发送数据″

    Option=″record″/>

</记录类型>

</文本日志模板>

其中zone_time_to_stdtime()是自定义的内部函数,主要作用是将从日志中提取出的时间转换成标准时间。

(二)日志信息的自动提取

1、定时检测被监控目标设备或系统产生的日志文件的变化情况,根据“日志状态信息”变量的值来获取增量日志内容。

2、读取该日志对应的日志分析模板。

3、根据模板中定义的记录分隔标识从日志文件中获取一条记录内容。根元素<文本日志模板>中定义的属性Record_Interval_Start和Record_Interval_End标识出每种类型的记录起始标识为″[″,结束标识为″继续下一规则″。

4、根据模板中“记录类型”子元素下定义的记录特征标识判断该记录的类型。在“记录类型”子元素下定义的属性Record_Type_Search_Start_Offset标识出了每个记录特征标识的位置,属性Record_Type_Search_Len标识出每个记录特征标识的长度,属性Record_Type_Match_Str标识出每个记录特征标识的匹配字符串,根据这三个属性即可判断出该记录是哪种类型。

5、根据模板中“记录类型”下各个“数据项”子元素的定义,在该记录中搜索获取对应的数据项内容。其中属性Item_Search_Start_Offset标识出了该数据项的位置,属性Item_Match_Str标识出了该数据项的匹配字符串,Cap_Len标识出了该数据项的长度,根据这三个属性的取值即可提取出每个数据项的内容。按照Value属性的取值对获取到数据项内容进行运算处理,然后按照Option属性的取值对获取到的数据项执行记录、忽略或临时记录等相应的处理,保存在记录文件中。

6、判断该记录中的所有数据项是否处理完毕,如果判断结果为“否”,则重复第5步的处理;如果判断结果为“是”,再判断该日志文件中的所有增量记录是否处理完毕。

7、如果日志文件中仍然包含没有处理过的增量记录,则转到第3步,根据记录分隔标识获取下一条记录内容进行上述第3-6步的处理;如果日志文件中的所有增量记录全部处理完毕,则进入日志信息的分析流程。

(三)日志信息的分析

1、定义日志分析的安全规则。

规则号:1;优先级:2;记录类型名:天网防火墙日志/停止对本机发送数据&天网防火墙日志/本机应答其他机器&天网防火墙日志/本机端口停止向远程主机发送数据;匹配数据项名称:event_name;匹配值:本机端口停止向远程主机发送数据;匹配数据项名称:remote_ip;匹配值:10.10.19.53;响应方式:报警

此条规则表示当在日志文件中发现本机停止向IP地址为10.10.19.53的远程主机发送数据时,立即发出报警信息。

2、获取需要分析的日志记录文件以及对应的安全规则文件。

3、将记录文件中的信息逐条进行安全规则匹配,根据规则匹配结果判断本机是否正常向10.10.19.53发送数据,如果发现停止发送数据的记录,立即生成报警记录。

4、判断该日志记录文件是否处理完毕,如果判断结果为“否”,则重复第3步的处理;如果判断结果为“是”,则整个基于模板的异构日志信息自动提取与分析过程结束。

按照上述步骤的处理,当本机停止向IP地址为10.10.19.53的远程主机发送数据时,基于模板的日志分析系统会立即发出报警信息。

实施例二:wtmp日志文件的信息自动提取与分析过程如下:

(一)定义日志分析模板

Solaris系统日志wtmp文件是用户每次登录系统和退出系统的记录信息,该文件为二进制文件,其中比较重要的数据项在wtmp文件中的格式如下:

  字段名  位置(byte)字段长度(byte)  用户名    0-31    32  记录的初始ID    32-35    4  设备名称    36-67    32  进程ID    68-71    4  记录类型    72-73    2
  进程中止状态    74-75    2  进程退出状态    76-77    2  记录生成时间    78-85    8

根据该日志文件的结构特点,定义的二进制日志分析模板如下所示:

<?xml version=″1.0″encoding=″iso-8859-1″?>

<二进制日志模板

  Template_Id=″15″

  Record_type_num=″1″

  Record_Interval_Method=″fixed_len″>

  <固定长度配置Record_Fixed_Len=″372″/>

<记录类型

  Type_Name=″wtmp_log″

  Type_Flag_Offset=″″

  Type_Flag_Len=″″

  Type_Match_Value=″″>

  <!--定义“登录/退出系统的用户名”数据项-->

  <数据项

    Item_Type=″str″

    Item_Name=″User_Name″

    Cap_Offset=″byte:0″

    Cap_Len=″byte:32″

    Value=″$cap″

    Option=″record″/>

  <!--定义“记录的初始ID”数据项-->

<数据项

  Item_Type=″str″

  Item_Name=″Entry_Id″

  Cap_Offset=″byte:32″

  Cap_Len=″byte:4″

  Value=″$cap″

  Option=″record″/>

<!--定义“设备名称”数据项-->

<数据项

  Item_Type=″str″

  Item_Name=″Device_Name″

  Cap_Offset=″byte:36″

  Cap_Len=″byte:32″

  Value=″$cap″

  Option=″record″/>

<!--定义“进程ID”数据项-->

<数据项

  Item_Type=″long″

  Item_Name=″Process_Id″

  Cap_Offset=″byte:68″

  Cap_Len=″byte:4″

  Value=″convert_to_int($cap)″

  Option=″record″/>

<!--定义“记录类型”数据项-->

<数据项

  Item_Type=″short″

  Item_Name=″Entry_Type″

  Cap_Offset=″byte:72″

  Cap_Len=″byte:2″

  Value=″convert_to_short($cap)″

  Option=″record″/>

<!--定义“进程中止状态”数据项-->

<数据项

  Item_Type=″short″

  Item_Name=″Process_Termination_Status″

  Cap_Offset=″byte:74″

  Cap_Len=″byte:2″

  Value=″convert_to_short($cap)″

  Option=″record″/>

<!--定义“进程退出状态”数据项-->

<数据项

  Item_Type=″short″

  Item_Name=″Process_Exit_Status″

  Cap_Offset=″byte:76″

  Cap_Len=″byte:2″

  Value=″convert_to_short($cap)″

  Option=″record″/>

<!--定义“记录生成时间”数据项-->

<数据项

  Item_Type=″long″

  Item_Name=″Entry_Time″

  Cap_Offset=″byte:78″

  Cap_Len=″byte:8″

  Value=″convert_to_int($cap)″

    Option=″temp″/>

  </记录类型>

</二进制日志模板>

其中convert_to_int()和convert_to_short()是自定义的内部函数,主要作用是将从日志中提取出的内容的数据类型转换成长整型或短整型数据类型。

(二)日志信息的自动提取

1、定时检测被监控目标设备或系统产生的日志文件的变化情况,根据“日志状态信息”变量的值来获取增量日志内容。

2、读取该日志对应的日志分析模板。

3、wtmp文件只有一种记录类型,根据模板中“记录类型”下各个“数据项”子元素中定义的Cap_Offset属性的值来确定数据项在日志文件中所在的位置,再根据Cap_Len属性的值提取出每个数据项的内容,并按照Value属性的取值对获取到数据项内容进行数据类型转换处理,然后按照Option属性的取值对获取到的数据项执行记录或临时记录等相应的处理,保存到记录文件中。

4、判断该日志文件中的增量记录是否处理完毕,如果日志文件中仍然包含没有处理过的增量记录,则转到第3步处理;如果日志文件中的所有增量记录全部处理完毕,则进入日志信息的分析流程。

(三)日志信息的分析

1、定义日志分析的安全规则。

规则号:11;优先级:2;记录类型名:Solaris系统日志/wtmp;匹配数据项名称:User_Name;匹配值:xa_li;;响应方式:报警

此条规则表示当在Solaris系统的wtmp日志文件中发现用户xa_li登录系统的记录时发出报警信息。

2、获取需要分析的日志记录文件以及对应的安全规则文件。

3、将记录文件中的信息逐条进行安全规则匹配,根据规则匹配结果判断用户xa_li是否登录过系统,如果发现xa_li的登录记录,立即生成报警记录。

4、判断该日志记录文件是否处理完毕,如果判断结果为“否”,则重复第3步的处理;如果判断结果为“是”,则整个基于模板的异构日志信息自动提取与分析过程结束。

按照上述步骤的处理,当用户xa_li登录被监控系统时,基于模板的日志分析系统会立即发出报警信息。

通过以上的实施例1、2可以看出,本发明有效的解决了大型网络信息系统对多种设备和系统产生的日志信息的自动分析的需求,不仅提高了对日志信息的利用率,同时也减轻了系统管理员的工作负担。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号