我有一个 hapijs 应用程序并检查了一些日志,我发现了一些用于自动站点扫描仪的条目以及对/admin.php 和类似条目的命中。
我发现了这篇很棒的文章 How to Block Automated Scanners from Scanning your Site我觉得这很棒。
我正在寻找有关为 hapijs/nodejs 应用程序创建蜜 jar 以识别可疑请求、记录它们并可能暂时禁止 IP 的最佳策略的指导。
关于如何实现这一点,您是否有任何一般性或特定性(针对 node 和 hapi)的建议?
我的想法包括:
我有几个问题:
谢谢!
最佳答案
首先让我说这个想法听起来很酷,但如果它非常实用,我就不是。
首先,阻止合法机器人/用户的机会很小,但仍然存在。
即使您忽略了真正的错误,滥用和拒绝服务的可能性也很大。一旦我知道你的阻止用户进入这条路线,我可以尝试让合法用户触摸它(使用 iframe/img/重定向)并导致他们被禁止进入该网站。
比它的效力要小。确保您将停止所有扫描您网站的自动化机器人(我确定他们做的第一件事就是检查禁止信息,这是您在渗透测试中做的第一件事)。但是只有简单的攻击才会被阻止,因为任何积极针对您的人都会将端点列入黑名单并获得不同的 IP。
所以我并不是说你不应该这样做,但我是说你应该考虑看看这里的优点是否超过了缺点。
如何真正完成它实际上很简单。看起来您正在寻找一个非常独特的案例 rate limiting
我不会直接在您的 hapi 应用程序中执行此操作,因为您希望在实例之间共享禁令,并且您可能希望它们在重新启动后保持不变(您可以从您的应用程序中执行此操作,但对于已经解决的问题来说逻辑太多了)。
您提到的文章实际上建议使用 fail2ban这是限速的一个很好的解决方案。你需要确保你的应用程序登录到一个文件,它可以读写 filter
和 jail
conf 专门针对您的应用程序,但它应该可以与 hapi 一起使用而不会出现问题。
特别是对于 hapi,我维护了一个名为 ralphi 的用于速率限制的 npm 模块它有一个 hapi 插件,但除非您需要适当的速率限制(您应该为登录、 session 和其他 token 设置)fail2ban 在这种情况下可能是更好的选择。
一般来说,蜜 jar 并不难实现,但与任何安全相关的解决方案一样,您应该考虑谁是您的潜在攻击者以及您要保护什么。
此外,一般而言,蜜 jar 主要用于通知现有的违规或即将发生的违规。虽然它们也可用于触发锁定,但您主要从它们那里获得可见性,一旦发生违规,但在攻击者有很多时间滥用系统之前(您不想在两个月后发现违规时网站已被污损,所有有值(value)的数据都已被取走)
一些关于蜜 jar 的想法可以是——
请注意,即使您知道他做错了事,您也不会在第一次尝试登录时锁定攻击者(他将获得不同的 IP 并使用另一个帐户)。但是如果他真的成功登录了,可能是你的登录逻辑有问题?也许密码重置已损坏?也许速率限制不起作用?还有更多信息需要跟进。
既然你知道你有一个半能干的攻击者,也许试着看看他想做什么,也许你会知道他是谁或者他的最终目标是什么(非常有值(value),因为他可能会再试一次)。
请记住,在实现任何安全性之前,请尝试考虑您期望谁会攻击您 蜜 jar 可能是您应该考虑的最后一个安全措施之一,并且需要首先解决许多更常见和基本的安全问题(有是关于 node.js security 最佳实践和 OWASP Top 10 一般网络应用程序安全的事实标准的无数列表)
关于node.js - 为 nodejs/hapi.js 创建蜜 jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39231982/