我们在 RHEL 服务器上运行 Squid。我们想阻止用户访问 Facebook,除了几个特定网站,比如我们组织的页面。不幸的是,如果不允许所有 Facebook 通过,我就无法解除这些特定页面的阻止。
[squid.conf]
# Local users:
acl local_c src 192.168.0.0/16
# HTTP & HTTPS:
acl Safe_ports port 80 443
# File containing blocked sites, including Facebook:
acl blocked dst_dom_regex "/etc/squid/blocked_content"
# Whitelist:
acl whitelist url_regex "/etc/squid/whitelist"
# I do know that order matters:
http_access allow local_c whitelist
http_access allow local_c !blocked
http_access deny all
[被屏蔽的内容]
.porn_site.com
.porn_site_2.com
[...]
facebook.com
[白名单]
facebook.com/pages/Our-Organization/2828242522
facebook.com/OurOrganization
facebook.com/media/set/
facebook.com/photo.php
www.facebook.com/OurOrganization
我最大的弱点是正则表达式,所以我不能 100% 确定这一切是否正确。如果我删除 http_access 规则中的“!blocked”部分,Facebook 的所有功能都可以正常工作。如果我从 banned_content 文件中删除“facebook.com”,Facebook 的所有功能都可以正常工作。
现在,访问 facebook.com/OurOrganization 会在 Internet Explorer 中出现“该网站拒绝显示此网页/HTTP 403”错误,而在 Chrome 中出现“错误 111 (net::ERR_TUNNEL_CONNECTION_FAILED): 未知错误”。
WhereGoes.com 告诉我该 URL 的重定向如下:
facebook.com/OurOrganization --> [301 重定向] -->http://www.facebook.com/OurOrganization--> [302 重定向] -->https://www.facebook.com/OurOrganization
我尝试使用“debug_options ALL,6”调高 squid 的调试流量,但我无法缩小 /var/log/access.log 和 /var/log/cache.log 中的任何内容。我知道每当我对任何文件进行更改时都要发出“squid -k reconfigure”。
答案1
首先想到的是“不要屏蔽网站”。这从根本上来说是一个管理/人力资源问题,而不是技术问题。如果你真的遇到员工偷懒而不是完成工作的问题,那么是时候招聘新员工了。这不是一个愉快的过程,但我绝对保证从长远来看你会更快乐、更高效、更有利可图。
此外,你无法阻止员工偷懒,如果 Facebook 被屏蔽,他们就会使用智能手机;或者盯着办公桌一个小时,看起来像是在工作,午饭后可能还会再工作一个小时。在一周内,他们可能只做了大约十五分钟的真正工作。
如果您只是告诉他们不要使用 Facebook 或类似应用,我非常怀疑您的 200 多名员工是否会使用。您现在正在屏蔽它,检查您的日志,我敢打赌 90% 以上的人从未尝试过使用 Facebook。即使事实是您的雇员都是无能之辈,如果您用愿意做好本职工作的高效员工取代他们,公司仍然会处于更好的状态。奖金:您无需浪费时间屏蔽网站,而可以专心支持盈利活动。
你的工作还包括为管理层提供建议。你不是无脑的,你不会只听从指令。如果是这样的话,机器人可以做同样的事情,而且更便宜。有很多研究既有统计数据,也有情感原因(两个主要的决策动机),说明为什么屏蔽网站对底线、道德、效率等不利。
答案2
我使用 pfsense,然后屏蔽了整个 fb 子网,然后允许 squid 白名单上的特定 URL。让管理层闭嘴更容易、更快,一旦他们意识到他们的 fb 也被屏蔽了,他们就放弃了整个事情
答案3
你根本无法同时做到这两点:有些东西被封锁了,有些东西没有。
如果你开始打孔,人们就会找到绕过你的封锁的方法。用户可能不是圣诞树上最亮的灯泡,但在满足他们对 Farmville 的渴望方面,他们相当足智多谋。
如果你想某些雇员访问 Facebook 非常容易:假设您都使用用户名/密码向 Squid 进行身份验证。即使您现在没有这样做,也很容易让某些用户这样做。给他们一个单独的、限制较少的白名单,您就大功告成了。
正如 ChrisS 提到的,这可能根本不是问题——如果是,那么全面封锁(或对特定员工进行例外封锁)是解决问题的方法。(需要说服管理层吗?向他们展示您没有处理的其他关键业务项目的列表,因为您正在处理这个问题。)或者根本不封锁它,并提取代理日志几周:任何被发现在 Facebook 上花费“过多”时间的人都会受到正式谴责(“过多”可以由管理层定义)。
这两种解决方案都不会浪费您的时间,并且可以将问题交给人力资源/经理来处理。