禁用特定用户的网络

禁用特定用户的网络

我正在使用 Ubuntu/Mint 发行版,准备实时运行。有多个帐户,分为三类:管理员、互联网和安全。

  • 行政显然有权做任何事情。
  • 互联网帐户用于使用互联网。

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

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

禁用这些安全账户的互联网的最低级别方法是什么?我正在寻找无法连接解决方案。

答案1

iptables您可以使用( )来实现ip6tables

直到重启

在终端上添加规则iptables

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

在哪里用户名是您要禁用 Internet 连接的用户。保存文件并退出。

这将向iptables( ip6tables) 添加一条规则,规定指定用户创建的任何传出包将被其自动删除。

如果您想对整个组执行相同操作,我建议--uid username您不要使用--gid-owner groupname,这将对整个用户组产生相同的效果。

例如,为了阻止该组security访问互联网,命令应该是这样的

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

永恒的

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

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

保存当前iptables规则

sudo iptables-save > /etc/iptables_rules
sudo ip6tables-save > /etc/ip6tables_rules

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

/sbin/iptables-restore < /etc/iptables_rules
/sbin/ip6tables-restore < /etc/ip6tables_rules

这将在每次启动时恢复已保存的规则。请注意仅阻止 IPv4 连接的用户仍将能够连接到互联网。

欲了解更多信息和更多iptables选项,请咨询其手册页

答案2

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

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

答案3

如果防火墙是您的设置的一部分,您可以使用直接规则阻止特定用户的网络访问,例如:

/etc/firewalld/direct.xml
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
<?xml version="1.0" encoding="utf-8"?>
<direct>
  <chain ipv="ipv4" 
         table="filter" 
         chain="restrict_user_ipv4"/>
  <rule ipv="ipv4" 
        table="filter" 
        chain="OUTPUT" 
        priority="1">-m owner --uid-owner user -j restrict_user_ipv4</rule>
  <rule ipv="ipv4" 
        table="filter" 
        chain="restrict_user_ipv4" 
        priority="3">-j DROP</rule>
  <chain ipv="ipv6" 
         table="filter" 
         chain="restrict_user_ipv6"/>
  <rule ipv="ipv6" 
        table="filter" 
        chain="OUTPUT" 
        priority="1">-m owner --uid-owner user -j restrict_user_ipv6</rule>
  <rule ipv="ipv6" 
        table="filter" 
        chain="restrict_user_ipv6" 
        priority="3">-j DROP</rule>
</direct>

不要忘记重新加载

# firewall-cmd --reload

参考

相关内容