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。