DBAtlas · 数据库运维图谱

Redis / Valkey 安全加固(ACL、TLS、危险命令)

Redis难度: 高级耗时: 5 分钟(审计)– 90 分钟(完整加固)

不是安装或日常运维指南:用于在不停机的情况下加固运行中的 Redis 或 Valkey(单服务器、replica + Sentinel 或 Cluster)的场景化 runbook。内容包括:只读安全审计,ACL 用户与禁用 default 用户,requirepass/masterauth,bind 与 protected-mode,防范 CONFIG/DEBUG/MODULE 滥用的 protected config,在线迁移到 TLS(客户端、复制、Sentinel、cluster bus)以及文件权限;最后重新审计,确认风险已消除。按 DBAtlas 安装指南搭建的系统已经设置了密码和严格的防火墙:从审计开始,只执行报告 RISK 或 WARN 的场景。备份和日常运维见其他 Redis 指南。

架构: 单服务器、master + replica + Sentinel,或 Redis Cluster

场景

  • 安全状态审计(只读) — 不做任何修改。无密码访问、default 用户、监听地址、protected-mode、危险命令、TLS、Sentinel 密码和文件权限以 OK / WARN / RISK 形式报告。不确定从哪里开始时选择此项。
  • 完整加固(按顺序执行全部) — 审计 → ACL 用户(管理员、应用、复制、Sentinel)与禁用 default 用户 → bind/protected-mode/防火墙 → 危险命令与 protected config → TLS → 文件权限 → 最终审计。replica/Sentinel 上滚动执行;有风险的步骤需要确认。
  • ACL 用户与禁用 default 用户(Redis 6+) — 所有人都用同一个密码(或无密码)以 default 用户连接。为管理员、应用(只能访问自己的 key,不能执行危险命令)、复制和 Sentinel 分别创建用户,写入 aclfile,应用迁移完成后禁用 default。
  • Redis 无密码:requirepass / masterauth(快速处置) — 完全没有密码,也没有时间迁移到 ACL。在线为所有节点设置共用密码(requirepass,复制用 masterauth,Sentinel 用 auth-pass);应用将无法再无密码连接。
  • 收紧网络访问(bind 0.0.0.0、protected-mode、防火墙) — Redis 在所有网卡上监听,或以 protected-mode no 运行。将 bind 缩小到 localhost + 内网 IP,启用 protected-mode,防火墙只放行各节点和应用网络。在线执行,现有连接不会断开;这是降低风险最快的一步。
  • 危险命令与 CONFIG 滥用(FLUSHALL、CONFIG、DEBUG、MODULE) — 防范利用 CONFIG SET dir/dbfilename 向服务器写文件(SSH 密钥、cron)以及 FLUSHALL/DEBUG/MODULE LOAD:保持禁用 enable-protected-configs、enable-debug-command、enable-module-command,从应用账号中去掉 @dangerous;旧版本使用 rename-command。
  • 加密连接:TLS(客户端、复制、Sentinel、cluster bus) — 流量未加密。在现有端口旁在线开启 TLS 端口,将复制和 Sentinel 迁移到 TLS,应用切换完成后关闭明文端口(port 0)。
  • 文件权限与服务运行用户 — redis.conf(含密码)、ACL 文件、RDB/AOF 和日志文件可被其他用户读取,或 Redis 以 root 运行。将权限收紧为 640/750,属主改为服务用户。

开始之前

  • 所有节点上有 root/sudo 权限;可从第一个节点 SSH 到其他节点(用于复制密码文件和证书)。
  • Redis 6.2+ 或 Valkey 7.2+(ACL 需要 6.0+,protected config 需要 7.0+)。
  • 复制…和 Sentinel…状态正常;拓扑不健康时不执行滚动操作。
  • 应用列表及客户端库版本:ACL 需要用户名 + 密码支持(Redis 6+ 客户端),TLS 需要 rediss:// 支持;使用 Sentinel 的客户端需支持 Sentinel 密码和 TLS。
  • 已安装 openssl(用于生成密码和证书)。

指南阶段

  • 准备:安全保障与辅助工具 — 备份配置和 ACL · 写入辅助工具(dbatlas-rconf、dbatlas-rcli、dbatlas-redis-restart) · 将管理员密码写入临时文件
  • 状态审计(只读) — 安全报告:… · Sentinel 报告:… · 将检查结果对应到场景
  • 密码:requirepass 和 masterauth(在线) — 设置共用密码:… · masterauth: … · Sentinel auth-pass: … · requirepass: … · 为 Sentinel 设置密码:… · 复制和 Sentinel 是否正常 …
  • ACL:诊断与用户密码 — 诊断:谁在用哪个用户连接? · 生成内部用户密码 · 将密码文件复制到其他节点
  • ACL:禁用 default 用户 — 是否还有以 default 连接的客户端:… · 禁用 default 用户:… · 验证:未认证访问、应用权限、复制 · 为 Sentinel 设置密码:…
  • 网络访问:防火墙 — 防火墙规则
  • 危险命令:诊断 — Protected config 及 debug/module 命令:…
  • 危险命令:验证 — CONFIG SET dir 和 DEBUG 是否被拒绝:…
  • TLS:证书 — TLS 支持:… · 生成内部 CA 和服务器证书 · 分发证书 · 证书权限:…
  • TLS · Cluster bus 与复制(维护窗口,所有节点一起) — 固定 bus 端口,将 tls-cluster 和 tls-replication 写入文件:… · 停止:… · 启动:… · 集群和复制是否运行在 TLS 上
  • TLS:验证并关闭明文端口 — 复制…和 Sentinel…是否运行在 TLS 上 · 关闭明文端口:… · 未加密连接是否被拒绝:…
  • 文件权限与服务运行用户 — 修正权限:…
  • 最终审计(加固后) — 安全报告:…(最终状态) · Sentinel 报告:…(最终状态)
  • 清理与后续 — 删除临时密码文件 · 后续:监控与定期任务
按您的环境打开分步计划 →