采用工具翻译自:官方文档
1.flowbits
Flowbits由两部分组成。 第一部分描述要执行的操作,第二部分是flowbit的名称。
有多个数据包属于一个流。 Suricata将这些流量保存在内存中。 欲了解更多信息,请参阅suricata.yaml。
Flowbits可以确保例如两个不同的数据包匹配时会生成警报。 只有两个数据包匹配时才会生成警报。 所以,当第二个数据包匹配时,Suricata必须知道第一个数据包是否匹配。 如果一个数据包匹配,Flowbits将标记流,Suricata会“知道”它会在第二个数据包匹配时产生警报。
流程有不同的操作。 这些是:
flowbits:set,name 将在流程中设置条件/'name',如果存在的话。
flowbits:isset,name 可以在规则中使用,以确保它生成警报
当规则匹配并且条件在流中被设置时。
flowbits:toggle,name 颠倒当前设置。 所以例如,如果一个条件设置,
它将被解除,反之亦然。
flowbits:unset,name 可以用来取消流程中的条件。
flowbits:isnotset,name 可以在规则中使用,以确保它生成警报
当它匹配并且条件未在流程中设置时。
flowbits:noalert 此规则不会生成警报
举个例子:
image.png
当你看看第一条规则时,你会注意到,如果它匹配的话,会产生一个警告,如果它不是在规则末尾的'flowbits:noalert'。
此规则的目的是检查“userlogin”上的匹配,并在流程中标记该匹配。 所以,没有必要产生一个警报。
第二条规则没有第一条规则就没有效果。 如果第一条规则匹配,则流程将该特定条件设置为在流中存在。 现在用第二个规则可以检查前一个分组是否满足第一个条件。 如果第二条规则匹配,则会生成警报。
有可能在规则中多次使用flowbits并组合不同的功能。
2.flow
流关键字可用于匹配流的方向,以便客户端或服务器之间进行匹配。 如果流量建立,它也可以匹配。 flow关键字也可以用来表示签名必须仅在流上匹配(only_stream)或仅在数据包(no_stream)上匹配。
所以使用flow关键字你可以匹配:
to_client established only_stream
from_client stateless no_stream
to_server
from_server
注意:from_server和to_client是一样的,to_server和from_client也是一样的。 这来自原始的Snort语言,我们支持它的兼容性的原因。
这些选项可以结合使用。 您最多可以使用三个选项。 例如:
flow:to_client, established;
flow:from_client, established, only_stream;
有不同的方式可以检查连接是否建立。 通过tcp-traffic,一个连接以三次握手开始。 在流程中是设置状态的部分。 将检查连接在哪个状态。
在其他情况下,只会检查来自双方的流量。
例如:
image.png image.png3.Flowint
For information, read the information on the
4. stream_size
流大小选项根据序列号的已注册字节数量匹配流量。
这个关键字有几个修饰符:
> greater than
< less than
= equal
!= not equal
>= greater than or equal
<= less than or equal
格式:
stream_size:<server|client|both|either>, <modifier>, <number>;
网友评论