6.32. 通用应用层关键字

6.32.1. 应用层协议

与检测到的应用层协议匹配。

语法::

app-layer-protocol:[!]<protocol>;

实例:

app-layer-protocol:ssh;
app-layer-protocol:!tls;
app-layer-protocol:failed;

特殊值“failed”可用于匹配协议检测失败的流。如果Suricata不知道协议或某些“救市”条件发生,就会发生这种情况。

6.32.1.1. 救助条件

在某些情况下,协议检测会放弃:

  • 两边都检查过,没有发现匹配

  • A端检测失败,B端完全没有流量(如ftp数据通道)

  • A面检测失败,B面数据检测太少没有结论

在最后两个案例中, app-layer-event:applayer_proto_detection_skipped 被设置。

6.32.2. 应用层事件

匹配应用层解析器和协议检测引擎生成的事件。

语法::

app-layer-event:<event name>;

实例:

app-layer-event:applayer_mismatch_protocol_both_directions;
app-layer-event:http.gzip_decompression_failed;

6.32.2.1. 协议检测

6.32.2.1.1. applayer_mismatch_protocol_both_directions

toserver和toclient方向有不同的协议。例如,客户机与ssh服务器进行HTTP对话。

6.32.2.1.2. applayer_wrong_direction_first_data

Suricata中的一些协议实现对第一个数据方向有要求。HTTP解析器就是一个例子。

https://redmine.openinfosecfoundation.org/issues/993

6.32.2.1.3. applayer_detect_protocol_only_one_direction

协议检测只在一个方向上成功。对于ftp和smtp,这是预期的。

6.32.2.1.4. applayer_proto_detection_skipped

由于,跳过了协议检测 救助条件 .