2

我正在使用 Suricata 设置入侵检测系统 (IDS)。我想编写一个自定义规则,只要我的虚拟机发生登录尝试失败,它就会生成警报。

例子:

alert tcp any any -> $HOME_NET 22 (msg:"SSH Brute Force Attempt";flow:established,to_server;content:"SSH";nocase;offset:0; depth:4;detection_filter:track by_src, count 2, seconds 2;sid:2005;rev:1;)

我尝试了 SSH 规则的各种组合,但无法在 Suricata 警报部分看到任何警报,其中包含多次错误的 SSH 尝试。(错误尝试 => 使用无效密码生成警报)

请让我知道该怎么做。

4

1 回答 1

6

由于您确实在尝试查看加密内容(这是身份验证和后续失败消息所在的位置),因此 Snort/suricata 并不是您所描述的使用方式的理想工具。相反,日志监控将是一种更好的方法。

但是,还有其他选择。您可能会查看Fail2Ban以在 IPTables 级别自动阻止。

如果你真的想用 Snort/Suricata 来做,你可以使用警报阈值。例如:

 alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"Possible SSH brute forcing!"; flags: S+; threshold: type both, track by_src, count 5, seconds 30; sid:10000001; rev: 1;)

这告诉 Snort/Suricata 当在 30 秒内从单个源看到 5 个连接的阈值时,对入站连接(设置了 SYN 的入站数据包)生成警报。阈值“both”表示在超过此阈值之前它不会发出警报,并且它只会生成一个警报来通知您,而不是开始用警报淹没您。

请注意,我已将 标记flagsS+。不要只使用 SYN。请记住,ECN 已成为一个真正的“事物”,您可能会发现 Snort/Suricata 仍称为“保留”的两个位是 ECN 协商的结果。

于 2017-12-20T14:54:29.947 回答