温馨提示×

centos防火墙最佳实践推荐

小樊
46
2025-12-25 07:23:20
栏目: 智能运维

CentOS 防火墙最佳实践

一 基础与原则

  • CentOS 7/8 使用 firewalld 作为默认动态防火墙管理工具;更早的 CentOS 6 通常使用 iptables。优先选择 firewalld 以便进行动态规则管理与区域划分。
  • 坚持“最小暴露面”:仅开放必要的端口与服务(如 22/SSH、80/HTTP、443/HTTPS),默认拒绝其他入站。
  • 理解 firewalld 的“运行时/ 永久”双配置模型:未加 –permanent 的修改仅当前生效,变更后执行 firewall-cmd --reload 使永久配置生效。
  • 以“区域 Zone”管理信任域:公网接口用 public,内网/受信网络用 internal/home/work,严格场景用 drop/block,完全受信用 trusted
  • 变更前先“备份”,变更后在“测试环境验证”,并“定期审查与清理”陈旧规则。

二 部署与配置步骤

  • 启用与开机自启
    • 启动:systemctl start firewalld
    • 开机自启:systemctl enable firewalld
    • 状态:firewall-cmd --state
  • 规划区域与接口/源绑定
    • 查看默认区域:firewall-cmd --get-default-zone
    • 查看活动区域与绑定接口:firewall-cmd --get-active-zones
    • 绑定接口到区域:firewall-cmd --permanent --zone=public --change-interface=eth0
    • 按源地址绑定到区域(优先级高于接口):firewall-cmd --permanent --zone=trusted --add-source=192.168.1.0/24
  • 开放常用服务与端口(示例)
    • 使用“服务”更可维护(自动携带端口与协议):
      • firewall-cmd --permanent --zone=public --add-service=ssh
      • firewall-cmd --permanent --zone=public --add-service=http
      • firewall-cmd --permanent --zone=public --add-service=https
    • 或使用端口:
      • firewall-cmd --permanent --zone=public --add-port=8080/tcp
    • 使配置生效:firewall-cmd --reload
  • 验证与回滚
    • 查看规则:firewall-cmd --list-all(指定 –zone=xxx 查看某区域)
    • 移除规则:firewall-cmd --permanent --zone=public --remove-service=http && firewall-cmd --reload
  • 典型场景
    • 公网 Web 服务器:默认区域 public,仅放通 22/80/443;管理源 IP 可单独绑定到 trusted 区域以放宽策略。
    • 内网网关/NAT:在出口/外部区域启用 masquerade(SNAT):firewall-cmd --zone=public --add-masquerade --permanent && firewall-cmd --reload

三 安全加固清单

  • 限制管理通道
    • 仅允许可信来源访问 22/SSH,必要时改为非默认端口并配合 fail2ban 或 TCP Wrappers;禁用 root 直连,使用普通用户 + sudo
  • 默认拒绝与显式放通
    • 公网接口保持 public 默认策略,避免切换到 trusted;对需要完全静默丢弃的场景再考虑 drop
  • 日志与审计
    • 启用并集中 rsyslog/系统日志,对拒绝/异常流量建立监控与告警;定期审计规则与命中情况。
  • 规则整洁与性能
    • 定期清理“僵尸/重复”规则;对大量来源使用 ipset 聚合管理,提高匹配效率;按需使用 富规则 表达复杂策略。
  • 服务与内核
    • 禁用不必要的服务与端口;仅在确有性能瓶颈且充分评估时再调整内核网络参数;不建议为性能而禁用 SELinux

四 维护与排障

  • 变更流程
    • 备份当前规则与关键配置;先在测试环境验证;使用 –permanent 写入并在维护窗口 –reload;保留回滚方案。
  • 常用命令速查
    • 状态:firewall-cmd --state
    • 当前生效规则:firewall-cmd --list-all(或 –zone=xxx
    • 永久规则:firewall-cmd --permanent --add-service=ssh
    • 使永久生效:firewall-cmd --reload
    • 接口/源绑定:–add-interface=eth0 / –add-source=10.0.0.0/8
    • NAT:–add-masquerade
  • 常见问题
    • 规则未生效:确认是否加了 –permanent 并执行 –reload,以及是否写入了正确的 zone
    • 区域选择异常:核查 –get-active-zones 与接口/源绑定顺序;记住优先级:source > interface > 默认 zone
    • 端口仍不通:核对服务是否监听对应 IP/端口,云安全组/外部 ACL 是否放通,应用自身绑定地址是否为 0.0.0.0

0