Suricata规则编写4-flowbits

采用工具翻译自:官方文档

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  此规则不会生成警报

举个例子:


Suricata规则编写4-flowbits_第1张图片
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,一个连接以三次握手开始。 在流程中是设置状态的部分。 将检查连接在哪个状态。
在其他情况下,只会检查来自双方的流量。

例如:

Suricata规则编写4-flowbits_第2张图片
image.png
Suricata规则编写4-flowbits_第3张图片
image.png

3.Flowint

For information, read the information on the

flowint

4. stream_size

流大小选项根据序列号的已注册字节数量匹配流量。
这个关键字有几个修饰符:

>      greater than 
<      less than
=      equal
!=     not equal
>=    greater than or equal
<=    less than or equal

格式:
stream_size:, , ;

你可能感兴趣的:(Suricata规则编写4-flowbits)