7.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
参数时,规则首先按其优先级值以升序排序。当更多的规则有同样的 优先级
时,其顺序是由规则行动决定的,如果行动也相同,则顺序可以是未定义。
7.11.1. priority 参数如何将规则组织到不同的链 复制链接链接已复制到粘贴板!
您可以在富规则中将 priority
参数设置为 -32768
和 32767
之间的任意数,较低的数值具有较高的优先级。
firewalld
服务根据优先级值将规则组织到不同的链中:
-
优先级低于 0:规则被重定向到带有
_pre
后缀的链中。 -
优先级高于 0:规则被重定向到带有
_post
后缀的链中。 -
优先级等于 0:根据操作,规则会被重定向到带有
_log
、_deny
或_allow
操作的链中。
在这些子链中,firewalld
根据其优先级值对规则进行排序。
7.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