zoukankan      html  css  js  c++  java
  • 记录一次php-fpm 进程数不足而发现的挖矿病毒

    1. 背景:PHP服务器设置了200个进程,dynamic 方式。接口请求并发不是很大,1秒中100左右,讲道理完全够用,但是问题是:启动了服务后过1分钟PHP日志就会出现进程数不够的提示。而且请求接口刚开始很快,然后是越来越慢,最慢的时候请求一次接口的响应时间能达到40多秒,因为接口里只有数据库操作是最慢的,数据库也是正常插入操作。所以不可能导致接口响应时间这么慢。但是找了一段时间也没什么进展。就只能把某些不是急需的接口暂停掉。发现进程数能勉强够用。但是这样做不是解决方法。所以接下来又继续找。
    2. 今天和另一位同事在排查的时候,排查了一些php-fpm进程设置方面的可能的问题后,就开始看资源的占用。内存和CPU占用很高,通过top命令 发现了kdevtmpfsi 进程占用资源特别高。(本人菜鸟,不知道这是啥)然后他跟我说这是挖矿病毒:)(嘿嘿,还是第一次遇到 ),然后就开始搞如何干掉这个病毒
    3. 第一次:https://blog.csdn.net/Owen_goodman/article/details/103731981
    4. 杀掉进程后,过了一会,进程又自己启动了。第二次:杀掉进程后加入了一些命令
      命令
      touch /tmp/kdevtmpfsi && touch /var/tmp/kinsing
      
      echo "everything is good here" > /tmp/kdevtmpfsi
      
      echo "everything is good here" > /var/tmp/kinsing
      
      touch /tmp/zzz
      
      echo "everything is good here" > /tmp/zzz
      
      chmod go-rwx /var/tmp
      
      chmod 1777 /tmp

      但是过了一会又又又又又又启动了。最后没办法,写了一个定时脚本,每分钟杀死一次。

      #!/bin/sh
      
      kdevtmpfsi_pid=`ps aux | grep kdevtmpfsi | grep -v "grep" | awk '{print $2}'`
      kinsing_pid=`ps aux | grep kinsing | grep -v "grep" | awk '{print $2}'`
      sudo kill -9 $kdevtmpfsi_pid 
      sudo kill -9 $kinsing_pid
      sudo rm -f /tmp/kdevtmpfsi* /tmp/kinsing
      
      
      # 除了root用户以外,其他用户创建的定时任务将被阻止
      # touch /etc/cron.allow
      # echo “root” > /etc/cron.allow
      View Code
    5. 后来换了一台新的服务器
    6. 再后来,看到了一篇博客:https://learnku.com/articles/52350       提到了产生病毒的其中一个原因是公网开放了9000 端口,而我这个服务器确实开放了9000端口,(因为分离了nginx 和 PHP),然后再原来那台有病毒的服务器上实验了一下,观察一段时间发现病毒进程没有再启动了哦。做法:把安全组开放的9000端口设置为只能nginx服务器的IP访问,其他IP禁止访问。再把kdevtmpfsi 和 kinsing进程杀掉,删除/tmp/kdevtmpfsi    /tmp/kinsing。  不幸的是又特么的出现了,fuck。
    7. 继续看  : https://stackoverflow.com/questions/60151640/kdevtmpfsi-using-the-entire-cpu       Ubuntu系统上在/var/spool/cron 目录下有crontabs目录,里面是定时任务的文件,发现了www-data用户的定时任务,终于找到了,如图,我把它给注释掉了。杀掉进程继续观察
  • 相关阅读:
    C# Socket TcpClient 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
    C#编程使用Managed Wifi API连接无线SSID
    中国最精确的电子地图,可以找到你家哦
    利用mysql数据库中的TMD表修复“is marked as crashed and last (automatic?) repair failed”的错误 Database query error
    Google Directions API 中路线编码解析
    c语言 nmealib-0.5.3 学习 简单代码 ,供参考
    【转】IT管理人才必备的十大能力
    【转】10个让人受益的管理原理
    【转】耐心看
    【转】对于移动APP测试的一个小技巧
  • 原文地址:https://www.cnblogs.com/bneglect/p/14461472.html
Copyright © 2011-2022 走看看