禁用特定用户的网络连接
我正在研究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的连接。 您可以同时使用两者来获得额外的保护。