Redis密码设置的注意事项
密码是Redis安全的第一道防线,需满足高复杂度要求:长度建议8位以上(生产环境推荐12位+),包含英文大写字母、小写字母、数字、特殊字符(如@、#、$)中的三类及以上;避免使用公开弱口令(如123456、admin@123、abcd.1234)或与个人信息相关的密码(如生日、电话号码)。强密码能有效抵御暴力破解和字典攻击。
Redis默认安装时requirepass参数通常为空(无密码),这是严重的安全隐患。需立即修改配置文件(redis.conf),取消requirepass前的注释并设置密码(如requirepass YourStrongPassword);若通过config set requirepass命令临时设置密码,重启Redis后会失效,需确保配置文件中永久生效。
redis.conf中的bind参数,仅允许Redis监听服务器本地IP(127.0.0.1)或内网IP(如192.168.1.100),避免监听0.0.0.0(所有网络接口),防止公网直接访问。protected-mode参数设置为yes(默认值),当未设置bind或密码时,Redis仅允许本地访问,拒绝外部连接。6379)的访问来源,仅允许可信IP地址(如运维服务器IP)访问。Redis原生协议(RESP)未加密,AUTH命令传输的密码可能被网络嗅探工具截获。建议启用SSL/TLS加密(Redis 6.0+原生支持),通过tls-port配置加密端口,客户端连接时使用--tls参数指定证书,确保密码传输安全。
定期更换Redis密码(建议每3个月一次),即使密码未被泄露,也能减少长期使用同一密码带来的潜在风险。更换密码时,需先通过旧密码认证(auth OldPassword),再执行config set requirepass NewPassword设置新密码,并同步修改配置文件中的requirepass参数。
Redis密码明文存储在redis.conf文件的requirepass参数中,需严格控制该文件的访问权限:
chmod 600 /path/to/redis.conf,仅允许Redis用户(或root用户)读取;Redis的某些命令(如FLUSHALL删除所有数据、CONFIG查看配置、KEYS *遍历所有键)可能被攻击者利用,需通过rename-command参数禁用或重命名:
rename-command FLUSHALL ""(禁用)、rename-command CONFIG redis_config(重命名为不易猜测的名称);Redis的高性能(每秒可处理15万+次AUTH命令)使其易成为暴力破解目标。可通过以下方式缓解:
maxauthfailtimes参数(需Redis 7.0+)设置最大失败次数(如10次),超过后锁定IP一段时间(authfaillocktime参数设置,如10分钟);slowlog或第三方日志工具(如ELK、Splunk)分析异常行为(如频繁的AUTH失败、未授权的CONFIG命令);