客户采购的硬件服务器,我在上面从零开始搭建环境,部署微服务那一套,最近发现在服务器上执行命令卡顿,需要等1-2秒才能出来结果,然后执行 top 发现CPU占用一直很高,但是又看不到占用CPU很大的进程。
就 us 一直是90多(下面是清理后的截图,us 只有1点几了)
输入下面的命令(有推荐说,top后按shift P)
pidstat 1
发现有两个进程CPU占用的100%,Command是 zzh
ps查不到进程信息,直接kill这两个进程提示进程不存在
在网上搜索 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 就能成功了
脚本干掉了,但是进程还在,不能直接 kill 掉,我的历史命令里记录的是,先执行 pkill,再执行 kill,干掉的进程
先执行下面的命令,发现没有查到任务
crontab -l
再执行 cat /etc/crontab ,发现有一条定时任务
cat /etc/crontab
打开脚本(脚本在服务器已经删除了,这是下载下来后在Windows上打开的)
删除定时任务和这个脚本
然后执行
ps -ef | grep zzh
find / -name "zzh"
发现还有相关联的目录 /run/user/1000/gvfs
这个目录怎么删都删不掉,后面查到这是个文件系统,使用 umount 命令就能成功删除
后面再执行 top ,发现CPU使用率正常了
攻击源头我怀疑是 redis 没有设置密码导致的,因为之前有发现我启动 redis 一段时间后,我 ps -ef|grep redis ,能看到除了redis本身以外的其他进程,并且带有一些命令看着就很异常。
redis 一定要设置密码,然后如果端口要映射到外网的话,最好改下默认端口。
参考链接:
https://itcn.blog/p/3902740291.html
https://www.cnblogs.com/reachos/p/13129155.html