阿里云ECS centos6被挖矿病毒kdevtmpfsi侵入解决过程

症状

学校组织的服务器最近HTTP请求很慢,理论上这个服务器的访问量在这个阶段不应该高。

远程连接服务器之后,发现CPU使用率接近100%,而一个叫kdevtmpfsi进程占用了99%的cpu资源,网上搜索了一下这个进程,发现是个挖矿木马进程。

解决过程

尝试杀掉进程和删除文件

ps -ef | grep kdevtmpfsi

发现有两个进程在运行,kill这两个进程并且删掉源文件之后,不到一分钟,这个进程又恢复了,删除的文件也恢复了。

然后我尝试使用systemctl查看这个进程是否有守护进程。

1
2
[root@iZm5ej3k8*******]# systemctl statu 28477
-bash: systemctl: command not found

查阅资料得知这个服务器的系统是centos6 不支持systemctl命令。

只能换个方法了。

使用service代替systemctl

查到kdevtmpfsi的守护进程为kinsing

附对照表

引自: http://www.361way.com/systemctl/3709.html

任务 旧指令 新指令
使某服务自动启动 chkconfig –level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig –level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息)systemctl is-active httpd.service (仅显示是否 Active)
加入自定义服务 chkconfig –add test systemctl load test.service
删除服务 chkconfig –del xxx 停掉应用,删除相应的配置文件
显示所有已启动的服务 chkconfig –list systemctl list-units –type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

kill守护进程

  1. 杀掉守护进程 kinsing ,然后删除文件。

  2. 杀掉kdevtmpfsi进程,然后删掉文件。

  3. 全局搜索这两个文件,并删除。

    1
    2
    find / -name "*kdevtmpfsi*"
    find / -name "*kingsing*"

在我第一次操作过程中,由于只是关掉了进程并没有删除文件,所以又重新运行了。

5分钟过去了,没事。

9分钟过去了,没事。

10分钟后又来了!

草。。。

屏蔽IP地址,重置公钥和实例远程登录密码

  1. 发现这两个进程有ip地址一直保持连接,而且ip地址属于俄罗斯。

  1. 重置ssh公钥
  2. 重置实例远程登录密码

10分钟后又来了!!

还换了俩IP地址。

阿里云提交工单

工单交流了几个小时后,阿里云建议我备份数据,然后初始化磁盘。

我tm那么多数据,关键还不全是我的。。

查看是否有定时任务

1
2
3
4
# 查询
crontab -l
# 删除
crontab -e

没有发现可疑定时任务。

最终解决办法

大家不要学我 Σ( ° △ °|||)︴ ,我最后迫不得已选择了用魔法打败魔法

我写了一个shell脚本,用来kill这两个进程,创建了一个定时任务,一分钟执行一次。

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
kill -9 $(ps -ef | grep kdevtmpfsi| grep -v grep | awk '{print $2}')
kill -9 $(ps -ef | grep kinsing| grep -v grep | awk '{print $2}')
rm -rf /tmp/kdevtmpfsi
rm -rf /var/tmp/kinsing
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

后续

后来解决了。

因为服务器学校组织的,长时间下来积累了一些废弃的应用和开放了一下不必要的端口,后来根据阿里云安全中心的提示,发现是 redis 6379配置问题。

具体相关可以查看阿里云的文档。

https://help.aliyun.com/knowledge_detail/37447.html