1

我正在寻找一种有效的方法来识别帐户暴力破解。我的日志数据库包含身份验证日志条目。每个条目都有:

  • 时间戳
  • 用户名
  • IP地址
  • 登录尝试结果(成功/失败)

我想生成一份报告,指出哪些登录受到了攻击。被攻击定义为:在 N 分钟(例如 10 分钟)内从同一 IP 地址未成功登录尝试后未成功登录尝试。测试用例是:

  • 用户/IP 组合尝试两次登录失败,第三次成功登录(无攻击)
  • 用户/IP 组合尝试登录失败两次,第三次成功,而同一用户,但不同的 ip 尝试登录失败(攻击第二个用户/IP 组合)

我可以想象一个使用 O(n*log(N)) 解决方案的解决方案:一个游标遍历每条记录,然后使用另一个游标查找以后的记录以确定活动。相当低效。

DB 无所谓:SQL、MySQL、nosql 等,因为数据可以轻松转换。

4

2 回答 2

2

按 5 分钟的时间间隔对日志项进行分组。对于超过一半警报阈值的所有组,请执行更昂贵但完全正确的检查。

这可能会过滤掉几乎所有不是真正攻击的日志项。并且分组操作易于编程和快速执行。

于 2012-11-23T19:29:11.547 回答
0

根据您愿意在此复杂事件处理上花费多少工作,可能是一种选择。如果您使用 Java,则有诸如Esper之类的框架。

这个想法是根据您的服务器日志(或 SQL 结果)创建一个事件流,并让 Esper 检查相关性。请参阅示例查询

于 2012-11-26T14:18:41.130 回答