如何使用firewall-cmd工具(新firewalld)创建防火墙规则,以便限制特定网络仅访问一项服务并允许一个区域内的所有服务。
例如:
我只有一个接口 eno1,它与公共区域关联。该区域启用了 Http 和 https 服务。我想在该区域启用 ssh 访问,但我想将 ssh 访问限制到网络(例如 100.0.0.0/8)
做这个的最好方式是什么?
答案1
我寻找答案,但发现许多与我自己相关的问题都没有答案。
经过大量研究,我想到了一个解决方法。以下是我所做的
我将接口添加到公共区域
然后
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="x.x.x.x/x" service name="ssh" log prefix="ssh" level="info" accept'
sudo firewall-cmd --reload
注意:源地址可以是范围。只需指定网络掩码即可
由于公共区域未添加 ssh,因此默认情况下它将被阻止。 rich 规则将仅为该源 ip 启用它。
有任何更好的解决方案请添加。