如何在 Linux 上阻止对某些程序的互联网访问

Ili*_*lia 27 linux iptables linux-networking

最近,我遇到了将 Internet 访问限制为特定程序的问题。有人可以推荐一种不使用任何特定软件的好方法吗?

Ili*_*lia 42

我的解决方案碰巧是直接的。

  1. 创建、验证新组;将所需用户添加到该组:
    • 创建: groupadd no-internet
    • 证实: grep no-internet /etc/group
    • 添加用户:useradd -g no-internet username

      注意:如果您正在修改已经存在的用户,您应该运行:usermod -a -G no-internet userName 检查:sudo groups userName

  2. 在您的路径中创建一个脚本并使其可执行:
    • 创建: nano /home/username/.local/bin/no-internet
    • 可执行: chmod 755 /home/username/.local/bin/no-internet
    • 内容: #!/bin/bash
                    sg no-internet "$@"

  3. 添加用于删除组no-internet网络活动的iptables 规则
    • iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP

      注意:不要忘记使更改永久化,因此它会在重新启动后自动应用。这样做,取决于您的 Linux 发行版。


   4. 检查它,例如在 Firefox 上运行:

  • no-internet "firefox"

如果您想例外并允许程序访问本地网络

  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP

注意:在生成的情况下,规则将被保留。例如,如果您运行一个没有互联网规则的程序并且该程序将打开浏览器窗口,则仍然会应用规则。

  • 一些注意事项 Ilia: Ad 1: - 修改现有用户:usermod -a -G groupName userName - 检查:sudo groups userName Ad 3: - 我在iptables里已经有很多规则了,新规则的位置很关键. 应该是链 OUTPUT 中的第一条规则。因此我使用插入: iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP 允许访问 LAN:确保 ACCEPT 规则高于 DENY 规则。奇迹般有效。例如在 Wifiguard 上使用它。Prog 检查 wlan 是否有未知设备,但每次启动时都会“打电话回家”。 (2认同)

alp*_*per 11

来自如何禁用单个进程的 Internet 连接阻止进程的网络访问的答案

然后,在没有网络访问的情况下启动进程非常简单:

unshare -n program ...

这会为进程创建一个空的网络命名空间。也就是说,它在没有网络接口的情况下运行,包括没有环回。在下面的示例中,我们添加 -r 仅在当前有效用户和组 ID 映射到超级用户 ID 后才运行程序(避免 sudo):

unshare -r -n ping google.com


小智 10

一个更直接的可能性:使用firejail。它在沙箱内运行应用程序。在沙箱中,您可以控制应用程序对计算机中任何网络或文件夹的访问。

要在没有网络访问权限的情况下执行某个应用程序,请执行以下操作:

firejail --net=none <application>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,“沙箱看起来就像一台没有任何网络接口的计算机。” (请参阅文档中的网络部分

例如,firejail --net=none firefox将在没有任何网络连接的情况下启动 Firefox。

安装

请参阅安装文档。您应该从您的发行版中的软件包系统安装,或者最好获取最新版本的 LTS。(例如,这个最新的 LTS 版本9.56.2也适用于 Ubuntu 16.04。)