5

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

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

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

您对如何实现这一点有任何一般或具体(针对节点和 hapi)的建议吗?

我的想法包括:

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

我有几个问题:

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

谢谢!

4

1 回答 1

1

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

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

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

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

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

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

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

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

同样,一般来说,蜜罐主要用于通知现有的违规或即将发生的违规。尽管它们也可用于触发锁定,但您主要从它们那里获取的信息是一旦发生违规行为,但在攻击者不得不花很多时间滥用系统之前获得可见性(您不想在两个月后发现违规行为,当您网站已被污损,所有有价值的数据都已被提取)

蜜罐的一些想法可以是 -

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

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

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

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

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

于 2018-06-14T14:47:30.330 回答