Graylog几种数据格式规范方法
Graylog对数据格式规范有很几种手段,其中最实用的三种:Split、GROK、Regular。
分割符号(Split)
Split:这个不用多介绍,就是利用分隔符切字段,最好理解。
JSON
JSON: JSON格式也是最简单,几乎不用配置,设备发过来JSON格式,直接按JSON格式解开就行了。
GROK模式
GROK:属于模块化,分装了一些现成的正则表达式,相当于给固定模式正则表达式起了别名。
%{IPV4:SrcIP}
通过这个GROK,获取某个字符串当中的IP。
原则字符串,如下:
10.10.10.01:5678(test)->10.10.01.05:1235(test),
结果,如下:
SrcIP
10.10.10.01
这其中的IPV4,用的就是GROK。
正则表达式(Regular)
GROK和Split的方法,都有自己的局限,而正则表达式,正弥补这两个方式的解决不了一些细节问题,或者能解决,但是比较麻烦。
举例,在告警的IOC信息里,找到CVE号。
原始数据,如下:
XXXXXXXXXXXXXXXXXXXXXXX(CVE-2011-5007)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
接下来要做的,就是在这个长字符串中,找到:CVE-2011-5007,用如下的正侧表达式实现。
(?i)(cve-\d{4}-\d{4,7})
结果:
CVE-2011-5007
以上就是几种,比较常见的数所规范化的手段。
取得[:]之间的数据。
由我们自己创建的一些安全策略规则, 在发出的告警日志中,自定义输出的内容格式,比如我们假定要发送部门相关的信息:[DEP:IS]
像这种加了标签的数据,也可以用正则表达式进行定位这部分信息字段,[DEP:IS]对应的正则表达式,如下:
DEP:(.+?)]
这样就要以提取[DEP:IS]中的内容’IS’。
如果想输出另外一个标签,比如[DB:MySQL]一样的模式就可以了。 想取出数据库类型,修改一下上面的正则表达式就行了。
DB:(.+?)]
规则很明显 , 想加什么标签,在[:]中的:前面加标签名,在:符号加标签属性就行了。
创建一条访问域名的suricata规则, 对于访问abc.com域名进行告警。
下面的代码片段可以帮助你在 Suricata 上创建一条告警规则,用于监测 abc.com
域名的访问并报警:
alert tcp any any -> $HOME_NET any (msg:“Traffic from abc.com”; content:“abc.com”; http_host; sid:1000001; rev:1;)
其中,
-
$HOME_NET
部分表示监测内网中的访问行为。 -
content:"abc.com"
是用于匹配访问abc.com
的 HTTP 请求 / 响应头中的域名内容。 -
http_host
表示只检查 HTTP 请求/响应中的host
头部。 -
sid
(规则 ID) 是一个辨识符,用于标识每条规则,便于日后查看这项规则的细节及更新。 -
rev
表示规则的版本号,在发生了规则调整时将其 +1 即可。
如果你想要对所有访问 abc.com
的端口进行检测,可以将第一个协议 (‘TCP’) 改为 ‘Any’:
alert any any any -> $HOME_NET any (msg:“Traffic from abc.com”; content:“abc.com”; http_host; sid:1000001; rev:1;)