阻止程序使用互联网

阻止程序使用互联网

有没有办法在 Debian 中阻止某些程序连接到互联网(阻止传出连接的防火墙),例如,阻止在 wine 中运行的 Windows 程序打电话回家?

答案1

你可以使用Linux容器创建一个没有网络接口的环境。例如,如果我创建一个如下的配置文件:

# lxc.network.type = empty

然后启动一个 shell,如下所示:

# lxc-execute --name bash -f /tmp/lxc.conf /bin/bash

我会发现在这个 shell 中除了以下之外没有可用的网络设备lo

# ifconfig -a
lo        Link encap:Local Loopback  
          LOOPBACK  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

请注意,您必须是 root 才能运行lxc-execute,因此让它在您的桌面环境中运行wine可能会很棘手。

显然还有一个sandbox命令可作为 SELinux 的一部分。这是使用沙箱运行 Firefox 的示例。这需要您启用 selinux。

答案2

一种更简单的方法是以不同用户身份运行 WINE 程序并设置 netfilter 来丢弃来自该用户的数据包。

例如,其中“wineusername”是您的 Wine 用户,em1 是您的网络接口:

iptables -A OUTPUT -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A FORWARD -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A INPUT -o em1 -m owner --uid-owner wineusername -j DROP

相关内容