Redis 加固是什么
Redis 默认面向可信内网设计,几乎没有内置访问控制,因此加固不是可选项而是部署前提。核心是四件事:绑定地址(bind)收敛、开启口令(requirepass)、重命名或禁用危险命令(rename-command)、在防火墙或安全组限制来源。Redis 6 及以上版本可用 ACL 按业务拆分账号,替代单一密码模式。
基本信息
| 适用版本 | Redis 5/6/7(ACL 需 6.0 及以上) |
|---|---|
| 配置文件 | redis.conf(或 /etc/redis/redis.conf) |
| 关键项 | bind、protected-mode、requirepass、rename-command |
| 生效方式 | 改配置后重启服务,或对支持的命令执行 CONFIG REWRITE |
redis.conf 加固示例
redis.conf 加固示例
bind 127.0.0.1 10.0.0.5 # 只监听回环与应用网卡地址
protected-mode yes # 未显式配置绑定与口令时的兜底保护
requirepass <强随机口令> # 开启口令认证
rename-command CONFIG "" # 禁用可改写落盘路径的高危命令
rename-command FLUSHALL "" # 阻止一键清库
rename-command KEYS "" # 阻断全量键枚举
# Redis 6+ 建议用 ACL 按业务拆分只读/读写账号,替代共用口令生效验证
生效验证
redis-cli -h 10.0.0.5 -a '<口令>' config get maxmemory # 认证后可读取配置
redis-cli -h 10.0.0.5 -p 6379 ping # 未认证应返回 NOAUTH 错误
redis-cli -h 10.0.0.5 -p 6379 info server | head -5 # 确认连接到的实例与端口正确
ss -lntp | grep 6379 # 确认监听地址已收敛典型使用场景
- 新实例上线:按基线配置后再开放网络访问
- 存量核查:扫描 6379 对外可达的实例,确认是否已认证与绑定收敛
- 等保整改:口令强度、来源限制、危险命令禁用是常见核查项
- 多业务共用:用 ACL 给各业务独立账号与键空间前缀权限
- 排障:从节点认证失败或监控采集报 NOAUTH 时,多半是口令未同步
加固项与验证方式
| 加固项 | 验证命令 | 通过标准 |
|---|---|---|
| 绑定地址 | ss -lntp | grep 6379 | 只监听回环与管理/应用网卡 |
| 口令认证 | redis-cli ping | 未认证返回 NOAUTH |
| 危险命令 | redis-cli -a 口令 CONFIG GET maxmemory | 重命名后应报未知命令 |
| 来源限制 | 从其他网段 telnet 测试 | 连接被拒绝或超时 |
Redis 6 起提供 ACL 体系,可按业务拆分只读/读写账号,替代单一密码模式;改造时先给监控与运维脚本建独立只读账号,再逐步收紧。
把 Redis 直接暴露在公网且无口令,等于把主机控制权交出去:攻击者可借助配置写入或持久化机制落地后门。任何情况下都不建议公网直连。