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

问题描述 投票:0回答: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,秒 2;sid:2005;rev:1;)

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

请让我知道如何去做。

ssh alert rules snort suricata
2个回答
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 的入站数据包)生成警报。阈值“两者”表示在超过此阈值之前不会发出警报,并且只会生成一个警报来通知您,而不是开始用警报淹没您。

请注意,我已将

flags
标记为
S+
。不要只使用 SYN。请记住,ECN 已经成为一个真实的“东西”,您可能会发现 Snort/Suricata 仍然称为“保留”的两个位是作为 ECN 协商的结果设置的。


0
投票

查看https://github.com/sshlog/agent

此守护进程监视 SSH 登录尝试和命令。他们有一个示例,每当发生登录失败时都会生成 Slack 警报,但您可以自定义它以发送 WebHook、电子邮件或您可以想到的任何其他使用自定义插件的方式。

© www.soinside.com 2019 - 2024. All rights reserved.