在redis.conf配置文件中设置requirepass参数来启用密码认证。例如:requirepass yourpassword。这是最基本的Redis密码配置方式。重启Redis服务后,所有客户端连接都需要使用AUTH命令提供密码才能访问数据。防范未授权访问的最简单方法就是设置强密码,避免默认空密码。
Redis密码配置教程
1. 编辑redis.conf文件,找到# requirepass foobared这一行,去掉#号并修改为requirepass 你的密码。2. 保存后重启Redis:service redis-server restart。3. 客户端连接时使用redis-cli -a 你的密码。4. 对于读写分离,如果需要不同权限,可以结合ACL使用。
防范Redis未授权访问
Redis默认绑定0.0.0.0,容易被扫描攻击。设置bind 127.0.0.1只允许本地访问。结合防火墙iptables -A INPUT -s 公网IP -p tcp --dport 6379 -j DROP。设置requirepass mystrongpassword。禁用危险命令如keys *、flushall等,使用rename-command命令重命名或禁用。
Redis安全配置最佳实践
requirepass your_very_strong_password,必须使用复杂密码,至少16位包含大小写数字符号。bind 127.0.0.1 ::1,只监听本地。protected-mode yes,启用保护模式拒绝外部未认证连接。使用ACL用户系统,在Redis 6.0+中定义用户user myuser on >password ~* &* +@all,可以精确控制读写权限。
Redis读写密码分离配置
使用Redis 6 ACL功能创建不同用户:ACL SETUSER reader on >readerpass ~keys:* +get +keys +scan;ACL SETUSER writer on >writerpass ~* +set +del +flushall;然后在客户端使用AUTH readerpass或AUTH writerpass,实现读写密码分离,提高安全级别。
保障Redis数据安全
开启AOF持久化appendonly yes,确保数据不丢失。定期备份dump.rdb文件。使用SSL/TLS加密传输,避免明文密码泄露。监控日志,设置loglevel notice,查看未授权访问尝试。避免在公网暴露6379端口,使用VPN或SSH隧道访问。
Redis常见安全漏洞修复
历史上Redis RCE漏洞利用keys *和config set命令。修复:rename-command FLUSHALL ""禁用flushall;rename-command KEYS "";rename-command CONFIG "safeconfig"。设置requirepass后,config命令也需要认证才能执行。
FAQ
Q: Redis设置密码后如何连接?
A: 使用redis-cli -h host -p 6379 -a password,或者连接后输入AUTH password。
Q: 忘记Redis密码怎么办?
A: 临时注释requirepass行,重启服务进入,修改密码后恢复。
Q: ACL和requirepass哪个更好?
A: ACL更灵活,支持多用户权限控制,推荐Redis6+使用。
Q: 如何检查Redis是否暴露公网?
A: 使用netstat -tlnp | grep 6379,如果显示0.0.0.0:6379则暴露了。