Ili*_*lia 27 linux iptables linux-networking
最近,我遇到了将 Internet 访问限制为特定程序的问题。有人可以推荐一种不使用任何特定软件的好方法吗?
Ili*_*lia 42
我的解决方案碰巧是直接的。
groupadd no-internet
grep no-internet /etc/group
useradd -g no-internet username
usermod -a -G no-internet userName
检查:sudo groups userName
nano /home/username/.local/bin/no-internet
chmod 755 /home/username/.local/bin/no-internet
#!/bin/bash
sg no-internet "$@"
iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
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
注意:在生成的情况下,规则将被保留。例如,如果您运行一个没有互联网规则的程序并且该程序将打开浏览器窗口,则仍然会应用规则。
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。)