centos防火墙使用有哪些禁忌
小樊
37
2025-11-25 19:22:00
CentOS 防火墙使用禁忌与最佳实践
一 核心禁忌
- 禁忌1 直接关闭防火墙:在生产环境随意执行
systemctl stop|disable firewalld 会显著扩大攻击面,除非有等价的边界防护且经过评估与审批,否则不应关闭。临时调试也应尽量采用更细粒度的放通策略而非“全关”。
- 禁忌2 先清规则再想起来保存:在 CentOS 6/iptables 上执行
iptables -F 会瞬间清空所有规则,极易导致现有会话中断且无法远程恢复;任何清规则操作前必须先备份并准备好回滚方案。
- 禁忌3 混用 firewalld 与 iptables:在 CentOS 7+ 同时启用或来回切换两套防火墙管理工具,容易产生规则冲突、策略覆盖和服务异常,应保持单一管理路径。
- 禁忌4 只开端口不改服务配置:放通 22/80/443 等端口却不调整服务自身限制(如仅允许密钥登录、禁用 root 直连、限制来源网段),等于把门打开却留了后门。
- 禁忌5 忽视区域与接口绑定:新增端口或服务到错误的 zone(如把数据库端口放到 public),或未把接口正确加入目标区域,常导致“规则已加仍不通”的错觉。
- 禁忌6 永久生效与运行时脱节:只执行不带 –permanent 的
firewall-cmd 导致重启后丢失;反之只加 --permanent 不执行 firewall-cmd --reload 则当前不生效,上线前务必验证“运行时+持久化”一致。
- 禁忌7 无回滚与备份:变更前不备份当前规则、没有应急回滚命令与窗口期安排,一旦异常无法快速恢复,风险极高。
二 常见高风险操作示例
- 示例A 清空 iptables 规则:
iptables -F(高危,可能导致远程断开且难以恢复)。
- 示例B 粗暴关闭 firewalld:
systemctl stop firewalld && systemctl disable firewalld(生产环境高风险,除非有替代防护与变更窗口)。
- 示例C 放通端口却未重载:
firewall-cmd --zone=public --add-port=3306/tcp --permanent 后忘记 firewall-cmd --reload,导致当前会话不生效。
- 示例D 误把数据库端口放入 public 区域:未使用正确的 zone 或未按来源网段限制,扩大不必要的暴露面。
三 更安全的替代做法
- 最小暴露:仅开放必要端口与服务(如 22/80/443),并遵循“默认拒绝、按需放通”的原则;变更前在测试环境验证,上线后复核规则。
- 白名单管控 SSH:例如仅允许 192.168.0.100 访问 22 端口,可先添加白名单规则,再移除对
ssh 服务的默认放行,避免把自己锁在外面;操作完成务必 --reload 并验证。
- 区域与服务精细化:理解 zone 与接口绑定,按“内网/外网/受信”划分策略;端口放通要确认所在 zone 是否为实际使用的区域。
- 变更可控:使用
--permanent 持久化,执行 --reload 使运行时生效;变更前备份当前规则,准备好回滚命令与维护窗口,确保异常可快速恢复。