将某些用户的网站列入黑名单

将某些用户的网站列入黑名单

这个问题分为两部分。

首先,如果我有一个我想要阻止的网站列表。我如何告诉我的计算机阻止这些域和任何相关子域?

其次,我如何在每个用户的基础上做到这一点。例如,告诉计算机阻止用户 A 访问 facebook 不应阻止用户 B 访问 facebook。

如果答案是命令行答案,则加分。

答案1

事实上,你的问题分为三个部分:

  1. 决定网络级别的阻止策略:允许哪些连接?
  2. 实施该阻止策略。
  3. ...以一种只影响某些用户的方式。

阻止网站并不容易。事实上,我想说,如果不完全阻止网络访问,就不可能完全阻止网站。您所能做的就是让被阻止的用户的生活变得更加困难,但如果他们真的愿意,他们将能够访问被阻止的网站,但延迟会增加,带宽会减少,前提是他们有足够的技术复杂性并且可能可以依赖外部服务器。对于普通浏览,用户可以在 Google 或其他方式上查看缓存的副本。拥有外部服务器的用户可以将其用作代理,也可以使用现有代理(开放代理来来去去太快而无法有效阻止)。

您可以尝试通过域名或IP地址进行阻止。 IP 地址可能适用于像 Facebook 这样的大型网站,但您必须跟上他们所有服务器的移动。它不适用于共同托管的较小网站。

阻止某些网站的一种轻量级方法是阻止其 DNS 名称解析。只是这可能会让用户的生活变得足够烦人,以至于他们通过使用外部代理(这确实需要一些复杂性)来绕过您的块。但是没有实际的方法来调整每个用户的 DNS 解析(原则上这并非不可能,但您需要设置一个工作的identd并找到与其对话的 DNS 服务器)。

阻止网站的自然方法是阻止直接 Web 访问并仅允许通过 Web 代理进行访问。乌贼是事实上的标准。您可以将其设置为透明的代理(端口 80 和 443 上的所有连接都路由到代理计算机;另一个端口上的奇怪网站可能会也可能不会工作,具体取决于您配置防火墙的方式)或作为显式代理(用户必须配置其浏览器;只有机器用代理可以连接到外面)。

实现每用户设置的一个简单方法是要求验证在代理中。然后有不同级别的访问是代理的工作。为了避免密码要求,您还可以将代理使用身份(尽管这会增加所有访问的延迟)。

如果您可以在不同的计算机(可以是虚拟机)上运行代理,您的任务将会更容易。在同一台机器上完成所有操作在 Linux 上可能但很复杂,我怀疑这在其他 unice 上也是可能的,但很复杂。

相关内容