今天发现一台测试服务器的防火墙规则很乱,使用firewall-cmd --list-all
出现如下输出:
[root@vultr ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client http https ssh ports: 55698/tcp 58407/tcp 37463/tcp 40161/tcp 40161/udp 52124/tcp 52124/udp 21064/tcp 21064/udp 26579/tcp 26579/udp 21568/tcp 21568/udp 62373/tcp 8153/tcp 8153/udp 31481/tcp 31481/udp 42223/tcp 42223/udp 48409/tcp 48409/udp 16342/tcp 16342/udp 4621/tcp 4621/udp 59920/tcp 59920/udp 36181/tcp 36181/udp 63850/tcp 63850/udp 19177/tcp 15603/tcp 10216/tcp 44644/tcp 44644/udp 3784/tcp 3784/udp 39575/tcp 39575/udp 53245/tcp 53245/udp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
其中许多规则都是临时添加,之后再没用到过。
遗憾的是firewall-cmd
没能提供和iptables -F
一样清空规则的功能,因此需要使用其他办法清空防火墙端口规则。
本人使用的清空规则命令如下:
[root@vultr ~]# firewall-cmd --permanent --list-all | grep ports | head -n 1 | \ cut -d: -f2 | tr ' ' '\n' | xargs -I {} firewall-cmd --permanent --remove-port={} success success success ....
需要注意的是,我们使用 --permanent
参数删除,防止给现有业务带来影响。
清空规则后,再添加必要的端口:
[root@vultr ~]# firewall-cmd --permanent --add-port=xxx/tcp
然后,就可以放心的重新加载防火墙规则:
[root@vultr ~]# firewall-cmd --reload
再次查看防火墙规则列表,无用的规则都移除了,又回到了清爽的状态:
[root@vultr ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client http https ssh ports: 55698/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
发表回复