redis安全加固需多层防护:设强密码(requirepass)、绑定可信ip(bind)、启用保护模式、禁用高危命令(rename-command)、配置acl最小权限、启用tls加密及防火墙限制。

Redis 默认不设密码,任何能连上的客户端都能执行任意命令,这是绝大多数未授权访问漏洞的根源。配置密码认证只是基础,必须配合网络控制、权限限制和系统级加固,才能形成有效防线。
设置强密码并启用认证
密码是第一道门槛,但不能只靠它:
- 编辑 redis.conf,取消注释并修改
requirepass行,例如:requirepass MyP@ssw0rd2026! - 密码需满足:长度 ≥8,包含大写字母、小写字母、数字、特殊符号中至少三类
- 若使用主从复制,还需在从节点配置
masterauth字段,值与主节点密码一致 - 修改后重启服务:
systemctl restart redis或redis-server /path/to/redis.conf - 验证是否生效:
redis-cli连上后执行CONFIG GET requirepass,返回非(nil)即成功
限制网络暴露面
不让攻击者连上,比让他连上再拦住更可靠:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 在 redis.conf 中设置
bind,仅绑定内网IP或本地回环:bind 127.0.0.1 192.168.10.5(不要写0.0.0.0) - 关闭保护模式(
protected-mode no)仅在明确需要且有防火墙兜底时才考虑,生产环境应保持yes - 修改默认端口(如改为
port 6381),降低被自动化扫描工具命中概率 - 操作系统防火墙(如
iptables或ufw)只放行可信IP对Redis端口的访问
禁用高危命令与最小权限原则
即使密码被爆破或泄露,也要限制攻击者能做的事:
- 在 redis.conf 中重命名或清空危险命令:
rename-command FLUSHALL ""rename-command CONFIG "CONFIG_HIDDEN"rename-command KEYS "" - Redis 6.0+ 支持 ACL,建议停用默认用户:
user default off
再创建专用用户,例如只读账号:user reader on >reader123 ~* +@read -@all - 避免用 root 启动 Redis 进程;应新建普通系统账号(如
redis),并用chown -R redis:redis调整数据目录、日志、配置文件等权限
增强传输与运行时安全
防止中间人窃听、内存信息泄露等隐性风险:
- 启用 TLS 加密(Redis 6.0+ 原生支持):配置
tls-port、tls-cert-file、tls-key-file等参数,强制客户端走加密连接 - 开启
maxmemory和maxmemory-policy防止内存耗尽导致服务崩溃 - 设置
timeout 300自动断开空闲连接,减少长期空闲会话风险 - 定期审计日志(
logfile /var/log/redis/redis.log),关注异常 AUTH 失败、大量 KEYS 扫描等行为










