前言
最近我们团队为了研究数据湖相关的技术,在阿里云服务中购买了云服务器,但是突然被告警提示被挖矿,而且要在一定期限内解决挖矿问题,否则就会被关停服务。
本篇记录了我们处理挖矿告警的过程,仅供参考。
一、服务器为什么会被告警挖矿?
云服务器中被恶意安装了脚本,然后脚本运行占用了大量的cpu 和内存,触发了云服务器监控的告警;
点击“详情”查看:
这里就可以看到挖矿程序的路径:/var/tmp/.22/mine。
二、如何查找和删除挖矿程序?
挖矿行为需要强大的算力支持,所以其一定会占用大量的cpu 资源,所以我们以此关键点展开,检查使用cpu资源较高的进程。
1.top命令查看进程的cpu占用情况
top
cpu 占用越多,该进程是挖矿进程的可能性越大,可以清楚的看到有进程竟然将cpu 的占用率达到了100% ;
2.通过pid进程号查找改程序所在目录
提示{pid} 为 top 命令 第一列对应的PID
ls -l /proc/{pid}| grep exe
这里可以清楚的看到改进程脚本所在的目录;
怀疑该目录(.22)下所有文件都为恶意挖矿程序,因为含有init和init.d这样的文件,这些明显为开机自启动程序。
3. 强制删除脚本文件(或者目录)
rm -f 文件的路径
4. 强制杀死挖矿进程
kill -9 {pid}
通过以上步骤,我们已经删掉了脚本文件,并且杀死了进程,此时cpu 的占用应该会显著下降,可以使用top 命令在观察下;
5. 检查是否有脚本的定时任务
防止定时有挖矿的定时任务存在;
5.1 检查定时任务是否开启:
systemctl status crond
5.2 查看存在的任务:
可以到/var/log目录中查看下日志。
grep 文件目录 *
发现cron定时任务日志中使用hadoop用户每一分钟执行一次/var/tmp/.22/auto文件。
(1)首先检查root用户
crontab -l
(2)然后检查hadoop用户。
crontab -l
如果发现有可疑的任务 则编辑删掉任务(记得看下这个脚本的位置将脚本也一起删掉):
vi /etc/crontab
然后重新加载任务:
/bin/systemctl restart crond
6. 检查是否被创建了其它用户
cat /etc/passwd
如果发现被创建了用户则进行删除:
删除用户和用户组:其中 username 是需要删除的用户的用户名
userdel -r username && groupdel username
7. 开启服务器防火墙
关闭防火墙端口可能会导致系统暴露在网络攻击的风险之下。
(1)开启防火墙
systemctl start firewalld ;
(2)查看防火墙状态
systemctl status firewalld ;
对于需要开放和关闭端口,通过命令手动添加:
–开放端口
firewall-cmd –zone=public –add-port=端口/tcp –permanent ;
firewall-cmd –reload ;
–关闭端口
firewall-cmd –zone=public –remove-port=端口/tcp –permanent;
firewall-cmd –reload ;
8. 登录阿里云的后端在云安全中心处理告警事件
当出现挖矿事件时,云安全中心会产生挖矿程序的告警事件,在这个列表下单击操作列的处理,完成处理。