我想出了一个基于角色的设计,用Saltstack来配置我的防火墙区域。
实际上,我更多地将区域用作逻辑组。例如,特定组中的所有服务器都允许访问Grafana/inflow服务器(用于将数据流式传输到该服务器)。
因此,我有一个名为influx_group
的防火墙区域,所有源都根据其角色自动添加到该区域。
其中一个服务器是openvpn服务器,它也应该添加到组internal
中以进行SSH访问。然后是防火墙-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'
然而,这并不能解决客户机/服务器vs服务器/客户机关系和/或组的设计概念。因为没有通用的方法来决定特定组中的某些源何时会发生冲突。简单地基于冲突有条件地删除默认区域中的规则,完全破坏了基于服务关系的分组的细粒度控制。
TL;博士
我选择这个基于组的设置,以便能够进行完全的动态配置。它基于整个基础设施中的客户机/服务器或服务器/客户机关系。因此,许多其他服务组合也存在冲突。
将源组合/分组到更高级别的区域违背了我对这个级别粒度的目标。因此,将更多的端口合并到相同的区域中,冒着访问不应该访问的端口的风险。
有人对此有什么见解吗?
谢谢!
接口(网络接口卡)和源(具有专用ip地址的机器)只能绑定到一个区域。就是这样。在不同程度的敌对环境中不可能找到同一组源,这是有意义的。此外,这种设置有助于水平或水平防御。您应该仔细阅读了解Linux防火墙在多区域配置
将接口设置为更严格的区域,该区域可能是公共的。然后将信任级别的资源加入相应的安全区域。检查这些特定源在区域内必须可用的服务和端口。
它们都是活动的。源区域具有优先级。如果源不匹配,则应用接口规则。如果接口区域没有按照接口区域的缺省目标来处理流量,则会被丢弃、拒绝等。请务必阅读链接