Drools, IKExpression, Aviator和Groovy字符串表达式求值比较

eSOC项目的一个重要功能就是规则引擎,规则引擎的主要功能就是关联分析。规则引擎的最基本的功能就是计算表达的值(表达式是规则中的基础部分),为了选择一个合适的基础构件作表达式求值工具,前后比较了Drools, IKExpression,Aviator和Groovy,Drools为JBosss的开源规则引擎, IKExpression和Aviator都是轻量的Java表达式求值引擎(均为中国人开发的开源表达式求值引擎),Groovy是JVM上的动态语言,Java的官方弟弟。比较的基本要素是性能;第二是功能:支持常见的操作包括>,>=, ==, !=, <,<=,contains和正则表达式以及二元操作符&& ,括号等, ,其次是使用方便。

背景介绍

什么是关联分析

在如下的场景中,我们需要找出威胁程度最高的事件,也就是报警5,依靠的就是关联分析来完成,下图中所示的是交叉关联分析中的典型场景。


对应于这个场景,规则引擎需要做的事情是从收集到的IDS日志,防火墙日志,资产列表和漏洞库中发现如下的情况:

“IDS检测到Attack的行为,并且防火墙允许了这个行为,Attack的目标资产(服务器,网络设备等)非常重要,并且资产具有该攻击对应的漏洞;如果以上都匹配,并且在10分钟之内发生了一次以上,就产生一个高级别的实时报警”

为了能够分析出上述行为,需要一个或者规则来执行,那么上述文字描述可以转换为如下描述的规则,一个规则由表达式+聚合 + action三部分组成

表达式部分:

1. (Event1.devicetype == 'IDS' && Event1.eventtype=='Attack')

2. (Event2.devicetype == 'Firewall' && Event2.eventtype=='Accept')

3 ((Event1.attcaktype + Event1.destinationIP) in vulnerabilityList //事件的攻击目标地址具有该攻击类型所包括的漏洞

聚合部分:

1. (Event1.destinationIP == Event2.destinationIP) //事件1和2的目标地址是同一个

2. Event1和Event2 在10分钟内发生的次数 > 1次

action

if( Event1.destinationIP 是高价值资产) 产生报警,级别是10

else if(( Even

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值