我想使用wso2检测一些模式,但我目前的解决方案只能在事件到达时连续检测到它们。
让我们假设以下模式:
这会产生警报。
但在现实世界的情况下,事件不会按顺序排列,企业中的计算机太多了。
有一种方法能够使用以下事件序列检测先前的模式吗?
我的当前代码是:
from every (e1=Events) -> e2=Events
within 10 min
select ...
having e1.type=='Scan' and e2.type=='attack' and e1.Source_IP4==e2.Source_IP4
insert into Alert;
我还尝试过其他类型的解决方案,例如
from every e1=Events,e2=Events[Condition]
within 10 min
select ...
having e1.type=='Scan' and e2.type=='attack' and e1.Source_IP4==e2.Source_IP4
insert into Alert;
也许可以使用分区来完成?考虑到Source_IP4
,对流进行分区答案 0 :(得分:1)
我终于成功了。
问题是使用"有"要检测模式,必须将其移动到"过滤条件"而不是。
from (every)? <event reference>=<input stream>[<filter condition>] ->
(every)? <event reference>=<input stream [<filter condition>] ->
...
(within <time gap>)?
select <event reference>.<attribute name>, <event reference>.<attribute name>, ...
insert into <output stream>
解决方案:
from every (e1=Events) -> e2=Events[e1.type=='Scan' and type=='attack' and e1.Source_IP4==Source_IP4]
within 10 min
select ...
insert into Alert;