我已经阅读并重读了手册页,但我仍然对防火墙区域感到困惑。
我对在匹配流量到区域机制中使用了哪些区域配置元素以及哪些区域配置元素仅用于定义分配区域后发生的情况感到困惑。
例如,我相信interfaces
在匹配中使用;如果一个区域有一个接口,并且没有定义其他配置,我相信它将是该接口上任何流量的选定区域(假设它是第一个匹配的区域)。区域有一个“目标”属性,它指定当数据包不匹配时会发生什么。
%%REJECT%% 目标用于在阻止区域中拒绝(使用默认的 Firewalld 拒绝类型)每个不匹配任何规则的数据包。 https://firewalld.org/documentation/zone/options.html
这就是我感到困惑的地方:它暗示一些配置用于选择一个区域应用,而其他则用于确定是否存在匹配。我不清楚什么时候使用哪个。
例子:
假设我的面向互联网的接口是eth0
,并且我在端口 123/tcp 上运行本地服务。如果我block
使用以下方式配置区域
- 接口:eth0
- 来源:地址=1.2.3.4
- 目标:%%REJECT%%
我有一个other
区域
- 接口:eth0
- 来源:地址=1.2.3.4
- 端口:123/tcp
- 目标:接受
现在,如果流量从 1.2.3.4 进入端口 123,那么适用哪个区域?block
或者other
?
我认为是block
因为防火墙按字母顺序考虑它们,并且匹配。但这意味着数据包匹配,因此target
仅适用于“每个不匹配任何规则的数据包”的规则不适用?那么它被接受了吗?
如果该区域正在被使用,那么必须匹配,对吧?(除非没有区域匹配,因此使用 DefaultZone。但这似乎不是标准区域配置所暗示的。)
如果我将其重命名other
为another
(按字母顺序排列block
),那么流量将被接受,不是因为 target=ACCEPT,而是因为源/端口匹配?
那么以下哪一个:
- 接口:
- 来源:
- 服务:
- 端口:
- 协议:
- 转发端口:
- 源端口:
- icmp 阻止:
- 丰富的规则:
用于选择区域哪一个用于确定如果现在在区域中的数据包匹配该做什么?
如有任何解释,我们将不胜感激!
答案1
- 只有来源和界面用于确定区域。
- 源定义区域被首先考虑。
- 如果该区域有“丰富的规则”并且任何适用的话,则允许(或者,如果富人规则这么说,则拒绝等)。
- 如果是 ICMP,请使用这些规则来决定是否接受。
- 如果区域的所有其他规则(端口、源端口、服务、协议)匹配,则接受。
- 如果不是,并且该区域的目标是“默认”:找到接口定义区域匹配的(如果不匹配,则使用配置的 DefaultZone)。重复步骤 3-5
- 如果规则不满足且目标是 ACCEPT|%%REJECT%%|DROP,则执行该操作。
- 最后,规则不匹配的 target='default' 区域将获得默认处理,即允许 ICMP,而拒绝其余区域。
在流程图中