需求说明:
现有三台机器,系统都是centos7
192.168.100.100
192.168.100.101 开启防火墙firewalld,上面有web服务nginx,监听80端口
192.168.100.102
需要让192.168.100.102可以访问101机器的80端口,192.168.100.100不允许访问101的80端口
如何设置防火墙规则?
1.查看101上当前防火墙规则
firewall-cmd --list-all
#通过查看101机器的防火墙规则,发现已经开放了80端口,即执行了下面这句
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
此时任意能访问到101 ip的都可以访问nginx的web服务端口80
2.配置防火墙规则,限制指定ip-192.168.100.102访问指定端口80
关键点:移除现有的规则
# 移除现有规则 (此步骤相当重要,很多文章和博客都没提及到)
firewall-cmd --permanent --zone=public --remove-port=80/tcp
firewall-cmd --reload
# 在192.168.100.100 102上测试访问
curl 192.168.100.101
发现均无法再访问101的80端口
# 设置规则
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.102" port protocol="tcp" port="80" accept"
firewall-cmd --reload
# 测试访问
curl 192.168.100.101
# 100无法访问 102可以访问
至此实现了通过防火墙firewalld设置规则,指定ip访问指定端口
3.防火墙规则设置扩展内容
# 禁止指定ip 访问某个端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.200" port protocol="tcp" port="80" reject"
# 禁止某个段的ip 访问某个端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
# 允许指定ip 访问所有端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.100.100" port protocol="tcp" accept"
#
参考资料:
第2篇:Linux防火墙-firewalld的rich规则配置_firewalld rich rule_jiecy的博客-CSDN博客