为nodejs/hapi.js创建蜜罐

aga*_*ian 5 security node.js honeypot hapijs

我有一个hapijs应用程序并检查一些日志我找到了自动站点扫描程序的一些条目和命中/admin.php和类似的条目.

我发现这篇伟大的文章如何阻止自动扫描仪扫描您的网站,我认为它很棒.

我正在寻找关于为hapijs/nodejs app创建蜜罐以识别可疑请求,记录它们以及可能暂时禁用IP的最佳策略的指导.

您是否有关于如何实现此目的的一般或特定(节点和hapi)建议?

我的想法包括:

  • 使用非显而易见的名称创建蜜罐路由
  • 添加robots.txt以禁止该路由上的搜索引擎
  • 创建路线的内容(参见有关建议的文章和讨论)
  • 写入特殊日志或标记日志条目,以便于跟踪和以后分析
  • 可能会创建一些逻辑,如果来自此IP地址的流量接收的流量超过特定阈值(5次蜜罐路由访问将禁止IP超过X小时或永久)

我有几个问题:

  • 如何使用hapi.js禁用IP地址?
  • 是否还有其他建议来识别自动扫描仪?
  • 您是否有实施蜜罐的具体建议?

谢谢!

Yon*_*Jah 1

首先我要说的是,这个想法听起来真的很酷,但如果它很实用的话我就不这么认为了。

首先,阻止合法机器人/用户的机会很小,但仍然存在。即使您忽略真正的错误,滥用和拒绝服务的可能性也相当大。一旦我知道您阻止进入此路线的用户,我可以尝试让合法用户触摸它(使用 iframe / img / 重定向)并导致他们被禁止访问该网站。

比它的功效小。确保您要停止扫描您网站的所有自动机器人(我确信他们做的第一件事就是检查禁止信息,这是您在渗透测试中做的第一件事)。但只有不复杂的攻击才会被阻止,因为任何主动针对您的人都会将端点列入黑名单并获得不同的 IP。

所以我并不是说你不应该这样做,而是说你应该考虑一下利弊是否大于利弊。

如何真正完成它实际上非常简单。看来您正在寻找一种非常独特的情况,rate limiting我不会直接在您的 hapi 应用程序中执行此操作,因为您希望在实例之间共享禁令,并且您可能希望它们在重新启动时保持不变(您可以从您的应用程序,但对于已经解决的问题来说,它的逻辑太多了)。

您提到的文章实际上建议使用fail2ban,这是速率限制的一个很好的解决方案。您需要确保您的应用程序记录到一个文件,它可以专门为您的应用程序读取和写入 afilter和jailconf,但它应该与 hapi 一起使用,没有任何问题。

特别是对于 hapi,我维护了一个名为ralphi的 npm 速率限制模块,它有一个 hapi 插件,但除非您需要适当的速率限制(您应该对登录、会话和其他令牌进行限制),在这种情况下,fail2ban 可能是更好的选择。

一般来说,蜜罐并不难实现,但与任何安全相关的解决方案一样,您应该考虑谁是您的潜在攻击者以及您想要保护什么。

一般来说,蜜罐主要用于通知现有的违规行为或即将发生的违规行为。尽管它们也可以用来触发锁定,但您的主要目的是在发生漏洞后但在攻击者有太多时间滥用系统之前获得可见性(您不想在两个月后发现漏洞网站已被破坏,所有有价值的数据已被拿走)

关于蜜罐的一些想法可以是:

  • 拥有一个密码相对普通(随机 8 个字符)但没有任何权限的“管理员”用户,当该用户成功登录时通知真正的管理员。

    请注意,即使您知道攻击者做错了什么(他将获得不同的 IP 并使用另一个帐户),您也不会在第一次尝试登录时锁定攻击者。但如果他真的成功登录了,也许你的登录逻辑有错误?也许密码重置被破坏了?也许速率限制不起作用?还有更多信息需要跟进。

    既然你知道你有一个半称职的攻击者,也许可以尝试看看他想做什么,也许你会知道他是谁或者他的最终目标是什么(非常有价值,因为他可能会再次尝试)。

  • 找到您不希望用户使用的敏感位置,并在其中植入一些金丝雀令牌。这可以只是一个包含系统上所有其他上传内容的文件,它可以是您的开发计算机上的 AWS 凭证,也可以是来自管理面板的链接显示“技术文档”,其想法是普通用户不应该关心或有权访问这些文件,但攻击者会发现它们太诱人而无法忽视。当他们接触到某个区域时,您就知道该区域已被入侵,您需要开始阻止和调查

请记住,在实施任何安全措施之前,请尝试想想您期望谁会攻击您,蜜罐可能是您应该考虑的最后安全措施之一,并且有许多更常见和基本的安全问题需要首先解决(有有无数关于Node.js 安全最佳实践和OWASP Top 10通用 Web 应用程序安全事实上标准的列表)