ProxmoxVE防火墙介绍
- 格式:pdf
- 大小:270.72 KB
- 文档页数:5
ProxmoxVE防⽕墙介绍
Proxmox VE 防⽕墙提供了⼀种简单的⽅法来保护您的 IT 基础设施。您可以为集群内的所有主机设置防⽕墙规则,或为虚拟机和容器定义规则。防⽕墙宏、安全组、IP 集和别名等功能有助于简化该任务。
虽然所有配置都存储在集群⽂件系统上,但基于iptables的防⽕墙服务运⾏在每个集群节点上,从⽽在虚拟机之间提供完全隔离。该系统的分布式特性还提供⽐中央防⽕墙解决⽅案⾼得多的带宽。
防⽕墙完全⽀持 IPv4 和 IPv6。IPv6 ⽀持是完全透明的,默认情况下我们会过滤两种协议的流量。因此⽆需为 IPv6 维护⼀组不同的规则。
区域
Proxmox VE 防⽕墙将⽹络分组为以下逻辑区域:
主机进出集群节点的流量。
虚拟机
来⾃或到达特定虚拟机的流量。
对于每个区域,您可以为传⼊和传出流量定义防⽕墙规则。
配置⽂件
集群范围设置
集群范围的防⽕墙配置存储在:/etc/pve/firewall/cluster.fwGUI设置界⾯如下:
默认情况下防⽕墙是完全禁⽤的。如果启⽤防⽕墙,默认情况下会阻⽌所有主机的流量。只有来⾃本地⽹络的 WebGUI(8006) 和 ssh(22) 例外。
如果要从远程管理 Proxmox VE 主机,则需要创建规则以允许从这些远程 IP 到 Web GUI(端⼝ 8006)的流量。您可能还想允许 ssh(端⼝ 22),也可能是 SPICE(端⼝3128)。
在启⽤防⽕墙之前,请打开与您的 Proxmox VE 主机之⼀的 SSH 连接。这样,如果出现问题,您仍然可以访问主机。
为了简化该任务,您可以改为创建⼀个名为“management”的 IPSet,并在其中添加所有远程 IP。这将创建从远程访问 GUI 所需的所有防⽕墙规则。设置⽰例如下:
配置⽂件相关内容如下:[OPTIONS]enable: 1[ALIASES]management 10.0.0.0/24[IPSET management]management[RULES]GROUP managementIN ACCEPT -source +management -p tcp -dport 80 -log nologIN DROP -log nolog[group management]IN ACCEPT -source +management -p tcp -dport 3128 -log nologIN ACCEPT -source +management -p tcp -dport 22 -log nologIN ACCEPT -source +management -p tcp -dport 8006 -log nolog[group webserver]IN ACCEPT -p tcp -dport 443 -log nologIN ACCEPT -p tcp -dport 80 -log nolog
主机范围设置主机范围的防⽕墙配置存储在:/etc/pve/nodes//host.fwGUI设置界⾯如下:
虚拟机范围设置
虚拟机范围的防⽕墙配置存储在:/etc/pve/firewall/.fwGUI设置界⾯如下:
每个虚拟⽹络设备都有⾃⼰的防⽕墙启⽤标志。因此,您可以有选择地为每个接⼝启⽤防⽕墙。除了常规防⽕墙启⽤选项之外,这也是必需的。
虚拟机防⽕墙默认是禁⽤的。启⽤后,默认的输⼊策略是 DROP,默认的输出策略是 ACCEPT,不记录任何⽇志。
下⾯是⼀个GUI设置⽰例:
配置⽂件相关内容如下:[OPTIONS]log_level_in: nologenable: 1log_level_out: nolog[RULES]IN ACCEPT -p tcp -dport 22 -log nologIN ACCEPT -p tcp -dport 80 -log nolog防⽕墙规则
防⽕墙规则由⽅向(IN或OUT)和操作(ACCEPT、DENY、REJECT)组成。您还可以指定宏名称。宏包含预定义的规则和选项集。规则可以通过添加前缀“|”来禁⽤。
⽰例
[RULES]IN SSH(ACCEPT) -i net0IN SSH(ACCEPT) -i net0 # a commentIN SSH(ACCEPT) -i net0 -source 192.168.2.192 # only allow SSH from 192.168.2.192IN SSH(ACCEPT) -i net0 -source 10.0.0.1-10.0.0.10 # accept SSH for IP rangeIN SSH(ACCEPT) -i net0 -source 10.0.0.1,10.0.0.2,10.0.0.3 #accept ssh for IP listIN SSH(ACCEPT) -i net0 -source +mynetgroup # accept ssh for ipset mynetgroupIN SSH(ACCEPT) -i net0 -source myserveralias #accept ssh for alias myserveralias|IN SSH(ACCEPT) -i net0 # disabled ruleIN DROP # drop all incoming packagesOUT ACCEPT # accept all outgoing packages
安全组
安全组是在集群级别定义的规则集合,可以在所有 VM 的规则中使⽤。例如,您可以定义⼀个名为“webserver”的组,其中包含打开http和https端⼝的规则。
[group webserver]IN ACCEPT -p tcp -dport 443 -log nologIN ACCEPT -p tcp -dport 80 -log nolog
IP 别名
IP 别名允许您将⽹络的 IP 地址与名称相关联。然后您可以使⽤这些名称:
内部 IP 集定义在防⽕墙规则的源和⽬标属性中
IP Set
IP 集可⽤于定义⽹络和主机组。您可以在防⽕墙规则的源和⽬标 属性中使⽤“+name”来引⽤它们。
服务和命令防⽕墙在每个节点上运⾏两个服务守护进程:pvefw-logger:NFLOG 守护进程(ulogd 替换)。pve-firewall:更新 iptables 规则
还有⼀个名为pve-firewall的 CLI 命令,可⽤于启动和停⽌防⽕墙服务:# pve-firewall start# pve-firewall stop要获取状态使⽤:# pve-firewall status上述命令读取并编译所有防⽕墙规则,因此如果您的防⽕墙配置包含任何错误,您将看到警告。
如果要查看⽣成的 iptables 规则,可以使⽤:# iptables-save默认防⽕墙规则
以下流量由默认防⽕墙配置过滤:
数据中⼼传⼊/传出 DROP/REJECT
如果防⽕墙的输⼊或输出策略设置为 DROP 或 REJECT,集群中的所有 Proxmox VE 主机仍然允许以下流量:环回接⼝上的流量已经建⽴的连接
使⽤ IGMP 协议的流量
从管理主机到端⼝ 8006 的 TCP 流量,以允许访问 Web 界⾯
从管理主机到端⼝范围 5900 到 5999 的 TCP 流量允许 VNC Web 控制台的流量
从管理主机到端⼝ 3128 的 TCP 流量,⽤于连接到 SPICE 代理
从管理主机到端⼝ 22 的 TCP 流量以允许 ssh 访问
⽤于 corosync 的集群⽹络中到端⼝ 5404 和 5405 的 UDP 流量
集群⽹络中的 UDP 多播流量ICMP 流量类型 3(⽬标不可达)、4(拥塞控制)或 11(超时)以下流量被丢弃,但即使启⽤⽇志记录也不会记录:
连接状态⽆效的 TCP 连接
与 corosync ⽆关的⼴播、多播和任播流量,即不通过端⼝ 5404 或 5405
到端⼝ 43 的 TCP 流量UDP 流量到端⼝ 135 和 445
UDP 流量到端⼝范围 137 到 139
UDP 流量从源端⼝ 137 到端⼝范围 1024 到 65535
UDP 流量到端⼝ 1900
TCP 流量到端⼝ 135、139 和 445
来⾃源端⼝ 53 的 UDP 流量
其余的流量分别被丢弃或拒绝,并被记录下来。这可能会因防⽕墙→选项中启⽤的其他选项⽽异 ,例如 NDP、SMURFS 和 TCP 标志过滤。
请检查输出:# iptables-savesystem 命令以查看系统上活动的防⽕墙链和规则。此输出也包含在系统报告中,可通过 Web GUI 中节点的订阅选项卡或通过pvereport命令⾏⼯具访问。
VM 传⼊/传出 DROP/REJECT
这会丢弃或拒绝所有到 VM 的流量,但 DHCP、NDP、路由器⼴告、MAC 和 IP 过滤的⼀些例外情况取决于设置的配置。丢弃/拒绝数据包的相同规则是从数据中⼼继承的,⽽主机接受的传⼊/传出流量的例外情况并不适⽤。
同样,您可以使⽤iptables-save(见上⽂) 来检查所有应⽤的规则和链。
Proxmox VE 使⽤的端⼝
Web 界⾯:8006(TCP、HTTP/1.1 over TLS)
VNC Web 控制台:5900-5999(TCP、WebSocket)
SPICE 代理:3128 (TCP)
sshd(⽤于集群操作):22 (TCP)rpcbind: 111 (UDP)
发送邮件:25(TCP,传出)corosync 集群流量:5404、5405 UDP
实时迁移(VM 内存和本地磁盘数据):60000-60050 (TCP)