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
结语
文中设计并实现了一种基于事件流的网络安全事件监控系统,通过实验的比较可以得出结论:该设计与传统框架相比确实能够在尽量少的占用资源基础上更快速的处理网络告警事件,同时由于规则引擎的加入,只需要修改规则即可满足不同处理需求,具有良好的可扩展性。因此本论文提出的事件流处理系统能够真正实现海量事件的实时处理分析要求,会对事件处理速度要求高的领域,例如金融、网络安全监管等极大的增加工作效率,缩减工作成本。但文中的查询引擎还只是雏形,只支持一些基本的事件处理,下一步作者将考虑对查询引擎进一步优化,以求更全面的分析网络安全事件。
|
相关推荐
时间窗口是基于时间长度来划分事件流的,而时间批量则是基于时间间隔来收集事件。通过这些时间窗口,esper引擎能够对事件进行聚合和分组处理。 聚合和分组是CEP中的常见概念,esper引擎支持多种聚合和分组操作。在...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学...基于Storm+Esper架构实现的证券异常交易行为监控系统源码+项目说明(支持金证交易系统的指令拦截 、复制与解析).zip
Esper 还支持窗口操作,如时间窗口、滑动窗口和翻转窗口,以及基于事件数量的窗口。这使得我们能够灵活地根据时间和事件数量来定义事件批次。 此外,Esper 还提供了丰富的功能,如聚合、过滤、连接事件流等,以满足...
Esper的核心能力在于其能够高效地处理大量的事件数据,同时提供实时响应,使得它成为金融交易、网络安全监控、物联网数据分析等场景下的理想选择。 #### CEP与事件流分析 复杂事件处理是一种用于处理和分析大量...
2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也...
Esper是一种实时复杂事件处理(CEP)引擎,它允许开发者在Java应用程序中处理和分析持续流入的数据流,从而识别模式、趋势和异常。在这个基于Esper的教程中,我们将探讨如何使用Java来实现Esper的功能,特别是针对...
事件驱动架构(Event Driven Architecture,EDA)一个事件驱动框架(EDA)定义了一个设计和实现一个应用系统的方法学,在这个系统里事件可...这种事件传送方法在基于消息的系统里就是:储存(store)和转送(forward)。
Esper提供了灵活的机制来管理事件的可见性和系统时钟。 #### 四、上下文与上下文分区 **4.1 引言** 上下文与上下文分区是Esper中用于组织和管理事件流的关键概念。这部分介绍了这些概念的基本原理及其应用场景。 ...
Esper的核心功能是通过其特有的EPL(Esper事件处理语言)来编写规则和表达式,这些规则能够对事件流进行分析和响应。 在Java应用中集成Esper,首先需要在项目中引入Esper的依赖库。Esper提供了一个丰富的API,其中...
4. **安全监控**:监测网络流量以预防潜在的安全威胁。 #### 三、CEP 的工作原理 - **感知**:收集原始数据。 - **决策**:通过分析数据来做出判断。 - **行动**:根据决策结果采取相应措施。 #### 四、Esper ...
基于Storm+Esper架构实现证券异常交易行为监控系统研发的证券异常交易行为监控系统,支持金证交易系统的指令拦截 、复制与解析。源码+文档+全部资料+优秀项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师...
除了插入流之外,Esper还支持插入与移除流,这种方式允许系统同时处理新事件的添加以及旧事件的删除。 ##### 过滤器与Where子句 Esper支持使用过滤器和Where子句来对事件进行筛选,只处理符合条件的事件。 ##### ...
Socket Adapter提供了基于TCP/IP协议的网络通信能力。 - **Socket Service**:Socket Adapter可以作为一个服务运行,监听特定的端口,接收来自远程客户端的数据。 - **Data Formats**:支持Object和String CSV两种...
在实际应用Esper时,首先需要理解EPL(Esper事件处理语言),它是基于SQL的,使得开发者可以轻松地定义事件处理逻辑。例如,你可以编写EPL查询来检测特定的事件序列,或者当满足特定条件时触发操作。 其次,你需要...
总的来说,这个"esper和jms做的小demo"为我们展示了一个基于Esper的实时事件处理和JMS消息传递的简单应用,它是物联网(IoT)和监控系统等场景中常用的技术组合。通过理解这两个技术,开发者可以构建出能够及时响应...
总的来说,Esper引擎是一个强大的工具,特别适合那些需要处理大量实时数据、执行复杂逻辑和快速响应的应用场景,如业务流程监控、金融交易分析、网络监控和传感器网络应用等。通过其丰富的功能和灵活的配置,Esper为...
Esper采用了一些优化技术,如基于时间窗口的事件处理、事件状态的高效存储以及并发控制等,这些都有助于在大规模事件流中实现高性能。 总的来说,通过分析Esper的源码,我们可以学习到事件驱动架构的设计和实现,...
监听器可以处理生成的新事件或触发的事件流。 6. **发送事件**: 将模拟或实际的事件数据发送到Esper,例如: ```java Trade trade = new Trade("AAPL", 100.0); epService.getEPAdministrator().getRuntime()....