防火墙,仅允许来自不同区域的特定 IP 的 SSH

防火墙,仅允许来自不同区域的特定 IP 的 SSH

我的目标是为 172.26.143.0/24 上的每个客户端提供 ldap,但 SSH 只能在 172.26.143.3 上使用。我尝试了以下方法:

# This is where eth0 is and no services/ports are assigned to this zone:
firewall-cmd --set-default-zone=drop
firewall-cmd --zone=internal --add-source=172.26.143.0/24 --permanent
firewall-cmd --zone=internal --add-service=ldap --permanent
firewall-cmd --zone=trusted --add-source=172.26.143.3 --permanent
firewall-cmd --zone=trusted --add-service=ssh --permanent
firewall-cmd --reload

使用此配置,172.26.143.3 无法通过 SSH 连接到此主机。除非我将 ssh-service 添加到 zone=internal,但我并不需要这样做。我该如何实现这一点?

答案1

具体答案是创建一个丰富的规则(我认为直接规则也可以起作用),因为它们都在源和接口之前进行评估。

firewall-cmd --permanent --zone=trusted --add-rich-rule='rule family=ipv4 source address=172.26.143.3 accept'

它不起作用的原因是内部区域和受信任区域中的源定义重叠。这是防火墙的一个弱点/烦恼/错误(?),其中不允许源重叠。它可以工作,但它取决于当有这样的重叠时防火墙评估区域的顺序。我没有看过代码,但有些解释说当有重叠时,区域按字母顺序评估,而在其他地方则基于规则定义的顺序。无论哪种方式,在您的示例中,内部区域都会拾取 SSH 流量并将其丢弃。

相关内容