我提出了一种基于角色的设计,用于使用 Saltstack 配置我的防火墙区域。
实际上,我更多地将区域用作逻辑组。例如,某个组中的所有服务器都被允许访问Grafana/Influx服务器(用于将其数据流式传输到该服务器)。
所以我有一个名为 firewalld 的区域influx_group
,所有源都会根据它们的角色自动添加到该区域。
其中一个服务器是 openvpn 服务器,它也应该添加到组internal
中以进行 SSH 访问。然后是 firewall-cmd 命令给我一个错误。
firewall-cmd --add-source=1.1.1.1 --zone=internal
Error: ZONE_CONFLICT: '1.1.1.1' already bound to a zone
这可以通过丰富的规则来解决吗?
更新 1
可以通过向默认区域添加丰富的规则来解决最简单形式的问题:
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="1.1.1.1" port port="22" protocol="tcp" accept'
但是,这并不能解决客户端/服务器与服务器/客户端关系和/或组的设计概念。因为没有通用的方法来决定定义组中的某些来源何时会发生冲突。并且简单地基于冲突有条件地在默认区域中删除规则,完全扼杀了基于服务关系的分组的细粒度控制。
TL;博士
我选择这个基于组的设置能够进行完整的动态配置。它基于整个基础架构中的客户端/服务器或服务器/客户端关系。因此,许多其他服务组合也存在冲突。
将源组合/分组到更高级别的区域会破坏我对这种粒度级别的目标。因此将更多端口组合到相同的区域中,冒着访问不应该访问的端口的风险。
有人对此有任何见解吗?
谢谢!