在 CentOS 中,“防火墙批量管理”通常指 批量开放/关闭端口、批量配置规则、或在多台服务器上统一管理防火墙。下面按常见场景给你一套实用方案。
CentOS 7/8/Stream 默认使用 firewalld。
ports=(80 443 8080 9000 10000)
for p in ${ports[@]}; do
firewall-cmd --permanent --add-port=${p}/tcp
done
firewall-cmd --reload
services=(http https ssh)
for s in ${services[@]}; do
firewall-cmd --permanent --add-service=$s
done
firewall-cmd --reload
ips=("192.168.1.10" "192.168.1.11")
for ip in ${ips[@]}; do
firewall-cmd --permanent --add-source=$ip
done
firewall-cmd --reload
ports=(8080 9000)
for p in ${ports[@]}; do
firewall-cmd --permanent --remove-port=${p}/tcp
done
firewall-cmd --reload
ips=("10.0.0.1" "10.0.0.2")
for ip in ${ips[@]}; do
firewall-cmd --permanent --add-rich-rule="
rule family=ipv4
source address=$ip
port port=3306 protocol=tcp
accept"
done
firewall-cmd --reload
firewalld 规则文件在:
/etc/firewalld/zones/public.xml
示例(批量端口):
<zone>
<port protocol="tcp" port="80"/>
<port protocol="tcp" port="443"/>
<port protocol="tcp" port="8080"/>
</zone>
修改后:
firewall-cmd --reload
for host in node1 node2 node3; do
ssh $host "firewall-cmd --permanent --add-port=80/tcp; firewall-cmd --reload"
done
- hosts: all
tasks:
- firewalld:
port: "{{ item }}"
permanent: yes
state: enabled
loop:
- 80/tcp
- 443/tcp
- 8080/tcp
- firewalld:
service: ssh
permanent: yes
state: enabled
执行:
ansible-playbook firewall.yml
for p in 80 443 8080; do
iptables -A INPUT -p tcp --dport $p -j ACCEPT
done
service iptables save
--permanent,确认无误再 --reload如果你能说明:
我可以直接给你一套 可复制的脚本或 Ansible Playbook。