过滤 HTTPS 内容并强制实施无需 MITM 代理的强制门户

过滤 HTTPS 内容并强制实施无需 MITM 代理的强制门户

我的教堂想要开始为我们的客人提供免费 WiFi,但有两个要求:

  • 必须过滤掉不适当的内容(例如色情和盗版软件)。
  • 最终用户必须创建一个帐户并同意我们的条款和条件(Captive Portal)。

目前我们正在运行一个实例解开网页过滤器HTTPS 检查器强制门户附加组件。

这种方法效果很好,但有一个例外:当用户第一次连接到我们的 WiFi 时,我们必须要求他们安装我们的CA根证书能够对 HTTPS 流量进行 MITM 攻击以过滤掉不良内容,否则当他们尝试通过 HTTPS 访问任何网站时会收到如下消息:

IE 证书错误

这对于 Internet Explorer 用户来说是一个相当大的进入门槛,因为导入根证书的过程对于非技术人员来说可能很长而且很混乱。

我们还有一些现场机器需要根证书,但我们可以将其推广到具有 Active Directory GPO 的机器,所以这不是问题。

我们还考虑了以下选项:

  • 用一个WPAD.DAT 文件通过我们的过滤器发送用户:这似乎不可靠(许多浏览器默认将其关闭)。

  • 根据 IP 屏蔽内容:这意味着维护一个 IP 黑名单,最终用户会收到“连接被拒绝”消息,而不是我们阻止该内容的原因的解释。

  • 使用信噪比阻止内容:Untangle 支持开箱即用的功能,但它存在与通过 IP 阻止相同的问题(“连接被拒绝”消息)。

该问题还影响我们的强制门户,因为我们需要将用户重定向到强制门户进行登录 - 而这在没有 MITM 请求/响应的情况下通过 HTTPS 是不可能的。

我是不是漏掉了什么?有没有其他方法可以解决这个问题,让最终用户更容易/不需要他们任何事物?

答案1

考虑一下你问的问题(“我怎样才能提供封锁页面而不是https://playboy.com无需我的用户做任何事情)作为“我如何提供我自己版本的https://trusted-bank.com在我的用户不知情的情况下”。

HTTPS 和浏览器(如今)的设计就是为了避免这种情况。这使得网络过滤变得困难。

即使你推送了 wpad,并且因此拥有明确的代理,你仍然只能拒绝与“坏”网站的连接,虽然它确实解决了与 sni 相关的问题,但实际上并没有让你走得更远(至少对于这部分问题而言)。

在提供登录页面方面,wispr 可用于通知用户他们必须登录。

答案2

由于您服务的对象是公众,我认为您无法合理地要求他们安装您的 SSL 根证书(他们怎么知道您不会在他们的家庭连接上对他们进行攻击?)。此过程也非常技术化,并且因浏览器而异。

我觉得你的选择是维护一个 IP 黑名单,或者完全禁用 https 连接。对于 IP 黑名单,是的,他们只会看到“连接被拒绝”而不是自定义错误页面,但你真的需要解释为什么访问 warez 或色情内容被阻止吗?禁用 https 意味着人们将无法访问某些特定网站 - 但想想人们是否真的需要在教堂访问这些网站,或者你是否希望任何入侵你开放的 wifi 信号的人能够拦截他们与这些网站的连接。也许为了弥补这一点,你可以在教堂拥有的计算机上允许 https(通过你的根证书和拦截代理),以防人们真的需要使用这些网站。

答案3

您可以在网关上设置透明代理。例如在 OpenWrt 上,可以使用 Tinyproxy 和防火墙规则来完成。对于 SSL,您还需要 TCP 到代理重定向器,如 redsocks。但是,当前版本的 redsocks 仅使用 HTTP 1.0 与代理通信。这会阻止 Tinyproxy 端的过滤(因为过滤基于 HTTP 1.1 Location 标头)。但我相信您可以找到支持 HTTP 1.1 的 redsocks 替代品。

另请查看我的要旨,并附有说明和其他相关来源的链接。

相关内容