首先让我说这个想法听起来很酷,但如果它很实用的话我不是。
首先,阻止合法机器人/用户的机会很小,但仍然存在。
即使您忽略真正的错误,滥用和拒绝服务的选择也很大。一旦我知道您阻止了进入此路线的用户,我可以尝试让合法用户触摸它(使用 iframe / img / 重定向)并导致他们被禁止访问该网站。
比它的功效小。确保您要停止所有扫描您网站的自动机器人(我确信他们做的第一件事就是检查 Disallow 信息,这是您在渗透测试中做的第一件事)。但只有简单的攻击才会被阻止,因为任何主动针对您的人都会将端点列入黑名单并获得不同的 IP。
所以我不是说你不应该这样做,而是说你应该考虑看看这里的优点是否超过缺点。
如何真正完成它实际上非常简单。看起来您正在寻找一个非常独特的 rate limiting 案例我不会直接在您的 hapi 应用程序中执行此操作,因为您希望在实例之间共享禁令并且您可能希望它们在重新启动时保持不变(您可以它来自您的应用程序,但对于已经解决的问题来说逻辑太多了)。
您提到的文章实际上建议使用fail2ban,这是一个很好的速率限制解决方案。您需要确保您的应用程序将日志记录到一个文件中,它可以专门为您的应用程序读取和写入 filter 和 jail conf,但它应该可以毫无问题地与 hapi 一起使用。
特别是对于 hapi,我维护了一个名为 ralphi 的用于速率限制的 npm 模块,它有一个 hapi 插件,但除非您需要适当的速率限制(您应该为登录、会话和其他令牌设置)fail2ban 可能是一个更好的选择在这种情况下。
一般来说,蜜罐并不难实施,但与任何与安全相关的解决方案一样,您应该考虑谁是您的潜在攻击者以及您要保护什么。
一般来说,蜜罐主要用于通知现有的违规或即将发生的违规。尽管它们也可用于触发锁定,但您的主要目的是在发生违规行为时获得可见性,但在攻击者不得不花费大量时间滥用系统之前(您不想在两个月后发现违规行为,当您网站已被污损,所有有价值的数据都已被提取)
蜜罐的一些想法可以是 -
-
有一个“管理员”用户,密码相对平均(随机 8 个字符),但当该用户成功登录时根本没有权限通知真正的管理员。
请注意,即使您知道攻击者做错了什么,您也不会在第一次尝试登录时锁定攻击者(他将获得不同的 ip 并使用另一个帐户)。但是如果他真的成功登录了,也许你的登录逻辑有错误?也许密码重置坏了?也许速率限制不起作用?还有更多信息需要跟进。
既然您知道您有一个半胜任的攻击者,也许可以尝试看看他想做什么,也许您会知道他是谁或他的最终目标是什么(非常有价值,因为他可能会再试一次)。
找到您不希望用户玩的敏感位置,并在其中植入一些 canary tokens。这可以只是一个文件,将您所有其他上传的内容都放在系统上,也可以是 AWS 信任您的开发机器,它可以是来自您的管理面板的链接,上面写着“技术文档”,这个想法是普通用户不应该关心或访问这些文件,但攻击者会发现它们太诱人而无法忽略。他们一接触你就知道这个区域已经被入侵了,你需要开始屏蔽和调查
请记住,在实施任何安全措施之前,请考虑一下您期望谁会攻击您,蜜罐可能是您应该考虑的最后一个安全措施之一,还有许多更常见和基本的安全问题需要解决首先(关于node.js security 最佳实践和OWASP Top 10 一般网络应用安全的事实标准的列表数不胜数)