我正在尝试在我的环境中的虚拟机中设置防火墙,其中网卡(Wifi 和各种以太网)位于单独的虚拟机中,以便防火墙虚拟机位于 NetVM 和我的主机系统之间。
问题是进入防火墙的数据包以 NetVM IP 作为源地址,因此我无法使用黑名单丢弃iptables
来自恶意来源的数据包。
有人建议我使用端口镜像复制数据包,但我想直接转发数据包并且 NetVM 中没有内核来处理它们。
我必须在这两个选项之间做出选择:
- 在每台机器上使用“iptables”规则来过滤传入的流量,并使用防火墙仅处理内部方案,因为我无法控制和维护所有连接的机器
- 过滤防火墙虚拟机中的所有流量。
如果我必须在每个 NetVM 上设置 iptables 并安装 Psad、Snort 和其他工具,那么防火墙就失去了意义。
如果在内核处理数据包之前转发数据包,并且堆栈代码中的错误被利用,那么唯一受到危害的机器就是防火墙机器,它与系统保持“隔离”,我只需要检查一个系统,最多在错误的情况下备份/维护/重新安装一个虚拟机,并且NetVM 和防火墙 VM 可以使用最小内核来满足其特定范围的要求。
这也与我无法控制一个或多个 NetVM 且无法指望机器是干净的或进行适当过滤的情况有关。
硬件设备如何处理这种情况?
答案1
听起来你需要研究一般的网络、互联网安全以及特别是虚拟机环境中的虚拟网络。
听起来你不想在虚拟机主机上使用防火墙,因为你担心代码中可利用的错误会使你的整个虚拟机环境变得脆弱。对吗?这听起来很尴尬,因为根据定义,任何数据包都必须经过虚拟机主机。
听起来你想要一个唯一的工作就是作为防火墙的虚拟机,并且你希望与外界的所有连接都通过它,包括与虚拟机主机的连接。
我的做法是,在 VM 主机上运行一个简单的防火墙,并在其他主机上运行任何其他工具,并根据需要使用端口镜像或类似的东西。
硬件等价物是互联网 <-> 交换机 <-> 防火墙 <-> 交换机 <-> 计算机。或者这不是您要问的?
您可以通过将硬件网卡连接到虚拟网桥而不将 VM 主机连接到该网桥来实现这一点,然后将防火墙连接到该网桥,创建第二个内部虚拟网桥,并将防火墙、所有其他 VM 和 VM 主机连接到该网桥。您可以将“网桥”替换为您在环境中使用的任何虚拟交换机、网络、集线器等。
我看到的一个担忧是,这可能会引发自我造成的拒绝服务攻击。您确实需要某种后门通道访问权限,这样您就不会把自己锁在外面。
此外,无论如何,这一切都是在 VM 主机上的软件中运行的,因此额外的复杂性可能比您试图避免的风险更糟糕。
(稍后添加)
我在所有主机上都安装了防火墙。我尝试在设置时假设坏人已经进入我的本地网络。我使用自动化(puppet、ansible、salt),所以这真的不是什么令人头疼的事。
(回到原文)
最后,互联网是一个巨大的混乱之球,它会一直攻击你。检测攻击者并积极防御他们只是微不足道的。如果你因为某个 IP 正在发送攻击而阻止它,请记住该 IP 可能是也为你的用户提供服务的 NAT。
攻击是互联网的自然特征,就像森林里的熊一样。抵御熊的方法是妥善保管食物,而不是整夜持枪。抵御互联网的方法是修补软件、保持防火墙正常、教育用户等,而不是主动应对攻击者。