禁用特定用户的网络连接

我正在研究Ubuntu / Mint发行版,意味着要运行Live。 有多个帐户分为三大类:管理员,互联网和安全。

  • 管理员显然有权做任何事情。
  • Internet帐户用于使用Internet。

其他帐户是安全帐户。 在任何情况下都不允许使用任何网络互联网,打印机,蓝牙,WiFi设备等。

我想要做的是从内核中删除网络驱动程序,但这将禁用需要Internet的帐户。

为这些安全帐户禁用Internet的最低级别方法是什么? 我正在寻找不可能连接解决方案。

你可以用iptables做到这一点。

在终端iptables规则添加到iptables

 sudo iptables -A OUTPUT -p all -m owner --uid-owner username -j DROP 

其中, username是要禁用Internet连接的用户。 保存文件并退出。

这将向iptables添加一条规则,说明由iptables自动删除由指定用户创建的任何传出包。

如果你想对一个完整的组做同样的事情,我会使用--gid-owner groupname来代替--uid username ,这对完整的用户组具有相同的效果。

因此,为了防止组安全性访问Internet,命令看起来像这样

 sudo iptables -A OUTPUT -p all -m owner --gid-owner security -j DROP 

要使规则永久化,您可以在/etc/network/if-up.d/创建一个脚本,向其添加必要的行并使其可执行。


作为选项,使用iptables-save保存当前规则并在启动时恢复它们。

保存当前的iptables规则

 sudo iptables-save > /etc/iptables_rules 

使用您喜欢的文本编辑器打开/etc/rc.local并在文件末尾添加

 /sbin/iptables-restore < /etc/iptables_rules 

这将恢复每次启动时保存的规则。

有关更多信息,请访问[ iptables联机帮助页 ]页面以获取有关多个iptables选项的更多信息。

Bruno的解决方案很好:我认为可能是最好的独立解决方案。

您可以考虑的另一个选项是在单独的计算机上设置防火墙/代理,作为Internet的网关,它只允许提供每用户身份validation的连接。 您可以同时使用两者来获得额外的保护。