我想在 Linux VM 中运行一个不受信任的应用程序(主机是运行 VirtualBox 的 Windows 10)。它需要访问我 LAN 上的另一台服务器,但我想阻止除一个 IP 上的这个端口之外的任何其他网络访问。
AppArmor 似乎不允许这种细粒度的网络限制。
我宁愿不阻止整个客户操作系统的网络访问,因为我希望能够运行例如sudo apt-get update
,但如果这是我能做的最好的,那么这是可以接受的。
最好的解决方案是什么?也许是在启动此程序之前设置临时系统范围防火墙规则的脚本?
答案1
由于你的虚拟机是 Linux,因此我将利用 Linux命名空间运行该应用程序沙盒化环境,例如使用火狱。对于你的情况,一个可能的方法是创建一个虚拟网络接口范围有限,只能到达 LAN 上的其他服务器。
然后使用 Firejail 启动您的应用程序,以便它只能“看到”一个网络接口 - 受限制的接口。
从命令行生成的命令将类似于以下内容:
firejail --net=veth0 yourapp
但您也可以创建自定义配置文件。