前段时间,服务器上观察到了很多异常的GPU占用,有的服务器上nvidia-smi中可以看到显存占用,但不显示PID,有的服务器上会显示PID,主要的特征都是占用了多卡、4G左右的显存,且网络流量出现了一定的异常。这种情况一般都是服务器中了挖矿病毒。
实际上,如果是普通用户中了挖矿病毒还比较好处理,简单的方式是直接删掉该用户,或者只关注这个用户的进程和自启动列表即可;但有的服务器是root账号中了挖矿病毒,就给杀毒带来了很大的挑战。
因此,开个帖子简单记录一下这次挖矿病毒的处理过程。
一、若nvidia-smi可以直接看到进程pid
1.1 使用ps aux | grep [pid]就可以看到对应进程的相关用户。
1.2 使用ps aux | grep [User]就可以知道该用户对应的相关进程。
1.3 关注python(挖矿进程)、crown(守护进程)这类可疑进程。
二、若nvidia-smi中无法看到进程pid
2.1 使用sudo unhide proc查看被隐藏的进程pid
2.2 一般是python(挖矿进程)、crown(守护进程)
三、相应的处理办法
3.1 除了lsof指令外,如何查看被隐藏的进程相关调用:先找到进程的目录文件cd \exec\[pid],然后用sudo tree查看进程树。
3.2 可以在exe栏中看到该进程对应的执行文件,用rm命令删掉相应的文件。
3.3 查看被盗用用户是否有自启动进程:crontab -l -u [User]
3.4 将上述的隐藏进程全部sudo kill -9 [pid],观察实际情况,使用sudo unhide proc和ps aux | grep [User]再次确认对应用户的进程是否正常。
3.5 若有,在文件编辑器中删掉对应用户的进程 crontab -e -u [User]
3.6 注意该用户home/.ssh目录下的authorized_keys文件是否有异常公钥,注意该用户的密码是否强度过低。
如果删不掉相应的文件,可能是文件的attr属性被设置了写入保护,需要使用chattr去掉该文件和父文件夹的写入保护属性。
需要注意的是,一般被盗用账号存在的问题普遍是:
ssh没有关闭root登录、用户密码过于简单,并且建议服务器只采用key认证的方式登录。