背景
某我的项目服务器服务器 cpu 超负荷运行,top 命令显示有一波高耗 cpu 过程在运行,并且执行程序都是 linux 的命令,如图
根本能够确认是挖矿病毒,和以往挖矿病毒不一样的是,该病毒显示的名称都是 Linux 的命令(蛊惑行为?)
排查
既然名称都是一些常用命令,首先要确认的是这些工具是否被病毒感染,确认的方法就是找一台操作系统版本一样的没有被感化的服务器,对两边的命令进行 md5sum
,以 cat 命令为例
- 确认 cat 命令地位
# which cat
/usr/bin/cat
- 执行 md5sum
# md5sum /usr/bin/cat
1484a27859e2ca20ad667cc06d595d22 /usr/bin/cat
如果两边命令的 md5 始终阐明工具没有被感化,只是病毒的一种蛊惑行为,那如何找到病毒的运行程序地位呢,第一想到的方法是用 strace 监控病毒关上的本地文件,但病毒仿佛都是在读写,并没有关上文件,也可能是关上动作在监控之前曾经实现了,总之这个办法行不通
在 Linux 中,所有皆文件,应用程序应用的资源包含网络都会调配一个文件描述符,lsof 命令能够查看应用程序领有的文件描述符
从这里能够看出几个重要信息
- 病毒的确关上了 /usr/bin/fold 命令,也正因而,能够进行假装
- 猜想病毒的程序位于 /tmp/.python 借助 python 运行,但状态为 deleted 阐明运行后脚本被删了
- 病毒后台程序 ip 为 209.141.40.190 该 ip 位于境外
所以解决的办法和比较简单
- 禁用 python,回收其可执行权限
chmod -x /usr/bin/python
## 也能够改名
mv /usr/bin/python /usr/bin/pythonx
- kill 掉所有过程
- 最好重启服务器
总结
近年来因为比特币的疯狂导致挖矿病毒越来越猖狂,我是十分反对国家出手打击比特币,一个没有任何价值,须要耗费大量电力资源,为犯罪分子提供隐秘资金渠道,为洗钱者提供便当,就是这么一个货色,居然市值高达万亿美元,只能说这世界太疯狂了。谴责归谴责,为了爱护服务器的平安,倡议服务器做以下防护
- 敞开外网拜访通道,所有的拜访通过网关进行拜访
- 禁用 curl,wget,python 命令,大部分病毒脚本会利用这些命令近程下载病毒执行
- 禁用 crontab,如果零碎没有用到 crontab 的性能,就敞开掉,病毒会借助 crontab 进行复活
- 不应用 root 启动程序,应用程序不免有破绽,如果用 root 启动应用程序意味着一旦业务零碎被入侵,病毒能够间接掌控整个主机
- 通过官网下载 ssh 连贯工具,所有与服务器连贯的工具必须从官网下载,不要百度上搜寻下载,你下载的可能带病毒