6.37. 数据集集合

使用 datasetdatarep 关键字可以根据任何粘性缓冲区匹配大量数据。

例如,要与一个名为 dns-bl ::

dns.query; dataset:isset,dns-bl;

这些关键字可以识别变换。因此,要根据MD5黑名单查找DNS查询:

dns.query; to_md5; dataset:isset,dns-bl;

6.37.1. 全局配置(可选)

可以选择在主配置中定义数据集。也可以从规则语法声明集合。

跟踪唯一值的集合示例:

datasets:
  ua-seen:
    type: string
    state: ua-seen.lst
  dns-sha256-seen:
    type: sha256
    state: dns-sha256-seen.lst

遵循上述规则:

alert dns any any->any(msg:“dns列表测试”;dns.查询;至sha256;数据集:isset,dns-sha256-seen;sid:123;版次:1;)

警报http any any->any(消息:“http用户代理测试”;http.user_代理; 数据集:集合,可见ua;sid:234;版次:1;)

还可以选择定义全局默认memcap和hashsize。

例子::

datasets:
  defaults:
    memcap: 100mb
    hashsize: 2048
  ua-seen:
    type: string
    load: ua-seen.lst

或者为每个数据集定义memcap和hashsize。

例子::

datasets:
  ua-seen:
    type: string
    load: ua-seen.lst
    memcap: 10mb
    hashsize: 1024

6.37.2. 规则关键字

6.37.2.1. 数据集

数据集是二进制的:有些东西在集合中,或者不在集合中。

语法::

dataset:<cmd>,<name>,<options>;

dataset:<set|isset|isnotset>,<name> \
    [, type <string|md5|sha256>, save <file name>, load <file name>, state <file name>, memcap <size>, hashsize <size>];
类型<类型>

数据类型:string,md5,sha256

加载<文件名>

Suricata启动时加载数据的文件名

状态

设置加载和保存数据集的文件名

保存<文件名>

高级选项,用于设置Suricata退出时保存内存中数据的文件名。

memcap<size>

相应数据集的最大内存限制

哈希大小<大小>

各数据集允许的哈希大小

注解

“load”和“state”或“save”和“state”不能混合使用。

6.37.2.2. 数据代表

数据信誉允许根据信誉列表匹配数据。

语法::

datarep:<name>,<operator>,<value>, \
    [, load <file name>, type <string|md5|sha256>, memcap <size>, hashsize <size>];

示例规则可以如下所示:

alert dns any any -> any any (dns.query; to_md5; datarep:dns_md5, >, 200, load dns_md5.rep, type md5, memcap 100mb, hashsize 2048; sid:1;)
alert dns any any -> any any (dns.query; to_sha256; datarep:dns_sha256, >, 200, load dns_sha256.rep, type sha256; sid:2;)
alert dns any any -> any any (dns.query; datarep:dns_string, >, 200, load dns_string.rep, type string; sid:3;)

在这些示例中,根据三个不同的信誉列表检查DNS查询字符串。MD5列表、SHA256列表和原始字符串(缓冲区)列表。只有当数据在列表中且信誉值大于200时,规则才会匹配。

6.37.3. 规则重新加载

在yaml中定义的集合,或仅使用 statesave ,被视为 dynamic 套。在规则重新加载期间不会重新加载这些。

在规则中仅使用 load 被认为 static 测验。这些在运行时不会发生变化。在规则重新加载期间,这些将从磁盘重新加载。当完整的规则重新加载过程完成时,此重新加载将生效。

6.37.4. Unix套接字

6.37.4.1. 数据集添加

用于向集合添加数据的Unix Socket命令。成功后,加法会立即激活。

语法::

dataset-add <set name> <set type> <data>
集合名称

已定义数据集的名称

类型

数据类型:string,md5,sha256

数据

要以序列化形式添加的数据(base64表示字符串,十六进制表示法用于md5/sha256)

添加示例'谷歌'设置'myset':

dataset-add myset string Z29vZ2xlLmNvbQ==

6.37.4.2. 数据集删除

从集合中删除数据的Unix Socket命令。成功后,移除立即生效。

语法::

dataset-remove <set name> <set type> <data>
集合名称

已定义数据集的名称

类型

数据类型:string,md5,sha256

数据

要以序列化形式删除的数据(字符串为base64,md5/sha256采用十六进制表示法)

6.37.5. 文件格式

数据集使用简单的CSV格式,其中数据是文件中的每一行。

6.37.5.1. 数据类型

一串

在文件中作为base64编码字符串

md5型

在文件中作为十六进制编码的字符串

sha256

在文件中作为十六进制编码的字符串

6.37.5.2. 数据集

数据集的结构很简单,文件中每行有一个数据。

语法::

<data>

e、 g.对于字符串类型的ua:

TW96aWxsYS80LjAgKGNvbXBhdGlibGU7ICk=

当管道输送到 base64 -d 揭示其价值:

Mozilla/4.0 (compatible; )

6.37.5.3. 数据代表

datarep格式紧跟在数据集之后,希望还有1个CSV字段:

语法::

<data>,<value>