我想了解来自 Iptables 的 FirewallD。
我的区域是drop
没有任何服务的默认区域。
drop (active)
target: DROP
icmp-block-inversion: no
interfaces: enp9s0u2u1u2c2
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
向该区域添加源 ip 有什么意义?
- 我添加了所有本地 IP
firewall-cmd --add-source=192.168.0.0/16
即使来自此源 IP 之一,它仍然会丢弃所有数据包。
向此区域添加服务将允许任何人访问此服务,无论我设置什么源 IP。
如何限制服务并只允许服务使用单个 IP(或范围)?
与 iptables 相比,firewalld 的行为根本不是很清楚。有很多假设和未知的默认行为。
来自FirewallD 文档:
因此,您告诉 FirewallD,该
drop
区域现在将专门适用于来自 192.168.0.0/16 的流量,而不适用于其他任何地方。我不确定来自该 IP 范围之外的任何流量会发生什么。(像这样修改默认drop
区域可能不是一个好主意。)将服务添加到区域通常意味着对于配置到该区域的任何接口,对于任何源 IP 地址,始终允许指定的服务。如果一个区域没有启用服务,它将禁止所有流量。我没有尝试将源 IP 地址添加到区域,所以我不知道正常行为如何与之交互。
为了实现你想要的,你可能应该创建一个新区域,并为你想要的服务添加一个丰富的规则:
现在,如果您为该区域分配一个网络接口
allow-limited-<service>
,它将只允许<service>
来自 192.168.0.0/16 的服务(可能包括一个或多个 TCP 和/或 UDP 端口),并阻止其他一切。区域实际上是一组预定义的防火墙规则,您可以轻松地将其应用于任何特定的网络接口。一个网络接口一次只能分配给一个区域。
FirewallD 逻辑似乎是为企业/ISP/主机提供商使用量身定制的,其中可能有单独的 VLAN 接口,如果企业从与以前的范围完全不同的范围内获得新的 IP 块,IP 地址分配可能会发生巨大变化。在这样的环境中,您可以根据用途将防火墙规则绑定到(VLAN 或物理)接口,而不是 IP 地址。