我们曾经有一个过滤/代理设置,配置为大约 500 名用户通过运行 SQUID 和 SquidGuard 的 Unix 系统进行路由,以阻止可疑内容并记录用户的操作。我们发现有些人能够通过使用 HTTPS 协议的免费在线代理来绕过阻止。我找不到一种不完全禁用 HTTPS 流量的方法来阻止它,这对采购和人力资源(或银行网站的普通用户)来说是行不通的。
有没有办法用 SQUID/Squidguard 来阻止或过滤 HTTPS 流量?或者其他一些开源监控程序?其他人如何在不借助商业设备的情况下处理这个问题?
编辑:我们不想看交通我们正在尝试监控网址并在必要时阻止它们。我们不想要信用卡号码之类的东西……我们想知道约翰尼什么时候访问https://schoolssucksoweproxyforyou.com/playboy.com,将域添加到阻止文件,并阻止他们再次执行此操作。请参阅下面的一些添加的评论...
编辑 2:(关于人力资源、银行等问题)您可能不会这样想,但我们有一个负责采购的人员,我们的学区覆盖了分散在县内的 7 栋建筑,因此我们有一个负责分发材料和库存的人员,我们有相同的人员负责支票和银行记录,我们有负责员工工会的人员和负责教职工工会的人员,我们有负责处理人力资源信息(如保险和伤害索赔和责任)的人员……经营学校涉及很多事情,我认为公众从未考虑过这些事情。此外,我们确实存在一些问题,即阻止员工/教职工进行网上银行业务,甚至阻止学生访问某些在线网站(如网络搜索)被认为是过分的,这些网站有时需要 SSL 连接才能运行,因此在路由器上完全禁止 HTTPS 是不可行的。
无论如何,关于您关于仅阻止某些人的建议,我没有看到将功能集成到每个用户身份验证中的方法;如果 Windows 可以传递凭据,这样用户就不需要继续使用另一个密码进行身份验证,这将是一个可行的解决方案,但我发现的任何方法都是笨拙的,并且不能可靠地工作。然后是让人们记住另一个密码的问题(或学生/工作人员窃取/共享密码)。我个人喜欢对教职员工和学生进行公平的筛选,而不是让教师可以做 X 而学生被认为没有足够的资格做同样的事情。
最后,我找不到让服务器可靠地针对 Active Directory 进行身份验证的方法(以集中用户管理并减少要记住的密码),或者如果我使用不同的身份验证方案,则意味着需要与另一个数据库保持同步...上次统计,大约有 1200 个用户左右?每年都有孩子进出学区、毕业,还有新生入学,因此流失率很高?...
答案1
我不想在这里讨论道德问题 - 也许你想在所有你不“知道”域名的网站上都这样做……无论如何,抛开道德问题:
它是有可能,肯定需要为 squid2 添加一些位,但据我所知,squid3 可以立即做到这一点。一些商业网络过滤器供应商也会这样做。MITM 式攻击通常是唯一的方法。
答案2
HTTPS 流量的全部意义在于它在服务器和最终用户之间加密,因此没有其他人可以窥探它 - 包括您的过滤器。您将无法对其进行任何内容过滤。您唯一能做的 HTTPS 过滤是阻止特定 IP 地址的 SSL 端口。
如果您将其列入白名单,您将会遇到大量的误报 - 您没有想到的银行、需要 HTTPS 才能登录或访问的有用站点等。如果您将其列入黑名单,您将会遇到大量的误报 - 每秒都会弹出新的代理站点。
这个问题需要在政策层面解决,而不是技术层面。如果有人在工作时浏览色情网站并使用代理绕过你的过滤器,人力资源部应该严厉惩罚他们,如果继续这样做,甚至威胁解雇他们。
答案3
这是一个由商业供应商实施的非常丑陋的解决方案:
将浏览器的 CA 证书替换为你自己的证书
当请求连接到未知地址时,代理将连接自己的客户端,并获取站点的证书
然后为该网站生成一个由你自己的 CA 签名的假证书
然后代理实际上充当了 MITM(中间人)
您无法使用普通的 Squid 来做到这一点,但是我需要花大约一天的时间对 mod_perl 进行修改才能使用 Apache 实现这一点。
答案4
你必须不是即使可以,也不要使用中间人技术来监控 HTTPS 流量的内容。这会削弱整个系统的安全性,并破坏使用 HTTPS 的意义。但是,您可以从外部监控 HTTPS 流量。
例如,您可以知道他们正在连接到哪些网站,因为通过 Web 代理的所有 HTTPS 流量都使用 CONNECT 方法来启动,这是以明文形式传输的初始位。此信息可用于帮助决定是否允许连接继续。
您还可以监控 HTTPS 流量的带宽使用情况。这样您就可以了解他们是用它来流式传输视频还是用它来进行银行等在线交易。