我正在(非常谨慎地)考虑将我的一台虚拟机(全部在 KVM 上)开放给外部访问。目前,只能通过 cloudflared 隧道,但可能会改变。为此,我需要一种方法来明确安全地阻止从该特定虚拟机访问私有网络上的任何和所有主机,以防有人闯入并获得 root 权限。该特定虚拟机(我们称之为 VM10)应该只能访问网关,然后从那里访问互联网。同时,我希望能够从私有网络上的 IP 访问该特定虚拟机以进行维护、备份和进一步开发。我正在使用网桥。
VM10 通过 br1 和 br2 连接。
Br1 连接到互联网。Br2 是高速专用网络。
在 VM10 上,eth0 使用 IP 192.168.1.10 连接到 br1;eth2 使用 IP 192.168.222.10 连接到 br2
任何登录到 VM10 的人,即使具有 root 访问权限,也只能访问 192.168.1.1 和更远的 Internet。任何登录到 VM10 的人,即使具有 root 访问权限,也不应该通过 eth2 访问任何内容。最好是,当某人登录到 VM10 时,eth2 甚至不应该出现。
我不想在 VM10 上使用防火墙规则来执行此操作,因为如果有人在 VM10 上获得 root 权限,防火墙将在几秒钟内关闭。
我不想在私有网络上的盒子中使用防火墙规则,因为这很麻烦,而且很容易被忽视。我想将某些内容粘贴到 VM10 的 XML 中,然后就可以完成。
对于 VM10:
- 允许进出 192.168.1.1 和 Internet。
- 禁止 br1 上任何其他 IP 的出站。允许入站。
- 禁止 br2 上所有 IP 的出口。允许入口。
- 以某种方式执行此操作,以便登录到 VM10 的 root 用户无法更改它
我认为 libvirt 的网络过滤器可以做到这一点,但我担心他们的文件对于我这个老脑袋来说,这是一个太难懂的话题。
有好心人能帮忙吗?有可能,有完整的规则吗?
谢谢。