firewalld:按策略匹配哪个区域

firewalld:按策略匹配哪个区域

我有以下与该问题相关的区域。

  • 半信任和
  • 民众

我想将 IPSEC 加密流量(来自某些特定 IP 地址)视为属于 SemiTrusted。

在 iptables 中,我将使用策略匹配来使用半信任链。

我该如何使用firewalld实现这一点。我在firewalld手册页中没有看到任何关于策略的提及,也没有看到如何根据firewalld.richlanguage(5)中的ipsec策略进行匹配。

我假设我可以使用firewalld.direct(5),但我不知道如何将它与其他基于firewalld.zone(5)的配置集成。

编辑:说清楚点,我不想在 SemiTrusted 区域打开 ipsec 端口。这很简单。

答案1

您不需要为此制定直接规则;firewalld 已经有 IPsec 的服务定义。

firewall-cmd --zone=SemiTrusted --add-service=ipsec

该定义允许所有 AH、ESP 和 UDP 端口 500 流量。

如果任一端具有 NAT,则需要第二条规则,并且您需要添加 UDP 端口 4500:

firewall-cmd --zone=SemiTrusted --add-port=4500/udp

答案2

我对中间区域做过类似的事情:

# first allow 500/udp, 4500/udp, AH and ESP on incoming interface
firewall-cmd --permanent --zone=public --add-service=ipsec

# traffic from our specific IPs
firewall-cmd --permanent --new-zone=OurIps
firewall-cmd --permanent --zone=OurIps --add-source=a.b.c.d/29

# little hack to ensure zone SemiTrusted active and relevant chains are in iptables
firewall-cmd --permanent --new-ipset=empty --type=hash:ip
firewall-cmd --permanent --new-zone=SemiTrusted
firewall-cmd --permanent --zone=SemiTrusted --add-source=ipset:empty

# rule to forward incoming IPsec traffic from OurIps zone to SemiTrusted zone
firewall-cmd --permanent --direct --add-rule ipv4 filter IN_OurIps 0 -m policy --pol ipsec --dir in -g IN_SemiTrusted

# and... have fun
firewall-cmd --reload

当然,您可以通过显式子网或 ipset 管理 OurIps 中的 IP。

相关内容