linux环境redis 升级教程_redis升级
redis 升级教程
一、摘要
最近漏洞扫描服务器发现,Redis 缓冲区溢出漏洞(CVE-2024-31449),解决办法redis更新到6.2.16、7.2.6或7.4.1及以上版本。
二、漏洞描述
漏洞描述:经过身份验证的用户可能会使用特制的 Lua 脚本来触发位库中的堆栈缓冲区溢出,这可能会导致远程代码执行。所有带有 Lua 脚本的 Redis 版本都存在该问题。
目前受影响的Redis版本:
2.6 ≤ Redis < 6.2.16
7.0.0 ≤ Redis < 7.2.6
7.4.0 ≤ Redis < 7.4.1
三、旧redis版本
1.查看旧redis版本信息
登录redis客户端:redis-cli输入密码:auth password查看redis版本:info
如图所示:
2.备份redis数据
(1)查看目前redis的keydbsize(默认查询的是database0库下面的key,查询其他库下面的key需要切换数据库)(2)备份数据save
如图所示:
3.查看备份文件地址
通过命令找到备份的数据文件config get dirconfig get dbfilename
如图所示:
4.将旧redis安装目录备份
例如:旧redis安装目录在/usr/local/redis7
备份旧目录
mv /usr/local/redis7 /usr/local/redis7_20241024.bak
四、安装redis
(1)解压新的redis,执行安装
tar -zxvf redis-7.4.1.tar.gzmakemake install
如图所示:
(2)复制redis配置文件
如图所示:
(3)复制旧配置文件到新redis目录的src下
(4)停止旧的redis
查看进程ps -ef|grep redis杀死进程kill -9 redis进程号
如图所示:
(5)启动新的redis
说明:如果自行配置过redis的启动文件,如通过systemctl start redis启动的命令,需要注意修改redis启动的系统配置文件。这里都是手动启动redis的,没有注册到系统服务中。
切换到新redis目录cd /webroot/redis/redis-7.4.1/src启动redis并指定配置文件./redis-server /webroot/redis/redis-7.4.1/redis.conf或者在src目录下直接执行./redis-server ../redis.conf
如图所示:
五、验证
1.查看新安装的redis版本
redis-server -v
2.查看数据是否恢复
通过命令dbsize查看数据和旧数据一致,说明数据恢复了,或者通过redis可视化工具连接查看数据。
到此redis升级完成。
注意:
如果启动redis有警告
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect
解决方案:
首先打开sysctl.conf文件,增加vm.Overcommit_memory =1
配置
编写文件vim /etc/sysctl.conf按 i 输入保存并退出:wq查看是否保存成功cat /etc/sysctl.conf
如图所示:
然后执行以下命令生效
sysctl vm.overcommit_memory=1
操作如图所示:
最后再重启redis,发现没有了警告提示!