41.11. 丰富规则的优先级
富规则提供了一种更高级且更灵活的方法来定义防火墙规则。当服务、端口等服务不足以表达复杂的防火墙规则时,富规则特别有用。
富规则背后的概念:
- 粒度和灵活性
- 您可以根据更具体的标准为网络流量定义详细的条件。
- 规则结构
富规则由一个系列(IPv4 或 IPv6)组成,后跟条件和操作。
rule family="ipv4|ipv6" [conditions] [actions]
rule family="ipv4|ipv6" [conditions] [actions]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - conditions
- 它们允许富规则仅在某些条件满足时才应用。
- 操作
- 您可以定义对符合条件的网络流量发生什么。
- 组合多个条件
- 您可以创建更具体和更复杂的过滤。
- 分层控制和可重复使用
- 您可以将丰富的规则与其他防火墙机制(如区域或服务)相结合。
默认情况下,富规则是根据其规则操作进行组织的。例如,deny 规则优先于 allow 规则。富规则中的 priority 参数可让管理员对富规则及其执行顺序进行精细的控制。在使用 priority 参数时,规则首先按其优先级值以升序排序。当更多的规则有同样的 优先级 时,其顺序是由规则行动决定的,如果行动也相同,则顺序可以是未定义。
41.11.1. priority 参数如何将规则组织到不同的链 复制链接链接已复制到粘贴板!
您可以在富规则中将 priority 参数设置为 -32768 和 32767 之间的任意数,较低的数值具有较高的优先级。
firewalld 服务根据优先级值将规则组织到不同的链中:
-
优先级低于 0:规则被重定向到带有
_pre后缀的链中。 -
优先级高于 0:规则被重定向到带有
_post后缀的链中。 -
优先级等于 0:根据操作,规则会被重定向到带有
_log、_deny或_allow操作的链中。
在这些子链中,firewalld 根据其优先级值对规则进行排序。
41.11.2. 设置丰富的规则的优先级 复制链接链接已复制到粘贴板!
以下是如何创建一条富规则的示例,该规则使用 priority 参数来记录其他规则不允许或拒绝的所有流量。您可以使用此规则标记意非预期的流量。
流程
添加一个带有非常低优先级的丰富规则来记录未由其他规则匹配的所有流量:
firewall-cmd --add-rich-rule='rule priority=32767 log prefix="UNEXPECTED: " limit value="5/m"'
# firewall-cmd --add-rich-rule='rule priority=32767 log prefix="UNEXPECTED: " limit value="5/m"'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令还将日志条目数量限制为每分钟
5条。
验证
显示命令在上一步中创建的
nftables规则:Copy to Clipboard Copied! Toggle word wrap Toggle overflow