如何将 proxmox 防火墙规则应用于虚拟机?

如何将 proxmox 防火墙规则应用于虚拟机?

这是我现在的情况:

我在云端有一个 proxmox 服务器。我安装了 2 个虚拟机,它们有不同的 IP(与主 proxmox 服务器不在同一子网中 — 请参阅了解原因)。

在 proxmox 机器上,我已经设置了一个可以完美运行的 iptables 规则列表。

# Allow localhostinterface
/sbin/iptables -A INPUT -i lo -j ACCEPT

#icmp
/sbin/iptables -A INPUT -p ICMP -j ACCEPT

#home network
/sbin/iptables -A INPUT -s xx.xx.xx.xx -j ACCEPT

# Allow already established connections
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Set default policies
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

#LOG IPTABLES
/sbin/iptables -N LOGGING
/sbin/iptables -A INPUT -j LOGGING
/sbin/iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
/sbin/iptables -A LOGGING -j DROP

但是,出于某种原因,这些规则不适用于虚拟机,因为虚拟机在野外完全没有安全性。有没有办法将 proxmox 服务器上有效的相同规则应用于虚拟机?

答案1

我今天早上遇到了同样的问题,然后我也发现了你的问题。

根据本文档,我们只能使用 PVE 防火墙设置虚拟机范围的规则,方法是创建一个包含所有机器的全局规则的安全组,然后将其添加到节点上的每个虚拟机。这样,一旦修改了安全组,更改将影响使用它的所有虚拟机。

我觉得有点不方便,因为我认为在中定义的任何规则/etc/pve/nodes/<nodename>/host.fw也应该影响其虚拟机,因为已经存在一个名为“数据中心”(或“集群”,因为规则/etc/pve/firewall/cluster.fw恰好出现在 GUI 的数据中心部分)的现有覆盖区域,我还怀疑这是一个架构问题,将在不久的将来得到修复/更改。

答案2

防火墙文档说:

为虚拟机和容器启用防火墙

每个虚拟网络设备都有自己的防火墙启用标志。因此,您可以有选择地为每个接口启用防火墙。这是除了常规防火墙启用选项之外的必需功能。

防火墙需要特殊的网络设备设置,因此您需要在网络接口上启用防火墙后重新启动虚拟机/容器。

因此,假设您已经完成以下操作:

  1. 您已启用防火墙数据中心虚拟机[或容器](无需为节点启用防火墙)

…您仍然需要执行以下步骤:

  1. 启用防火墙VM 的虚拟网络设备:在 Web 界面中,导航到虚拟机的Network配置,打开Edit设备的弹出窗口(例如net0)并启用Firewall复选框
  2. 重启虚拟机

(找到解决方案这里

相关内容