温馨提示×

CentOS防火墙最佳实践分享

小樊
41
2025-11-27 18:31:09
栏目: 智能运维

CentOS 防火墙最佳实践

一 基础与工具选择

  • CentOS 7 及以上版本,优先使用 firewalld 进行动态规则管理,支持按 zone(区域) 划分策略,能在不重启服务的情况下调整规则,适配现代服务器运维。早期版本或特定场景可用 iptables,但需自行处理规则持久化与服务管理。生产环境建议保持防火墙长期开启并开机自启,变更前先备份与评估影响。

二 基线配置步骤

  • 启动与自启
    • 启动服务:sudo systemctl start firewalld
    • 开机自启:sudo systemctl enable firewalld
    • 查看状态:sudo systemctl status firewalld
  • 区域与接口
    • 查看活跃区域:firewall-cmd --get-active-zones
    • 设置默认区域:sudo firewall-cmd --set-default-zone=public
    • 绑定接口到区域:sudo firewall-cmd --zone=public --add-interface=eth0
  • 放行最小必要服务与端口
    • 放行 SSH:sudo firewall-cmd --permanent --zone=public --add-service=ssh
    • 放行 HTTP/HTTPS:sudo firewall-cmd --permanent --zone=public --add-service=http--add-service=https
    • 放行自定义端口:sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
    • 放行端口范围:sudo firewall-cmd --permanent --zone=public --add-port=10000-10010/tcp
  • 使配置生效
    • 重新加载:sudo firewall-cmd --reload
  • 常用查询
    • 查看区域规则:firewall-cmd --zone=public --list-all
    • 查询端口是否放行:firewall-cmd --zone=public --query-port=8080/tcp
  • 应急与回滚
    • 紧急阻断:sudo firewall-cmd --panic-on(排查后 sudo firewall-cmd --panic-off
    • 规则备份:拷贝或导出 /etc/firewalld/ 配置目录后再变更;必要时直接编辑区域文件(如 public.xml)并 sudo firewall-cmd --reload 使生效。

三 安全加固要点

  • 最小权限与默认拒绝
    • 仅开放业务必需端口与服务;对公网接口使用更严格的区域(如 public/drop),将管理口放入受控区域;必要时将默认区域设为 drop 并显式放行必要流量。
  • 源地址限制与精细放行
    • 对管理端口(如 22/TCP)或敏感服务,优先基于源 IP 白名单放行:
      • 单 IP:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" accept'
      • 子网:sudo firewall-cmd --permanent --zone=public --add-source=198.51.100.0/24
  • 关闭不必要服务与端口
    • 移除未使用的服务与端口(如不需要的 http):sudo firewall-cmd --permanent --zone=public --remove-service=http && sudo firewall-cmd --reload
  • 日志与审计
    • 启用被拒绝流量日志:sudo firewall-cmd --set-log-denied-all,并结合 rsyslog/SIEM 进行集中监控与告警。
  • 管理平面安全
    • 结合 SSH 安全策略(如禁用 root 直连、限制登录源、强口令/密钥登录)与防火墙一起使用,降低暴力破解与横向移动风险。

四 常见场景与命令示例

场景 命令示例
公网 Web 服务 sudo firewall-cmd --permanent --zone=public --add-service=http --add-service=https && sudo firewall-cmd --reload
管理口仅内网访问 sudo firewall-cmd --permanent --zone=internal --add-source=10.0.0.0/8 && sudo firewall-cmd --permanent --zone=internal --add-service=ssh && sudo firewall-cmd --reload
限制某 IP 访问某端口 sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="3306" protocol="tcp" accept' && sudo firewall-cmd --reload
批量放行端口段 sudo firewall-cmd --permanent --zone=public --add-port=10000-20000/tcp && sudo firewall-cmd --reload
临时封禁某网段 sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" drop' && sudo firewall-cmd --reload
端口转发/NAT(出口或端口映射) 启用伪装:sudo firewall-cmd --zone=public --add-masquerade --permanent;端口转发示例:sudo firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.10 && sudo firewall-cmd --reload
紧急阻断与恢复 sudo firewall-cmd --panic-on / sudo firewall-cmd --panic-off
以上命令均遵循“先永久后重载”的流程,变更后用 firewall-cmd --list-all 或按端口/源地址查询进行校验。

五 运维与变更管理

  • 变更流程
    • 评估与规划 → 备份当前规则/配置 → 在测试环境验证 → 生产窗口内执行 → sudo firewall-cmd --reload → 校验与留痕(变更单、命令日志)。
  • 规则维护
    • 定期审查与清理:删除过期/冗余规则,合并重复策略;对不再使用的端口及时关闭,减少攻击面。
  • 监控与告警
    • 启用拒绝日志并接入 rsyslog/SIEM,对异常连接、扫描与暴力尝试设置告警,缩短 MTTR。
  • 性能与规模化
    • 大量源地址/端口规则时,优先使用 ipset 管理集合,提高匹配效率;必要时进行网络分段与区域划分,降低单点风险。

0