温馨提示×

centos防火墙怎么批量管理

小樊
34
2026-10-26 09:33:58
栏目: 智能运维

在 CentOS 上“批量管理防火墙”通常有三种常见场景,我分别说明,你可以按需要选择。


一、单机批量管理(firewalld 命令层面)

适用于:一台 CentOS 服务器,需要一次性加很多规则

1. 使用 firewall-cmd 批量添加端口

for port in 80 443 8080 9000; do
  firewall-cmd --permanent --add-port=${port}/tcp
done
firewall-cmd --reload

2. 批量添加 IP 白名单

for ip in 192.168.1.10 192.168.1.11 10.0.0.5; do
  firewall-cmd --permanent --add-source=${ip}
done
firewall-cmd --reload

3. 批量放行服务

for svc in http https ssh; do
  firewall-cmd --permanent --add-service=${svc}
done
firewall-cmd --reload

二、使用 Rich Rule 批量管理(更精细)

适合:按 IP + 端口 + 协议控制

for ip in 192.168.1.0/24 10.0.0.0/8; do
  firewall-cmd --permanent --add-rich-rule="
    rule family=ipv4
    source address=${ip}
    port protocol=tcp port=3306
    accept"
done
firewall-cmd --reload

查看规则:

firewall-cmd --list-all
firewall-cmd --list-rich-rules

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

适用于:几十上百台服务器

方案 1:Ansible(最推荐)

- hosts: centos
  tasks:
    - name: allow ports
      firewalld:
        port: "{{ item }}"
        permanent: yes
        state: enabled
      loop:
        - 80/tcp
        - 443/tcp
        - 8080/tcp
      notify: reload firewalld

  handlers:
    - name: reload firewalld
      service:
        name: firewalld
        state: reloaded

运行:

ansible-playbook firewall.yml

✅ 优点:可审计、可回滚、适合生产环境


方案 2:Shell + SSH 批量执行

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

方案 3:配置管理统一下发(企业级)

  • SaltStack
  • Puppet
  • Chef

适合大规模、强一致性环境。


四、直接改配置文件(不推荐但可用)

CentOS 7/8:

/etc/firewalld/zones/public.xml

改完执行:

firewall-cmd --reload

⚠️ 容易改错,不建议手工频繁改。


五、常见建议

  • 生产环境 一定要加 --permanent
  • 改完务必 --reload
  • SSH 端口千万别锁死自己
  • 批量操作前先在一台测试机验证

如果你能告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是单机还是多机
  • 想“按 IP / 端口 / 服务”哪种维度管理

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

0 踩