我想在 HTTPS 版本上屏蔽一些网站,并在 HTTP 版本上允许它们。主要涉及的网站是 Youtube 和 Google 图片/视频。这是因为在 HTTP 版本上,我可以在这些平台上强制执行 Safesearch 过滤器,而在 HTTPS 版本上则不能。对我来说,这是一个非常严重的问题,它破坏了 Google 提供的许多很棒的 Safesearch 功能。
有没有什么软件/配置可以做到这一点?
我正在使用过滤软件(K9 Web Protection),它会在我提到的网站的 HTTP 版本上强制执行安全搜索,但无法在 HTTPS 版本上执行此操作。
我想我需要在计算机级别实现这一点,因为绕过路由器的过滤解决方案非常容易,尤其是当它们依赖于 DNS 配置时。
答案1
有两种方法可以做到这一点:
1) 根据目标 IP 地址和端口在防火墙处阻止它。例如,当我从我的位置查找 YouTube 时,我得到:
C:\Users\mark.henderson>nslookup 默认服务器:enetsdc2.enets.local 地址:192.168.161.2 >youtube.com 服务器:enetsdc2.enets.local 地址:192.168.161.2 名称:youtube.com 地址:2404:6800:800b::88 74.125.237.135 74.125.237.136 74.125.237.142 74.125.237.128 74.125.237.134 74.125.237.129 74.125.237.131 74.125.237.130 74.125.237.133 74.125.237.132 74.125.237.137 >
这为您提供了一个相当清晰的列表,列出了要阻止的内容,显然 HTTPS 是端口443
。因此,如果您要阻止出站到这些 IP 地址,那么443
这是一个开始。对每个域重复并冲洗。
问题在于,这只会阻止初始访问。可能还有其他方法可以访问视频,例如使用不同 IP 地址的子域。例如,Google 地图由数十个子域提供,每个子域可以拥有不同的 IP 地址。反复试验几乎是解决此问题最简单的方法。
2) 中间人 SSL 检查。我相信 Microsoft TMG 防火墙可以做到这一点(尽管我还没有真正检查过)。基本上,YouTube 和您的网络之间的 SSL 连接终止于您的防火墙。然后防火墙解密会话,检查流量,应用其过滤器,然后重新加密和它有自己的、受信任的证书,复制原始证书中的详细信息。
为了实现这一点,防火墙基本上充当了自己的 CA,为不属于自己的域颁发证书。为了实现无缝衔接,每个浏览器/客户端都必须信任防火墙 CA,因为证书将由它颁发,而不是由实际证书颁发。任何有一点知识的人都可以轻松检测到这一点(通过检查证书链)。如果设置不正确,将给每个用户带来证书错误。
总而言之,我建议采用第一种方法,原因很简单,这意味着您不会意外解密会计师的网上银行会话,因此,如果首席执行官为其情妇保留的银行账户中丢失了 100,000 美元,您也不能受到指责。
针对您下面的评论,还有第三个选项,据我所知只有 Google 提供。只有当您所在的网络运行自己的 DNS 服务器并且您知道如何覆盖某些网站的公共 DNS 条目时,此选项才有效。
根据针对学校的 Google 安全搜索和 SSL 搜索,你可以用for覆盖A
的记录。这将执行初始 SSL 握手,但随后会立即将用户重定向回非 SSL 进行搜索。www.google.com
cname
nosslsearch.google.com
这不适用于 YouTube 或其他服务,除非他们也提供此服务。
其他注意事项:您说得对,DNS 阻止是一种阻止访问的糟糕方法,因为它可以被绕过。但是,如果您在公司网络上,则很可能在内部运行自己的 DNS,因此您可以始终阻止发往网络外部的 DNS 流量,但明确允许的内部 DNS 服务器除外。但另一方面,您只能使用 DNS 进行阻止域,而不是协议。因此,您可以阻止 youtube.com,但不允许它在 HTTP 上访问,并在 HTTPS 上阻止它。
但你认为路由器不适合做这件事,这是错误的。事实上,仅有的如果您想获得最高的成功几率,您可以这样做。因为路由器(及其背后的防火墙)是进出网络的唯一途径,所以您可以 99% 地确保流向互联网的任何流量都通过您的控制。(另外 1% 是将 PC 绑定到智能手机以获取互联网访问权限的人,但这是一个管理/社会问题,而不是技术问题)。