停止 Discourse 在预加载链接/资源时泄露其主机 IP 地址

我指的是这篇帖子:Discourse Link previews through a proxy server?

首先,很抱歉重新提及这篇将近十年的旧帖子,但我真的不敢相信只有我一个人对此感到困扰?

我现在已经设法用 Cloudflare 隐藏了我的托管服务器及其 IP 地址,并且在搜索了数小时后,我设法只允许来自 Cloudflare 的传入网络流量,这样端口扫描器就不会意外地通过 IP 地址发现论坛。安全对我来说非常重要。邮件服务器是外部的,几乎所有东西都受到了保护——但讽刺的是,任何人只需在帖子中插入一个诱饵图片,Discourse 就会直接下载它以下载并嵌入或其他类似操作。我没有找到任何地方可以禁用此功能。即使是那些应该作为预览的 oneboxes(一键预览)——即使将它们设置为 0 也无济于事——IP 日志记录像素立即被嵌入,可能会向攻击者泄露主机 IP——因此 Cloudflare 的保护在这种情况下完全没用。要么正确保护你的服务,要么干脆不保护——如果攻击者不需要 5 分钟就能注册、发布图片并从而发现主机的真实 IP,那么 Cloudflare 对我们有什么用呢?

我今天花了几个小时尝试使用 AI、tor 和 torsocks——但它从来没有真正奏效。每当我尝试更改 env(环境变量)设置时,重新构建通常就会崩溃。如果有人设法做到了这一点,我几乎是在恳求他们与我们分享。大多数时候,重新构建会失败,因为无法访问 Github,因为 Github 可能禁止 Tor 流量。

如果可以简单地禁用 Discourse 提前加载链接,所有这一切本不必发生。

我真的很绝望。

这会有帮助吗?

它并非完全为此而构建(主要目标是提高可靠性),但可能是解决方案的一部分。

1 个赞

谢谢!我添加了您的插件并重新构建了 Discourse——在此之后,我以为如果我勾选了前两个复选框,它将强制使用代理——无论是否设置了代理——但无论是输入代理信息还是将值留空,仅激活两个复选框——它仍然会加载带有 VPS IP 地址的跟踪像素 :confused:

我现在将尝试配置完整的 Docker 或仅 Discourse 镜像以使用代理,也许使用普通的代理提供商会奏效,并且不会像使用 Tor 那样在重新构建时失败。

2 个赞

太遗憾了。无论解决方案如何,插件路由仍然是正确的方法,因为它使维护变得容易得多。

1 个赞

您可以只在一个单独的主机上设置类似 Tinyproxy 的程序,并配置环境变量来使用它。确保在 Tinyproxy 上禁用 IP 头部转发,并且为了方便主题安装,排除 Github 可能会有所帮助。

您应该在使用 Discourse 时使用这种机制,而不是在构建它时使用。

2 个赞

非常感谢你们两位提出的建议和想法!

我现在暂时放弃了,我已经为此工作了太久。我以为这不会太难,但现在我对所有代理话题,比如 SOCKS 和 SOCKS5,感到有点迷茫。我原以为只需要在 app.ymlenv 部分添加一些参数或配置就足够了,但现在看来我需要在自定义解决方案上投入更多时间。因为一般来说,我很难通过代理向外连接到例如 https://check.torproject.org/api/ip,使用 curl 时也是如此。所以我想我必须更深入地研究代理。

如果我能以我知道的任何可能泄露主机 IP 的方式隐藏主机 IP,那会很好,但我想这就是使用像 Discourse 这样强大的论坛平台的权衡之处。Discourse 有太多的配置选项;是否可以请求一个功能,以防止它预加载链接和预览,或者更普遍地,防止它获取用户提供的外部资源?我在这里找不到请求子论坛 :frowning:

是的,但我希望代理配置在更新或重建 Discourse 后仍然有效。使用 Docker 有点棘手。