我有以下与该问题相关的区域。
- 半信任和
- 民众
我想将 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。