6.14. 文件关键字¶
Suricata提供了几个规则关键字来匹配各种文件属性。它们依赖于正确配置 文件提取 .
6.14.1. 文件名¶
与文件名匹配。
语法::
filename:<string>;
例子::
filename:"secret";
6.14.2. 文件外文¶
与文件名的扩展名匹配。
语法::
fileext:<string>;
例子::
fileext:"jpg";
6.14.3. 文件魔术¶
与libmagic返回的有关文件的信息匹配。
语法::
filemagic:<string>;
例子::
filemagic:"executable for MS Windows";
注意:由于libmagic版本在安装之间有所不同,返回的信息也可能略有变化。另见437。
6.14.4. 文件存储器¶
如果签名匹配,则将文件存储到磁盘。
语法::
filestore:<direction>,<scope>;
方向可以是:
请求/到服务器:在请求/到服务器方向存储文件
响应/对客户机:在响应/对客户机方向存储文件
两者:存储两个方向
范围可以是:
文件:仅存储匹配的文件(用于文件名、文件扩展名、文件魔力匹配项)
Tx:存储匹配HTTP事务中的所有文件
ssn/flow:存储TCP会话/流中的所有文件。
如果省略了方向和作用域,则方向将与规则相同,作用域将以每个文件为单位。
6.14.5. 文件MD5¶
匹配文件 MD5 对照MD5校验和列表。
语法::
filemd5:[!]filename;
扩展文件名以包含规则目录。在默认情况下,它将变为/etc/suricata/rules/filename。使用感叹号得到否定的匹配。这允许白名单。
实例:
filemd5:md5-blacklist;
filemd5:!md5-whitelist;
文件格式
文件格式很简单。它是一个文本文件,每行有一个MD5,在行首,以十六进制表示。如果行中有额外信息,则忽略该信息。
MD5SUM输出正常:
2f8d0355f0032c3e6311c6408d7c2dc2 util-path.c
b9cf5cf347a70e02fde975fc4e117760 util-pidfile.c
02aaa6c3f4dbae65f5889eeb8f2bbb8d util-pool.c
dd5fc1ee7f2f96b5f12d1a854007a818 util-print.c
只有MD5也很好:
2f8d0355f0032c3e6311c6408d7c2dc2
b9cf5cf347a70e02fde975fc4e117760
02aaa6c3f4dbae65f5889eeb8f2bbb8d
dd5fc1ee7f2f96b5f12d1a854007a818
内存需求
每个MD5使用16个字节的内存。2000万MD5使用约310兆字节的内存。
另请参见:https://blog.inliniac.net/2012/06/09/suricata-md5-blacklisting/
6.14.6. 文件ha1¶
将文件sha1与sha1校验和列表匹配。
语法::
filesha1:[!]filename;
扩展文件名以包含规则目录。在默认情况下,它将变为/etc/suricata/rules/filename。使用感叹号得到否定的匹配。这允许白名单。
实例:
filesha1:sha1-blacklist;
filesha1:!sha1-whitelist;
文件格式
与MD5文件格式相同。
6.14.7. 文件ha256¶
将文件sha256与sha256校验和列表匹配。
语法::
filesha256:[!]filename;
扩展文件名以包含规则目录。在默认情况下,它将变为/etc/suricata/rules/filename。使用感叹号得到否定的匹配。这允许白名单。
实例:
filesha256:sha256-blacklist;
filesha256:!sha256-whitelist;
文件格式
与MD5文件格式相同。
6.14.8. 文件大小¶
传输文件时与文件大小匹配。
语法::
filesize:<value>;
可能的单位是KB、MB和GB,如果没有任何单位,则默认为字节。
实例:
filesize:100; # exactly 100 bytes
filesize:100<>200; # greater than 100 and smaller than 200
filesize:>100MB; # greater than 100 megabytes
filesize:<100MB; # smaller than 100 megabytes
Note :对于由于数据包丢失或流。重组。深度在“大于”时被选中。这是因为Suricata可以知道一个文件大于一个值(它已经看到了一些),但它不知道最终大小是否在一个范围内,一个精确的值还是小于一个值。