alert http any any -> any any (msg: "http user-agent test"; http.user_agent; dataset:set,ua-seen; sid:234; rev:1;)
+It is also possible to optionally define global default memcap and hashsize.
+
+Example::
+
+ datasets:
+ defaults:
+ memcap: 100mb
+ hashsize: 2048
+ ua-seen:
+ type: string
+ load: ua-seen.lst
+
+or define memcap and hashsize per dataset.
+
+Example::
+
+ datasets:
+ ua-seen:
+ type: string
+ load: ua-seen.lst
+ memcap: 10mb
+ hashsize: 1024
+
+
Rule keywords
-------------
dataset:<cmd>,<name>,<options>;
dataset:<set|isset|isnotset>,<name> \
- [, type <string|md5|sha256>, save <file name>, load <file name>, state <file name>];
+ [, type <string|md5|sha256>, save <file name>, load <file name>, state <file name>, memcap <size>, hashsize <size>];
type <type>
the data type: string, md5, sha256
save <file name>
advanced option to set the file name for saving the in-memory data
when Suricata exits.
+memcap <size>
+ maximum memory limit for the respective dataset
+hashsize <size>
+ allowed size of the hash for the respective dataset
.. note:: 'load' and 'state' or 'save' and 'state' cannot be mixed.
Syntax::
datarep:<name>,<operator>,<value>, \
- [, load <file name>, type <string|md5|sha256>];
+ [, load <file name>, type <string|md5|sha256>, memcap <size>, hashsize <size>];
Example rules could look like::
- alert dns any any -> any any (dns.query; to_md5; datarep:dns_md5, >, 200, load dns_md5.rep, type md5; sid:1;)
+ 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;)