有谁知道一种方法(也许使用 iptables)来限制网站的时间?
更准确地说,我的老板希望允许员工访问特定的白名单网站,并希望为每个白名单网站分配每天的累计连接分钟数。例如,工作人员可以随时自由访问网站 A,但他们总共只有 X 分钟的时间;分配的 X 分钟用完后,应阻止对该特定网站的访问。对于所有其他列入白名单的网站也类似。只要用户连接到某个网站(例如在浏览器选项卡上打开该网站),该时间就会计入该网站的 X 分钟,因此用户必须关闭该网站以避免这些分钟被计入,如果希望保留几分钟以便稍后重新访问该网站。有一些列入白名单的网站需要完成我们的工作,每天允许的 X 分钟是一整天。一些网站供个人使用(例如电子邮件网站),并且这些网站(使用键盘/鼠标/大屏幕比在手机上更容易导航)的时间有限。
如果有一种方法可以在 iptables 级别上做到这一点,那就太好了。如果这不能在 iptables 级别完成,有什么办法可以做到吗?我们使用 Ubuntu 16.04 LTS。 (没有浏览器插件,很容易修改。Squid不能设置时间限制。)
答案1
定义在网站上花费的时间非常困难:如果网站(网站上的特定页面)没有任何类型的动态更新,即完全静态的页面,那么您可以在早上加载该页面并关闭选项卡工作日结束时,因此在某些专用防火墙或路由器上无法检测到该网站显示在用户屏幕上的迹象。
因此,唯一可行的解决方案是定制浏览器,为每个用户执行时间统计。有许多基于 webkit 的轻量级浏览器可以根据您的需要进行修改。
您的同事使用的设备是您公司的财产,因此公司绝对有权制定有关设备使用的任何政策以及对违规行为的制裁。
如果一名工人没有能力遵守既定政策并且无论如何都会试图违反这些政策,那么他(她)是否应该得到这个职位?
答案2
我想了一会儿,我认为类似这样的方法会起作用:
让 cron 作业在根主目录中创建一个文件(通常/root
)。每天这样做一次。该文件应包含一个整数值,表示每天允许用户访问“阻止”站点的分钟数。
在文件中添加一行,/etc/hosts
将所有不允许的网站重定向到本地主机;这具有“阻止”这些网站的效果。
编写一个小程序,它采用一个代表分钟的参数。该程序将从根主目录中的文件中减去请求的分钟数。该程序将编辑该/etc/hosts
文件以删除那些“被阻止”的站点,并重置网络接口。然后,它将休眠选定的分钟数,/etc/hosts
再次编辑文件以阻止网站,并重置网络接口。这将被允许,直到根目录中的文件存储零。那么只有第二天才会重置。