由于儿童保护和安全问题,我想为精通技术的青少年设置一个受限或受限的帐户。我想为该用户仅将特定网站(例如 iPlayer 和 Netflix,因为家里没有电视)列入白名单。我不担心软件更新——当然,这些将通过我的帐户运行。
我知道通常的答案是使用代理,例如 Squid 或 Privoxy。但是,我担心可以通过覆盖客户端上的本地代理设置来绕过此类系统,除非有设备将它们作为透明代理运行,过滤所有本地网络流量。我还担心管理和维护此类系统的技术负担。(这是我作为系统管理员说的。)
理想情况下,我希望能够使用我的管理员帐户(显然具有 sudo)来为每个用户设置本地防火墙规则。我原以为这很简单理论上对于内核的网络堆栈来说,根据连接来源的本地用户进程来阻止连接,就像它能够阻止来自某些主机或端口的传出连接一样,而且比代理更容易管理和维护,即使内核本身实际上并不提供上述功能,而且这似乎是一种比通过主机或运行代理的边界设备阻止的强大机制更优雅、更高效的机制。
有人对此事有什么想法吗?
编辑:那些投反对票的人,你能在评论中解释一下原因吗?
答案1
好吧,老实说,每个人都会给出使用代理的常见答案,这是有原因的。与主机上的一组 IP 过滤器相比,代理的管理要简单得多。它还可以跨设备工作,因此如果这个青少年在 wifi 网络上使用手机,他将获得相同的保护。
如果您想确保每个人都使用代理,请在代理所在的位置创建一个 DMZ,并且不允许直接访问互联网。这可以通过两个简单的 NAT 路由器轻松完成。但总会有一个缺点:青少年的技术越精通,就越容易绕过您的安全措施。而且您可能不想管理企业解决方案。
更正
使用 iptables,这是可能的;
iptables -A OUTPUT -o ethX -m owner --uid-owner {USERNAME} -j ACCEPT
如果数据包是由具有给定有效用户名的进程创建的,则 –uid-owner { USERNAME } 匹配。
但管理起来会很糟糕,因此是一个坏主意。