基于事件流的网络安全事件监控系统ESPER

基于事件流的网络安全时间监控系统


 

学术技术 更新时间: 2010-2-22 16:04:00   来源:   作者: 沈建宇,李建华,张月国

 

本文关键词:

共阅: [ <script src="clickcount.php?id=20100222294"></script> 869

 

 

0      引言
       
当前网络安全问题仍然严峻,保护网络安全设备的告警事件成为网络安全工作中的检测、分析和响应的重要依据。然而在现实应用中,事件的分析工作却面临诸多挑战,报警数据巨大、误报严重与重复报警频繁等。文中提出了基于 Esper 事件流处理框架的网络安全监控系统。通过整合测试,该框架可有效支持网络安全监管系统对大规模安全事件处理的实时性、准确性和灵活性要求,在实际系统应用中也有很大的应用价值。
        1 规则引擎处理事件流
        1.1
规则引擎与数据流
       
文中的规则引擎由数据查询引擎和自定义事件处理规则组成,查询引擎采用 Esper 框架,规则是根据系统对安全事件的处理要求设计的 EQL 结构化查询语句, EQL Esper 提出的事件流查询语言。
        
数据流 [3 4] 是一种新型数据模式,与传统数据库模型不同,它是一种大量、连续、快速、随时间变化的数据流,如金融数据,文献 [5] 中提出了一种处理连续数据流的策略模型-持续查询,数据不断追加驱动查询的持续执行。由于流的不断追加性,不能一次将所有数据读入内存处理,对于阻塞操作符的执行,需实现非阻塞化,如滑动时间窗 [6]
        1.2 Esper
框架
        Esper
是一个事件流处理和复杂事件处理框架。它可以监测事件流并当特定事件发生时触发某些行动,可看作是反操作数据库,查询语句即规则可固定,并在引擎中预先注册,由数据流驱动引擎中规则的生效。所以它可理解为一种基于规则的事件处理引擎。
        1.3
事件流
        
文中设计的系统首先需要将网络安全数据抽象为安全事件。事件流由数据流抽象而成,在接收数据流后加以处理,封装成不同事件类型,然后再针对不同事件类型的事件流由系统进行分别处理。 Esper 支持多种方式定义事件类型,如 POJO XML 、哈希表等。
       
安全方面的很多应用都表现为典型的事件流处理,以前对事件的关联处理 [7] 、分析统计大都采取基于数据库策略的事后处理或基于内存的准实时处理技术。前者对数据库会造成很大压力;后者需要占用大量内存存储安全事件,频繁操作数据将大幅增加系统负担。文中采取推的查询方式执行,即由事件的追加推动相应查询语句的执行,并且以流的形式增量式产生查询结果,查询结果触发与规则关联的监听器,进行事件再处理,获得告警信息。这种事件流处理能提高处理效率,并真正实现实时事件处理分析。
        2
系统设计思想
       
该系统作为网络安全监管系统的事件处理子系统,主要分采集代理和事件处理中心两大模块。一个处理中心管理多个采集代理,并按 ID 标识接收各代理发送的安全事件。
       
采集代理接收多种网络安全设备发送的告警,对其进行解析后组装成统一格式的事件。文中自定义了一种简单安全事件格式,用于事件统一封装。
       
事件处理中心从不同采集代理处接收事件流,进行处理统计并提供查询。实时处理是该系统的核心,它承载着对原始事件的实时归并、实时统计分析以及自动告警。实时事件处理中,各个环节都定义了处理规则,不同规则间相互联系,依次触发,通过这些规则的设定,配合 Esper 引擎共同处理海量安全事件,真正实现事件监控中对实时性和可读性的要求。具体处理流程如图 1 所示。
        3
系统结构
       
系统的结构框如图 2 所示。
        (1)
采集代理模块
       
采集接收网络中安全设备发送的原始告警 ( 例如 IDS ,防火墙等 ) ,并对不同格式的告警分别解析。解析后的各类事件通过归一化模块封装成一种统一格式的事件类型。
        (2)
事件中心模块
       
该模块由 3 个子模块组成,分别是事件处理、前台和数据库。下面仅对事件处理进行说明,该子模块包括规则引擎实时查询处理、历史事件统计分析和告警,现分别阐述:
       
则引擎实时查询处理:统计处理从采集代理发送来的各类归一化事件。
        (1)
事件归并。 EQL 语句如下: select * count(*) as countPerType from NormalizedEvent.win time_batch(10 sec) group by column 。其中 countPerType 是各类型事件总数, win time_batch(10 sec) EQL 的视图操作符,定义了 10 s 的时间窗分批处理; column 用于分组的字段名称,可设定多个。
        (2)
告警阈值查询。归并事件会自动触发本条查询规则的执行,判断哪些告警威胁等级超过阈值,超过的写入告警事件监听器,监听器将告警事件发送给告警模块。
        (3)
实时事件统计分析。由 (1) 处理后的归并事件被发送到规则引擎后将触发统计分析规则的执行。该规则定义如下: “select (a.countPerType + b.countPerType) from pattern [every a=EventDestip->b=EventSrcip(a.faci_ip=b.faci_ip) where timer within(10 sec)]” “every a=EventDestIp->b=EventSrcIp(a.faci_ip = b.faci_ip)” 指示每一个类型 a 事件和所有类型 b 事件匹配,判定是否满足括号内条件。
       
查询的结果会触发归并事件监听器,进行对事件信息的统计计算,统计指标包括:事件日总量、最大最小值、设备威胁等级、事件冗余度、设备可用度等。其中设备可用度的计算算法是为了适应该系统要求而设计出来的,如公式 (1) 所示:
         (1)
是一定时间段内的事件数量; RL 是设备威胁等级;是事件量的增幅 ( 可以为负 ) Re 代表事件冗余度; α β σ Δ 为经验参数值, C 是常数。计算后可得到较全面展现被监控设备的可用度。该监听器处理后的数据将封装进监控事件中并于前台显示。
        
历史事件统计分析模块是从数据库获取事件进行处理统计分析,有 3 个功能:事件关联,事件统计分析和事件查询。告警模块则主要承担超出威胁等级的事件告警。
        4
系统应用分析
       
文中通过实验比较了事件流技术和准实时处理技术,如表 1 所示。实验结果显示,事件量较小时,两者均有较好的处理效率,随着事件量增多处理压力增大,事件流处理所占 CPU 、消耗内存都少于后者,而处理速率也快于后者,且随事件量增大优势更明显。
         5
结语
        
文中设计并实现了一种基于事件流的网络安全事件监控系统,通过实验的比较可以得出结论:该设计与传统框架相比确实能够在尽量少的占用资源基础上更快速的处理网络告警事件,同时由于规则引擎的加入,只需要修改规则即可满足不同处理需求,具有良好的可扩展性。因此本论文提出的事件流处理系统能够真正实现海量事件的实时处理分析要求,会对事件处理速度要求高的领域,例如金融、网络安全监管等极大的增加工作效率,缩减工作成本。但文中的查询引擎还只是雏形,只支持一些基本的事件处理,下一步作者将考虑对查询引擎进一步优化,以求更全面的分析网络安全事件。

 

你可能感兴趣的:(设计模式,数据结构,框架,金融,网络应用)