6.37. 数据集集合¶
使用 dataset
和 datarep
关键字可以根据任何粘性缓冲区匹配大量数据。
例如,要与一个名为 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中定义的集合,或仅使用 state 或 save ,被视为 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>