> 技术文档 > linux环境redis 升级教程_redis升级

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

如图所示
linux环境redis 升级教程_redis升级

2.备份redis数据

(1)查看目前redis的keydbsize(默认查询的是database0库下面的key,查询其他库下面的key需要切换数据库)(2)备份数据save

如图所示:

linux环境redis 升级教程_redis升级

3.查看备份文件地址

通过命令找到备份的数据文件config get dirconfig get dbfilename

如图所示:
linux环境redis 升级教程_redis升级

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

如图所示:
linux环境redis 升级教程_redis升级

(2)复制redis配置文件

如图所示:

linux环境redis 升级教程_redis升级

(3)复制旧配置文件到新redis目录的src下

linux环境redis 升级教程_redis升级

(4)停止旧的redis

查看进程ps -ef|grep redis杀死进程kill -9 redis进程号

如图所示:

linux环境redis 升级教程_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

如图所示:

linux环境redis 升级教程_redis升级

五、验证

1.查看新安装的redis版本
redis-server -v

linux环境redis 升级教程_redis升级

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

如图所示:

linux环境redis 升级教程_redis升级

然后执行以下命令生效

sysctl vm.overcommit_memory=1

操作如图所示:

linux环境redis 升级教程_redis升级

最后再重启redis,发现没有了警告提示!

植物网