如何禁用单个进程的互联网连接?

如何禁用单个进程的互联网连接?

我知道PID某个特定进程的,我想禁用这个进程的 Internet 访问,并且只禁用这个进程的 Internet 访问,以便其他进程可以访问 Internet。

有什么办法吗?


我搜索了一些资料,找到了一种禁用可执行程序上网的方法。但我需要运行两个程序chrome,一个可以访问互联网,另一个不能。

答案1

您可以尝试以下操作:

  • unshare。对于终端程序来说似乎运行良好。我无法让它与 X11 一起工作。

      unshare -r -n ping google.com
    
  • bubblewrap。这是 Flatpak 使用的沙盒工具。我觉得直接使用比较复杂。

    • 泡泡监狱。这是 的前端bubblewrap。据我所知,它目前在 Debian/Ubuntu 存储库或 PPA 中不可用,因此您必须自行构建。安装后,我发现它比 Firejail 更容易设置和使用。
  • 火狱。您可能需要摆弄配置才能使其工作。

      firejail --noprofile --net=none firefox
    

答案2

我刚刚遇到了同样的问题,并找到了一个很好的解决方案ubuntuforums.org

概括

  • 添加一个组“no-internet”并将您的用户添加到其中

    sudo addgroup no-internet
    sudo adduser $USER no-internet
    
  • 添加 iptables 规则以阻止该组访问网络:

    iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
    
  • 运行您不想访问互联网的进程,例如sg(以不同的组 ID 执行命令):

    sg no-internet "process command line"
    

答案3

我建议使用防火墙规则来锁定该程序。如果您可以隔离该程序正在使用的端口号,则可以阻止这些端口上的流量。您还可以使用 SELinux 或其他安全软件设置“每个进程”防火墙规则。

https://help.ubuntu.com/community/Gufw

如果你正在寻找更直接或更具挑战性的方法,你可以将 IPTables 配置为记录在这里

相关内容