Proxmox VE软件防火墙的配置
1 软件防火墙
1.1 基本概念
防火墙是计算机网络中用于保护网络安全的关键技术。防火墙可以是硬件设备部署在网络出口,也可以是软件部署在终端设备出口。本文主要介绍软件防火墙。
软件防火墙可以根据网络流量的方向(进/出),以及报文中的源IP地址、目的地址、协议、源端口和目的端口等字段信息进行匹配,并采取相应的处理动作(接受、拒绝或丢弃)。
通过设置防火墙规则,可以限制或允许特定的网络流量进入或离开网络。例如,可以设置规则以允许特定IP地址或端口的合法传输,而拒绝来自未知或不信任来源的通信。这样可以有效地保护网络免受未经授权的访问、恶意攻击或不良内容的侵扰。
软件防火墙的优势在于它可以部署在各个终端设备上,为每个设备提供独立的保护。同时,软件防火墙可以随着网络环境的变化进行灵活调整和更新,以适应不断演变的安全威胁。
总之,软件防火墙是一种重要的网络安全技术,它通过匹配网络流量的特征信息并采取相应的处理动作,有效地保护计算机网络免受潜在的安全威胁。
1.2 防火墙方向(IN和OUT):
IN(进)方向指的是数据从外部网络流入到内部网络,也称为入站流量。
OUT(出)方向指的是数据从内部网络流出到外部网络,也称为出站流量。
若有多个网络接口,每个接口防火墙均可设置独立的规则,可以实现根据数据流的方向来进行处理和控制,以限制或允许特定的流量进出网络。
1.3 原IP地址(Source IP)和目的地址(Destination IP):
原IP地址(Source IP)是指发送数据的源IP地址,用于标识数据的来源。
目的地址(Destination IP)是指接收数据的目标IP地址,用于标识数据的去向。 防火墙可以基于源IP地址和目的IP地址来判断数据流的合法性,例如允许或拦截特定的IP地址。
1.4 协议(Protocol):
防火墙可以根据协议类型来进行处理和控制,常见的有协议TCP、UDP、ICMP、IGMP、GGP等。
1.5 源端口(Source Port)和目的端口(Destination Port):
通常在传输层协议TCP和UDP中才具有端口号。
源端口(Source Port)是指发送数据的源端口号,用于标识数据的来源应用或服务。
目的端口(Destination Port)是指接收数据的目标端口号,用于标识数据的去向应用或服务。 防火墙可以根据源端口和目的端口来限制或允许特定的应用或服务通信。
1.6 三种处理动作(ACCEPT、REJECT、DROP):
接受(ACCEPT)表示防火墙允许通过匹配的数据流进入或离开网络。
拒绝(REJECT)表示防火墙明确告知发送方数据流被拒绝,并发送错误消息给发送方。
丢弃(DROP)表示防火墙默默地丢弃匹配的数据流,不发送任何错误消息。 防火墙可以根据配置规则对数据流采取不同的处理动作,用于控制网络流量的通过或拒绝。
2 防火墙策略设计
为了安全考虑,对外端口越少越好,但是又要方便管理员管理。比如某内网DNS服务器,开发DNS、SSH等服务,部署在内网10.0.0.1/8中,只对内网网段开放UDP:53端口和ICMP回显,对管理员网段10.254.254.0/24则不做限制,其策略如下表。
表 1 防火墙策略
方向 |
源IP |
目的IP |
协议 |
源端口 |
目的端口 |
动作 |
备注 |
IN |
10.0.0.0/8 |
ALL |
UDP |
ALL |
53 |
ACCEPT |
对内网开放DNS服务 |
IN |
10.0.0.0/8 |
ALL |
ICMP |
- |
- |
ACCEPT |
对内网开放ICMP协议 |
IN |
10.254.254.0/24 |
ALL |
ALL |
ALL |
ALL |
ACCEPT |
对管理员IP不做限制 |
OUT |
ALL |
ALL |
ALL |
ALL |
ALL |
ACCEPT |
默认出接口策略不限制 |
IN |
ALL |
ALL |
ALL |
ALL |
ALL |
DROP |
默认进接口 |
3 PVE防火墙
Proxmox VE虚拟平台自带一个pve-firewall.service服务,其本质是调用iptables模块,当防火墙配置错误导致无法连接设备,可以使用systemctl stop pve-firewall.service或者pve-firewall stop停止其服务,只需要在WEB后台中进行简单的设置,就可以对流量。后续将Proxmox VE,简称为PVE。
3.1 防火墙设置
在PVE中,支持为所有的集群、节点、虚拟机单独设置防火墙。防火墙默认情况下是关闭的状态,在开启之前请注意先添加放行自己所使用IP规则,否则可能无法进入PVE WEB后台。
图 1 PVE中集群、节点、虚拟机之间的关系
3.1.1 集群设置防火墙
通常情况下设置集群防火墙策略即可,所有的节点都会生效。在“防火墙”->“选项”中候选防火墙。
图 2 集群设置防火墙
3.1.2 节点设置防火墙
如果某节点需要特殊设置权限,可以设置节点防火墙,从而覆盖集群防火墙的设置。在“防火墙”->“选项”中候选防火墙。
图 3节点设置防火墙
3.1.3 虚拟机、容器设置防火墙
在“防火墙”->“选项”中候选防火墙。
图 4 虚拟机、容器设置防火墙
请注意需要在虚拟机或者LXC容器的网卡中开启防火墙设置,否则将不生效。
若为虚拟机,需在“硬件”中“网络设备”选择所需的网卡勾选“防火墙”。
图 5 虚拟机开启网卡防火墙
若为LXC容器,需在“网络”中选择所需的网卡勾选“防火墙”。
图 6 LXC容器开启网卡防火墙
3.2 地址池IPSet
PVE防火墙策略和iptables一样,源IP、目的IP可以直接写IP地址和网段,也可以使用IPSet定义地址池,通常直接定义地址池,若后续需要修改策略IP地址,可以修改直接在IPSet中修改,或是因为不同网段需要重复写策略的尴尬情况。
图 7 IPSet地址池
集群和虚拟机都可以单独设置IPSet,节点则不能,一般情况在集群中配置IPSet,在虚拟机中引用即可。
3.3 防火墙策略
PVE中集群、节点、虚拟机均可设置单独的防火墙策略,范围越小规则越优先。
3.3.1 直接添加策略
依据方向、IP地址、端口、协议,可以完成配置
图 8 添加防火墙策略
图 9 添加策略匹配规则
3.3.2 防火墙安全群组
与直接添加策略类似,安全群组其实是若干个策略的合集,以方便复用。
图 10 安全群组
图 11 添加安全群组
3.3.3 防火墙默认策略
通常防火墙的默认策略为IN方向进行DROP;OUT方向ACCEPT。
图 12 防火墙默认策略
3.4 防火墙配置文件
防火墙的所有的配置文件保存在节点/etc/pve/firewall/目录下,cluster.fw文件为集群的配置,所有的节点会自动同步,节点下的虚拟机、容器配置文件则保存在<VMID>.fw文件。修改配置文件和在WEB界面中修改效果一致,当有大量策略需要编辑、新增,修改配置文件通常更快速。
图 13 配置文件
更新备注:
2023年8月02日 首发
2023年8月29日 添加部分图解、安全群组部分