我正在努力完成使用 Snort IDS 审核 TCP 数据包的任务。 目标是:根据 HTTP 协议版本发送针对某些内容 (2) 的审核事件 (1)。但我用Snort的手段处理不了。
使用Snort 2.9.17我尝试了基于Snort规则中的
metadata: service
关键字的方法:
alert tcp any any <> any any (msg:"Alert HTTP 1.1"; file_data; content:"apple"; metadata: service http; priority:130; sid:1000001;)
alert tcp any any <> any any (msg:"Alert HTTP 2.0"; file_data; content:"apple"; metadata: service http2; priority:130; sid:1000002;)
之后我尝试通过浏览器获取2个网页(具有HTTP 1.1和HTTP 2.0版本),但是两个页面上都触发了2条规则。我预计 HTTP 2.0 的规则将在 HTTP 2.0 网页上触发,而 HTTP 1.1 的规则将在其自己的页面上触发。
我还注意到,如果规则没有
content
字段,那么它们会在每个连接的第一个 TCP 数据包(TCP ACK 数据包)上触发,这意味着,该规则字段 metadata
尚未被考虑在内帐户 - 仅基于协议字段进行过滤 (tcp
)。
谁能告诉我,Snort 2.9 支持 http2 协议吗?这种方法可能有什么问题?有谁知道,Snort 如何通过其他方式识别 HTTP 1.1/2.0? 我将不胜感激任何帮助。
附注由于 HTTP 2.0 通过 TLS 工作,我在 DAQ 模块中解密此类数据包并将它们以纯文本形式发送到 Snort,因此它应该能够分析其内容