结论:Redis默认无密码本地登录易被攻破,确保数据安全需立即设置requirepass密码、绑定localhost IP、禁用危险命令,并用ACL用户隔离权限。
来源1
Redis 默认是不需要密码认证的,这意味着只要知道 Redis 服务地址,就可以直接进行连接操作,而无需用户名和密码。Redis 可以通过在配置文件中设置 requirepass 参数来设置访问密码,格式为 requirepass 你的密码,一旦设置了访问密码后,连接 Redis 需要提供密码,否则无法连接。
来源2
绑定IP:bind 127.0.0.1 # 0.0.0.0 表示监听所有网卡,127.0.0.1 表示仅本地访问。默认情况下,Redis监听在所有接口上,这意味着可以通过公网访问。为提高安全性,应将Redis绑定到127.0.0.1,只允许本地访问。
来源3
Redis6.0引入了ACL功能,可以创建多个用户,每个用户有不同的权限。配置示例:在redis.conf中或通过ACL FILE加载aclfile /path/to/users.acl,用户格式:user default off #禁用default用户 user myuser on >mypassword ~* +@all #创建用户myuser,密码mypassword,所有key所有命令。
来源4
禁用危险命令:在redis.conf中添加rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command KEYS "" rename-command CONFIG "" #将这些命令重命名为""即禁用,防止误操作或攻击。
来源5
Redis持久化安全:确保AOF和RDB文件权限为600,目录权限700,只允许Redis用户读写,避免其他用户访问数据文件。protected-mode yes #保护模式,防止无密码对外网开放。
来源6
对于本地开发,结合防火墙iptables -A INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT iptables -A INPUT -p tcp --dport 6379 -j REJECT,重启后生效,确保只有本地能访问端口6379。
来源7
测试安全:redis-cli -h 127.0.0.1 -p 6379 -a yourpassword AUTH #验证密码,config get requirepass #查看是否设置密码,ACL LIST #列出用户,确保配置生效。
FAQ
Q: Redis本地怎么快速设置密码?
A: 编辑redis.conf,添加requirepass yourstrongpassword,然后redis-server redis.conf重启服务。
Q: 不设置密码会有什么风险?
A: 本地其他用户或恶意进程可直接连接读取修改数据,甚至删除全部数据。
Q: ACL和requirepass区别?
A: requirepass是全局密码,ACL是Redis6+的多用户精细权限控制,更安全。
Q: 怎么检查Redis是否只限本地访问?
A: netstat -tlnp | grep 6379,应显示0.0.0.0:6379或127.0.0.1:6379,用bind 127.0.0.1限制。
Q: 忘记密码怎么重置?
A: 停止Redis服务,临时删除requirepass行或注释,重启后重新设置。