7.9. 在区域间过滤转发的流量
firewalld
可让您控制不同 firewalld
区域之间的网络数据流。通过定义规则和策略,您可以管理流量在这些区域之间移动时是如何被允许或被拒绝的。
策略对象功能在 firewalld
中提供转发和输出过滤。您可以使用 firewalld
过滤不同区域之间的流量,以允许访问本地托管的虚拟机来连接主机。
7.9.1. 策略对象和区域之间的关系 复制链接链接已复制到粘贴板!
策略对象允许用户将 firewalld 的原语(如服务、端口和富规则)附加到策略。您可以将策略对象应用到以有状态和单向的方式在区域间传输的流量上。
firewall-cmd --permanent --new-policy myOutputPolicy firewall-cmd --permanent --policy myOutputPolicy --add-ingress-zone HOST firewall-cmd --permanent --policy myOutputPolicy --add-egress-zone ANY
# firewall-cmd --permanent --new-policy myOutputPolicy
# firewall-cmd --permanent --policy myOutputPolicy --add-ingress-zone HOST
# firewall-cmd --permanent --policy myOutputPolicy --add-egress-zone ANY
HOST
和 ANY
是 ingress 和 egress 区域列表中使用的符号区域。
-
HOST
符号区域对于来自运行 firewalld 的主机的流量,或具有到运行 firewalld 的主机的流量允许策略。 -
ANY
符号区对所有当前和将来的区域应用策略。ANY
符号区域充当所有区域的通配符。
7.9.2. 使用优先级对策略进行排序 复制链接链接已复制到粘贴板!
多个策略可以应用到同一组流量,因此应使用优先级为可能应用的策略创建优先级顺序。
要设置优先级来对策略进行排序:
firewall-cmd --permanent --policy mypolicy --set-priority -500
# firewall-cmd --permanent --policy mypolicy --set-priority -500
在上例中,-500 是较低的优先级值,但具有较高的优先级。因此,-500 将在 -100 之前执行。
较低数字的优先级值具有较高的优先级,被首先应用。
7.9.3. 使用策略对象过滤本地托管的容器和物理连接到主机的网络之间的流量 复制链接链接已复制到粘贴板!
策略对象功能允许用户过滤 Podman 和 firewalld 区域之间的流量。
红帽建议默认阻止所有流量,并打开 Podman 工具所需的可选择的服务。
流程
创建一个新的防火墙策略:
firewall-cmd --permanent --new-policy podmanToAny
# firewall-cmd --permanent --new-policy podmanToAny
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 阻止从 Podman 到其它区域的所有流量,并只允许 Podman 上必要的服务:
firewall-cmd --permanent --policy podmanToAny --set-target REJECT firewall-cmd --permanent --policy podmanToAny --add-service dhcp firewall-cmd --permanent --policy podmanToAny --add-service dns firewall-cmd --permanent --policy podmanToAny --add-service https
# firewall-cmd --permanent --policy podmanToAny --set-target REJECT # firewall-cmd --permanent --policy podmanToAny --add-service dhcp # firewall-cmd --permanent --policy podmanToAny --add-service dns # firewall-cmd --permanent --policy podmanToAny --add-service https
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个新的 Podman 区域:
firewall-cmd --permanent --new-zone=podman
# firewall-cmd --permanent --new-zone=podman
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为策略定义 ingress 区域:
firewall-cmd --permanent --policy podmanToHost --add-ingress-zone podman
# firewall-cmd --permanent --policy podmanToHost --add-ingress-zone podman
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为所有其他区域定义 egress 区域:
firewall-cmd --permanent --policy podmanToHost --add-egress-zone ANY
# firewall-cmd --permanent --policy podmanToHost --add-egress-zone ANY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 egress 区域设置为 ANY 意味着您可以从 Podman 过滤到其他区域。如果要过滤到主机,请将 egress 区域设置为 HOST。
重启 firewalld 服务:
systemctl restart firewalld
# systemctl restart firewalld
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证到其他区域的 Podman 防火墙策略:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.9.4. 设置策略对象的默认目标 复制链接链接已复制到粘贴板!
您可以为策略指定 --set-target 选项。可用的目标如下:
-
ACCEPT
- 接受数据包 -
DROP
- 丢弃不需要的数据包 -
REJECT
- 拒绝不需要的数据包,并带有 ICMP 回复 CONTINUE
(默认)- 数据包将遵循以下策略和区域中的规则。firewall-cmd --permanent --policy mypolicy --set-target CONTINUE
# firewall-cmd --permanent --policy mypolicy --set-target CONTINUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证有关策略的信息
firewall-cmd --info-policy mypolicy
# firewall-cmd --info-policy mypolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow