服务器一直100%负载、CPU100%使用率

问题

远程连接服务器,执行命令速度明显慢到离谱。通过宝塔,发现负载状态和CPU使用率都跑到了100%

原因

挖矿病毒

经过查找分析,是一个叫做zzh挖矿病毒导致的。

Redis未授权

这个病毒是哪里来的呢?

后来查找分析,知道这个病毒是因为Redis一开始没有设置登录密码导致的。具体漏洞网上是这么说的:

pSZypfe.png

解决

  1. 首先想到的是通过ps -ef或者top查找资源占用率异常的进程(结果失败,因为这两条命令查不出来)

    注:top虽然也查不出来,但是可以发现us占到了90+%,这明显不正常

  2. 使用htop命令查找,如果没有这条命令,需要安装一下:

    1
    2
    yum -y install epel-release
    yum -y install htop
  3. 首先发现前两行跑满了,变成了红色。然后下面的进程列表也可以看到有几个zzh的进程占满了资源
    pSZyCSH.png

  4. 使用kill -9 PID号把这几个进程杀死

  5. 执行ps -ef | grep newinit,将查到的几个进程也用上一步的命令杀死

  6. 再执行这几条命令(清除病毒

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    cd /usr/bin
    //这一段为了修改chatrr命令的权限
    cp chattr chattr.new
    chmod a+x chattr.new
    chattr.new -i chattr
    rm -f chattr.new
    chmod a+x chattr

    cd /etc
    //这一段为了删除zzh文件
    chattr -ia zzh //少了这一步,删除时会提示没有权限
    rm -rf zzh
    rm -rf zzhs

    //这一段为了删除newinit.sh文件
    chattr -ia newinit.sh //少了这一步,删除时会提示没有权限
    rm -rf newinit.sh
  7. 再使用htop命令查看有没有zzh进程了,如果有的话,再使用kill -9 PID号杀死进程

  8. 同样对第5步中newinit.sh进程也再检查一次,操作同第7步

遗留问题

经过上述步骤,通过宝塔可以发现已经没有恶意程序占用资源了

但是出于想要彻底清除病毒的目的,我又通过find / -name zzh命令发现还存在/etc/cron.d/zzh文件,也就是说定时任务中还有这个文件,通过vim编辑,发现里面也就一行命令*/50 * * * * sh /etc/newinit.sh >/dev/null 2>&1。(这个文件我想删除,但是怎么都删除失败了)

以及通过crontab -e查看当前在执行的定时任务程序,发现也是上述那条命令*/50 * * * * sh /etc/newinit.sh >/dev/null 2>&1,输入dd命令,用wq!也保存不了。这个命令内容其实存储在/var/spool/cron/用户名文件中,但是这个文件也不能通过chmod修改读写权限

所以,虽然解决了负载和CPU资源占用问题,但是这个病毒搞的定时任务感觉并没有彻底清除。

Contents
  1. 1. 问题
  2. 2. 原因
    1. 2.1. 挖矿病毒
    2. 2.2. Redis未授权
  3. 3. 解决
  4. 4. 遗留问题
|