今天上班,发现公司的服务都没了,进服务器一看,好家伙,top一看,cpu直接飙到百分之80,还是个乱码的进程名称,一看就是挖矿的病毒。
然后我查资料,说是先通过 /proc/pid/exe 找到进程路径,但是我查了,直接报exe目录是空的。
这就神奇了,和网上说的不一样。是不是情况不一样。
然后我去看了定时任务:crontab -e 发现新增的一个定时器,名字叫.systemd-service.sh。
然后sh逻辑是显示一串类似秘钥的东西。
所以这个挖矿病毒的逻辑应该是通过redis的6379端进进入,得到ssh远程登录权限,然后植入病毒的。
处理:
1、清除定时器中的任务:crontab -e 进入 进入编辑模式,删掉命令, wq保存。
2、进入 cd /etc/cron.d/ 删掉0systemd-service 这个也是定时任务 (这个文件的名字可能各不相同)
3、然后进入阿里云管理后台,看到一个告警
把这个也隔离了。
4、修改root用户的密码,重启实例。
5、修改redis的密码 修改为内网访问,修改6379端口或不对外请求。
总结:之所以中病毒,要么是没设置redis 密码,要么是对外请求且密码过于简单,这点很重要。
还有就是中了病毒后,可以去阿里云管理后台,看告警,阿里云的安骑士还是不错的,会提供很多信息,拦截啊 ,隔离啊什么的。
清除病毒文件后,一定要修改用户密码。
最后,如果一时半会解决不了,可以用下面这个脚本,弄成定时器,能够清除掉占用cpu的进程
--------------------------------------------------------------------------------------------------
#!/bin/bash
/bin/ps axf -o "pid %cpu" | awk '{if($2>=69.0) print $1}' | while read procid
do
kill -9 $procid
done
--------------------------------------------------------------------------------------------------
红色的数字是可以自己设定的上限,当cpu占用超过这个值时,会自动kill掉,至少能保证短时间没有问题
然后加入到定时任务里面就行
crontab -e
* * * * * ~/kills.sh