设为首页|收藏本站|
开启左侧

[闲聊] 挖矿病毒让我破大防

[复制链接]
41544 1
唯美。 发表于 2022-1-11 00:26:44 | 只看该作者 打印 上一主题 下一主题
 
两个月前,我开始使用实验室的四卡2080Ti服务器,完成深度学习训练任务。
当时用了一个周,遇到了一些诡异现象。
最近又开始用这台服务器了,诡异现象依然存在。
后来我才知道,原来是服务器中挖矿病毒了。
我同学分析了一下,这个病毒用学校的电挖矿,每个月至少赚三千。
挖矿病毒,wdnmd。
第一个坑 - nvidia-smi坏掉了

我遇到的第一个坑,是我无法查看GPU使用情况。
当我使用nvidia-smi的时候,结果是这样的:

挖矿病毒让我破大防 第1张图片
不管我运行多少程序,都显示没有进程。
我本以为是cuda驱动出错了,瞎捣鼓了一个多小时还是没解决。
后来我改用gpustat指令,终于查看到了GPU的运行情况。
彳亍,那我就不用nvidia-smi了呗,我以后改用gpustat。
第二个坑 - 神奇的root程序

当我可以查看gpustat的时候,我发现每张卡都被一个root程序占用了,第一天还只有占用了三张卡,到了第三天,就是四张卡全部占用了。

挖矿病毒让我破大防 第2张图片
我当时单纯以为其他学长也在用这台服务器。
正好我的代码只需要占用不到2000M显存,于是我将就着在第一张卡上跑完了我的实验。
第三个坑 - 计算速度

在此过程中,我遇到了一些诡异的现象:
当我增加batch size时,我占用显存量没有特别提高;
当我增加batch size时,我的训练速度没有变快;
当我使用四张卡并行时,我的训练速度变慢。
我当时单纯归因于我的训练数据太小太小了,赛不满GPU的一个kernel。现在才发现不是。
更夸张的是,当我这周一用它训练图神经网络的任务时,用了GPU,反而速度慢了一倍。于是我只能在CPU上完成了 这个任务。
我当时也以为这是因为图神经网络难以并行,没有怀疑是病毒的问题。
确定存在挖矿病毒

这周我需要训练一个目标检测任务,比较耗费计算资源。
这个时候,我发现那四个root程序依然在运行。
这次我恍然大悟,这tmd绝对是挖矿病毒啊,在跟学长沟通了之后,我决定把这四个病毒kill掉。
然而,因为操作失误,我kill了整整七个小时,直接破大防
Kill的过程 - 千万不要随便用killall

首先我使用ps -aux指令查看CPU的使用情况,发现并没有大量占用CPU的程序,找不到这个程序的PID,自然也就没法kill掉它。
随后又使用ps -aux | grep python指令继续查,还是没查到。
随后又使用top  -u root继续查,还是没查到。
这时候我意识到这个病毒非常牛逼,不仅能让我都nvida -smi失效,还可以隐藏自己的PID。
我就问了一下我认识的大佬:“有啥指令,能让我能kill掉所有gpu的程序?”
大佬回答我:“killall -u root试试×”
于是我就试了试,然后就原地逝世。
killall太伤了

当我执行了killall -u root之后,我直接跟服务器断开了。
并且当我试图重新连接服务器时,界面会立刻显示“Could not establish connection to “4ka””。
这就意味着,当我杀死了所有root的进程时,我把ssh服务也一并杀死了。
这意味着我需要去学校,找到我服务器的具体位置,手动重启它。
然后我在群里问了一圈,才知道这台服务器所处的楼层,但是哪个房间没人知道。
我又等到了三点半,等实验室其它课题组的学长过来了之后,这才进入了那个房间。
然后我再次懵逼,这个屋子里有差不多十台服务器,地上一堆线。
于是我又开始逐个观察,终于找到了写有我导师名字的服务器。我发现这些服务器就我导师那台写了名字,如果我导师当初没有在上面写名字的话,这台服务器恐怕就找不到了,感恩。
结果摸索了半天,也没有找到服务器的重启按钮,乃至于一个按钮也没找到,于是我一咬牙,把服务器的电直接断掉了,然后重新插上电,这才重新连接上了这台服务器。
这时已经四点半了,距离我那个操作失误已经过去了五个半小时。
再此过程中,我读了一下将linux的书,感觉特别有意思,就跟看小说似的,我打算春节期间把它通读一遍。
挖矿程序死灰复燃

在刚刚恢复的时候,我又用gpustat看了一下,发现并没有挖矿程序在运行。
就当我以为万事大吉的时候,五点钟,我又看了一下,发现挖矿程序死灰复燃了。
我tmd再次破大防。
我请实验室的大佬简单帮我看了一下,他用了他熟悉的排查流程,发现无效。他让我给信息中心的人发邮件,让他们帮忙解决。
试图解决

这次我换了思路,既然我可以通过gpustat查到挖矿程序正在运行,那我再找个更强的指令,岂不是可以直接查到挖矿程序的PID了吗。
于是我换用nvitop指令,终于找到了挖矿程序的PID:

挖矿病毒让我破大防 第3张图片
我使用 sudo kill 18728杀掉了它。
可是四十分钟后,我发现它再次开始运行。
我又去“/usr/bin”这个文件夹下查找挖矿程序所在位置,终于找到了两个python文件
我使用sudo rm -f python指令kill掉了其中的一个文件,至此,这个挖矿程序再也没有运行起来。
总结

还是要好好学linux啊,本科太偷懒了,硕士要弥补回来。
第二天

今天早晨,我发现挖矿程序又启动了,于是我怀疑是昨天的python文件没删干净,我很纳闷明明有两个文件叫python,而我用sudo rm -f python只删掉了其中的一个,另一个为什么删不掉呢?
我又去仔细检查了一下,发现那个文件并不叫“python”,而是叫“python ”,多了一个空格。
我又把这个删掉了,这次应该彻底解决了。


上一篇:9月21日,云南新增境外输入新冠肺炎确诊病例14例、无症状 ...
下一篇:疫情下的今年到底在哪里过年好?
@



1.西兔生活网 CTLIVES 内容全部来自网络;
2.版权归原网站或原作者所有;
3.内容与本站立场无关;
4.若涉及侵权或有疑义,请点击“举报”按钮,其他联系方式或无法及时处理。
 

精彩评论1

正序浏览
跳转到指定楼层
沙发
三斤狗狗 发表于 2022-1-11 00:27:36 | 只看该作者
 
这篇文章的名词我百分之九十以上完全不了解,但并不妨碍我津津有味地看完并且觉得十分有趣[调皮]
回复 支持 反对

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
活跃网友
返回顶部快速回复上一主题下一主题返回列表APP下载手机访问
Copyright © 2016-2028 CTLIVES.COM All Rights Reserved.  西兔生活网  小黑屋| GMT+8, 2024-5-8 05:18