最近一台测试linux响应速度贼慢,检查发现cpu消耗高达100%!查看进程杀死后过段时间又重启了,一时间也摸不到头绪。无意间发现启动redis的时候cpu瞬间拉到了100%,主要就是zzh和newinit.sh两个脚本。百度了一下说是被植入了挖矿脚本,是因为redis没有设置密码。参考着搜到的博客处理了问题,但是系统好多命令和配置都被破坏了,还是有必要重装。
删除挖矿脚本
在网上搜索 zzh,发现 zzh 是一种挖矿脚本
然后就照着网上的教程去删除脚本
攻击者是在 etc 目录下植入一个 zzh 和 zzhs 的文件
zzhs可以删掉,直接删除 zzh 会提示没权限
查看文件是否被禁止操作:lsattr zzh
删除 ia 参数 :chattr -ia zzh ,提示没有权限
进入/usr/bin目录,使用:ls -lh chattr;lsattr chattr,查看 chattr 命令的权限。
执行以下操作
[root@localhost bin]# cp chattr chattr.new
[root@localhost bin]# chmod a+x chattr.new
[root@localhost bin]# chattr.new -i chattr
[root@localhost bin]# rm -f chattr.new
[root@localhost bin]# chmod a+x chattr
然后再回到 etc 目录下,执行 chattr -ia zzh
这个时候再执行 rm -rf zzh 就能成功了
删除定时任务
先执行下面的命令,发现查到任务
再执行 cat /etc/crontab ,发现有一条定时任务
打开脚本(脚本在服务器已经删除了)
删除定时任务和这个脚本
ps -ef | grep zzh
find / -name "zzh"
然后执行
发现还有相关联的目录 /etc/cron.d/zzh
后续使用云服务器时的注意事项:
重要的端口不随便开放
迫不得已端口需要开放,请配置好相关密码,密码尽量不要太简单,要不然容易被暴力破解。
云服务器不使用了,也没有功能要用,尽量关机。
redis监听的是所有IP,redis没有设置密码,别人可以直接连接我们的redis进行攻击利用我们的服务器去攻击别人
redis如果不提供对外访问,直接把redis 监听改成127.0.0.1
redis端口默认 ,没有密码, 知道IP一下就可以连接过来了
Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。
修复建议:
1.禁止一些高危命令 修改 redis.conf 文件,添加 rename-command FLUSHALL "" rename-command CONFIG "" rename-command EVAL "" 来禁用远程修改 DB 文件地址
2.以低权限运行 Redis 服务 为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆
3.为 Redis 添加密码验证 修改 redis.conf 文件,添加 requirepass mypassword
4.禁止外网访问 Redis 修改 redis.conf 文件,添加或修改 bind 127.0.0.1 使得 Redis 服务只在当前主机可用
参考:
zzh-cpu
redis未设置密码-植入挖矿
MySQL-植入挖矿
挖矿脚本-newinit.sh
防止利用redis未设置密码漏洞入侵服务器
Linux系统上因Redis未设置密码而导致的安全问题