温馨提示×

centos防火墙如何批量管理

小樊
49
2026-10-17 12:03:52
栏目: 智能运维

在 CentOS 中,“防火墙批量管理”通常指 批量开放/关闭端口、批量配置规则、或在多台服务器上统一管理防火墙。下面按常见场景给你一套实用方案。


一、单台 CentOS 上的批量管理(firewalld)

CentOS 7/8/Stream 默认使用 firewalld。

1. 批量开放端口

ports=(80 443 8080 9000 10000)
for p in ${ports[@]}; do
  firewall-cmd --permanent --add-port=${p}/tcp
done
firewall-cmd --reload

2. 批量开放服务

services=(http https ssh)
for s in ${services[@]}; do
  firewall-cmd --permanent --add-service=$s
done
firewall-cmd --reload

3. 批量限制 IP(白名单)

ips=("192.168.1.10" "192.168.1.11")
for ip in ${ips[@]}; do
  firewall-cmd --permanent --add-source=$ip
done
firewall-cmd --reload

4. 批量删除规则

ports=(8080 9000)
for p in ${ports[@]}; do
  firewall-cmd --permanent --remove-port=${p}/tcp
done
firewall-cmd --reload

二、使用 rich-rule 批量管理(更精细)

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

四、多台 CentOS 批量管理(重点)

方案 1:Shell + SSH(简单)

for host in node1 node2 node3; do
  ssh $host "firewall-cmd --permanent --add-port=80/tcp; firewall-cmd --reload"
done

方案 2:Ansible(推荐)

- 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

五、CentOS 6(iptables)批量方式

for p in 80 443 8080; do
  iptables -A INPUT -p tcp --dport $p -j ACCEPT
done
service iptables save

六、最佳实践建议

  • 生产环境:优先 firewalld + Ansible
  • 变更前先 --permanent,确认无误再 --reload
  • 重要服务器保留 SSH 白名单
  • 可结合 jump server / 堡垒机 管理

如果你能说明:

  • CentOS 版本
  • 单机还是集群
  • 是否需要 Web 管理 / 自动化平台

我可以直接给你一套 可复制的脚本或 Ansible Playbook。

0 踩