node.js - 为 nodejs/hapi.js 创建蜜 jar

标签 node.js security hapijs honeypot

我有一个 hapijs 应用程序并检查了一些日志,我发现了一些用于自动站点扫描仪的条目以及对/admin.php 和类似条目的命中。

我发现了这篇很棒的文章 How to Block Automated Scanners from Scanning your Site我觉得这很棒。

我正在寻找有关为 hapijs/nodejs 应用程序创建蜜 jar 以识别可疑请求、记录它们并可能暂时禁止 IP 的最佳策略的指导。

关于如何实现这一点,您是否有任何一般性或特定性(针对 node 和 hapi)的建议?

我的想法包括:

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

  • 我有几个问题:
  • 如何使用 hapi.js 禁止 IP 地址?
  • 是否有任何其他建议来识别自动扫描仪?
  • 你对实现蜜 jar 有什么具体的建议吗?

  • 谢谢!

    最佳答案

    首先让我说这个想法听起来很酷,但如果它非常实用,我就不是。

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

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

    所以我并不是说你不应该这样做,但我是说你应该考虑看看这里的优点是否超过了缺点。

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

    您提到的文章实际上建议使用 fail2ban这是限速的一个很好的解决方案。你需要确保你的应用程序登录到一个文件,它可以读写 filterjail conf 专门针对您的应用程序,但它应该可以与 hapi 一起使用而不会出现问题。

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

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

    此外,一般而言,蜜 jar 主要用于通知现有的违规或即将发生的违规。虽然它们也可用于触发锁定,但您主要从它们那里获得可见性,一旦发生违规,但在攻击者有很多时间滥用系统之前(您不想在两个月后发现违规时网站已被污损,所有有值(value)的数据都已被取走)

    一些关于蜜 jar 的想法可以是——

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

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

    既然你知道你有一个半能干的攻击者,也许试着看看他想做什么,也许你会知道他是谁或者他的最终目标是什么(非常有值(value),因为他可能会再试一次)。
  • 找到您不希望用户玩的敏感地方并种植一些 canary tokens in。这可以只是一个文件,它与系统上的所有其他上传内容一起进行站点,它可以是开发机器上的 AWS 凭证,它可以是来自管理面板的链接,上面写着“技术文档”这个想法是普通用户不应该关心或有权访问这些文件,但攻击者会发现它们太诱人而无法忽视。一旦他们触碰,您就知道该区域已被入侵,您需要开始阻止和调查

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

    关于node.js - 为 nodejs/hapi.js 创建蜜 jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39231982/

    相关文章:

    javascript - Node.js 的正确继承

    wcf - 保护 WCF 使用的命名管道

    Java 存在于系统上但未安装。这是网络安全问题吗?

    node.js - 如何在批量插入中使用 Mongoose 预中间件?

    hapijs - 如何在实验室中测试异常?

    node.js - 在 Hapi-auth-jwt2 中 token 过期时出现错误 500 而不是 401

    node.js - 多对多关联抛出 "A is not associated to B"错误

    javascript - js导入找不到wasm文件

    javascript - 'console.log' 在测试 Electron 应用程序时在 Webstorm 中不起作用

    windows - 有没有办法查看谁修改了注册表?