Redis 因配置不当存在未授权访问漏洞,可以被攻击者恶意利用。
在特定条件下,如果 Redis 以 root 身份运行,黑客可以给 root 账号写入 SSH 公钥文件,直接通过 SSH 登录受害服务器,从而获取服务器权限和数据。一旦入侵成功,攻击者可直接添加账号用于 SSH 远程登录控制服务器,给用户的 Redis 运行环境以及 Linux 主机带来安全风险,如删除、泄露或加密重要数据,引发勒索事件等
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用。这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安全性
redis默认配置文件在/etc/redis.conf,注意修改时候备份文件一下,找到如下
# requirepass foobared
去掉前面的注释,并修改为所需要的密码:
requirepass myPassword (其中myPassword就是要设置的密码)
如果Redis已经配置为service服务,可以通过以下方式重启
service redis restart
如果Redis没有配置为service服务,可以通过以下方式重启:
# 查看redis是否启动 ps -aux | grep redis # 关闭 /usr/local/bin/redis-cli shutdown # 再次查看redis是否启动 ps -aux | grep redis # 启动redis /usr/local/redis/src/redis-server /usr/local/redis/etc/redis.conf
设置Redis认证密码后,客户端登录时需要使用-a参数输入认证密码,不添加该参数虽然也可以登录成功,但是没有任何操作权限
# 本地连接 redis-cli # 查询所有的键 keys * 出现如下警告 (error) NOAUTH Authentication required
使用密码认证登录,并验证操作权限
redis-cli -h 127.0.0.1 -a redis20211227
看到类似上面的输出,说明Reids密码认证配置成功
使用-a参数输入登录密码,出现以下警告
Warning: Using a password with '-a' or '-u' option on the command line inter
也可以先登录,后面验证密码
# 客户端连接,默认端口-p 6379 -h 连接地址 127.0.0.1 redis-cli # 验证密码 auth redis20211227 # 查询所有key keys * # 退出客户端 exit
来源