使用 snort/suricata,我想为每次登录家庭网络失败生成 SSH 警报

Sid*_*h S 2 ssh alert rules snort suricata

我正在使用 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 失败。(错误尝试 => 使用无效密码生成警报)

请让我知道如何解决这个问题。

Dav*_*zer 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;)
Run Code Online (Sandbox Code Playgroud)

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

请注意,我已将其标记flagsS+. 不要只使用 SYN。请记住,ECN 已经成为一个真正的“东西”,并且您可能会发现 Snort/Suricata 仍然称为“保留”的两个位是作为 ECN 协商的结果设置的。