温馨提示×

CentOS CMATRIX防火墙配置技巧

小樊
40
2026-01-10 10:46:08
栏目: 智能运维

CentOS 防火墙配置技巧

一 工具选择与版本差异

  • 你可能指的是 CentOS 的防火墙(常被误写为“CMATRIX”)。自 CentOS 7 起,默认使用 firewalld 管理防火墙;更早的 CentOS 6 通常使用 iptables 服务与脚本。两者差异在于:firewalld 基于“区域(zone)+ 服务(service)”的动态管理,支持运行时与永久配置分离;iptables 则是直接操作内核规则表,规则变更需保存并重启服务。远程维护时务必先确保 SSH 端口(22/TCP) 处于放行状态,避免断连。

二 firewalld 高效配置要点

  • 基础启停与状态
    • 启动/停止/重启/开机自启:systemctl start|stop|restart|enable firewalld
    • 查看状态:systemctl status firewalldfirewall-cmd --state
  • 查看与理解规则
    • 查看活动区域与接口:firewall-cmd --get-active-zones
    • 查看某区域规则:firewall-cmd --zone=public --list-all
    • 查看预定义服务:firewall-cmd --get-services
  • 开放端口与服务
    • 开放单端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
    • 开放端口段:firewall-cmd --zone=public --add-port=10000-10010/tcp --permanent
    • 按服务放行:firewall-cmd --zone=public --add-service=http --permanent
    • 使永久规则生效:firewall-cmd --reload
  • 精细化控制
    • 源 IP 白名单端口:firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="3306" protocol="tcp" accept' --permanent
    • 拒绝某源访问:firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="198.51.100.5" reject' --permanent
  • 日志与排错
    • 记录被拒绝的数据包:firewall-cmd --set-log-denied=all
    • 查看日志:grep 'firewalld' /var/log/messages
  • 提示
    • 使用 --permanent 写入持久配置,变更后用 --reload 生效;临时测试可省略 --permanent(重启或 firewalld 重载后失效)。

三 仍在使用 iptables 时的要点

  • 安装与启停(若未安装):yum install -y iptables-services,随后 systemctl start|enable iptables
  • 放行端口示例:iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
  • 保存与持久化
    • RHEL/CentOS 6:service iptables save
    • CentOS 7 使用 iptables-services:/etc/init.d/iptables save
  • 关闭与开机自启控制:service iptables stopchkconfig iptables off
  • 远程操作务必保留 22/TCP,避免锁死。

四 实战配置范例

  • 场景:公网环境仅开放 SSH(22/TCP)HTTP(80/TCP),对 192.168.1.0/24 网段开放 3306/TCP(MySQL),其余默认拒绝;同时记录被拒绝的数据包。
  • 操作步骤(firewalld)
    1. 启动与开机自启:systemctl start firewalld && systemctl enable firewalld
    2. 放行基础服务:firewall-cmd --permanent --add-service=ssh--add-service=http
    3. 源网段放行数据库:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
    4. 记录拒绝日志:firewall-cmd --set-log-denied=all
    5. 生效:firewall-cmd --reload
    6. 校验:firewall-cmd --list-all(应看到 services 含 ssh、http;rich rules 含 3306 的源网段放行;log-denied 为 all)

五 安全与排错清单

  • 原则
    • 最小权限:仅开放业务必需端口与服务;能用“服务名”就不用“端口号”;变更前先 list-all 核对。
    • 持久化:带 --permanent 后记得 --reload;变更失败回滚前先备份当前规则。
    • 远程维护:先放行 22/TCP,必要时通过 控制台/VNC 兜底。
  • 快速排错
    • 规则是否生效:firewall-cmd --list-all / --list-ports / --list-services
    • 被拒原因:开启 log-denied 并查 /var/log/messages
    • 区域与接口:firewall-cmd --get-active-zones,确认网卡绑定到预期 zone
    • 服务管理:systemctl status firewalld,必要时 restartreload

0