1 发现问题

在腾讯云上购买了一个centos7的服务器,平时用来练手,偶尔也安装一些程序进行测试,上面安装了mysql和redis,前段时间数据库经常掉线,连不上,到腾讯云后台进行查看,通过服务器实例的监控窗口,可以查看服务器的一些指标状态,包括CPU、内存、流量等数据,本来看到CPU使用超过了90%,然后用kill -9 pid,或者重启服务器,问题当时解决了,也就没有太注意,结果第二天发现,CPU的利用率又变成了90%以上,然后再杀进程。

刚杀完就出现新的进程,CPU利用率还是90%以上,查看CPU的名称,是kthrotlds,百度了一下,发现原来是挖矿程序。

2 尝试解决问题

还是依靠百度,看看大家都怎么处理这个问题,有专业人士给出详细的分析,参见https://www.360zhijia.com/anquan/447557.html,而且给出解决方法,参见https://github.com/MoreSecLab/DDG_MalWare_Clean_Tool,我看专业人士的分析,很多看不太懂,大致理解病毒是可以自我保护,你杀了进程,它通过定时任务还会启动,你修改定时任务,它在自启动程序里还会还原出定时任务,还会从网上下载病毒内容,内容写的很详实,我大概看了分析情况,然后按照给出的解决方法来尝试清除,github上面给出了清除程序,我根据说明将busybox上传到bin目录下。上传方式是将busybox放到一个固定的网络位置,比如xxxx/resource/busybox,然后利用vnc方式登录centos服务器,使用wget方式将busybox下载到centos服务器,同样道理将其它文件也下载centos服务器,然后运行clear_kthrotlds.sh,运行之后,进程没了,重启服务器,结果问题还是存在,kthrotlds进程又出现了。

我换了方式,在腾讯云后台设置服务器的安全组规则,将服务器的入站端口都关闭,只保留登陆用的22端口,将出站端口全部关闭,然后再杀进程,果然,cpu利用率变为小于5%,正常了,再通过top命令查看进程,kthrotlds进程没有了,但出现了好几个wget进程,这是要从网上来下载病毒程序。在腾讯云后台将端口打开,kthrotlds马上就回来了,说明,这个病毒没有清除干净,非常顽固。

问题没有解决,好在上面没有太重要的数据,还是重新安装系统吧,一劳永逸。

3 一些教训

我们碰到一些问题的时候,在解决问题的过程中,我们会学到很多东西。这次解决kthrolds挖矿病毒,虽然没有成功清除,也学到了不少centos操作知识,以及挖矿病毒方面的知识。分析了一下网上的解决方案没有奏效的原因,解决方案是3月初公布的,我的病毒发作是在4月底,可能是病毒有了变种或者更新,在没有彻底掌握病毒的前因后果,不能针对性的清除病毒文件,总的来说还是对centos操作系统原理不够熟悉,如果耐心的多看看病毒分析报告,然后再查查相关资料,彻底掌握病毒的原理,然后再慢慢清除,应该能够解决问题,但花费的时间会非常多,最终放弃是因为精力没有放到这上面,还想继续使用服务器,也就是直接重装系统来的方便。

亡羊补牢,出现问题了,我们还是要总结一些经验教训,杜绝以后再发生类似的情况。

3.1要勤备份

我这个服务器上面主要资料就是测试用的数据库mysql,上面有一些数据,好在平时在局域网测试的时候,也有一些备份,可能数据不够新,但还能用,当然如果是每天备份,可能会更好一些。而且,养成勤备份的习惯,我们可以应对一些突发状况,能够减少损失。这个问题,可以查查资料,看能不能写个定时任务,让数据库每天在固定的时间进行备份,或者手工备份。

3.2 设置好防护措施

病毒一般都是通过服务器的某些端口进行攻击,特别是中招之后,病毒会把这个服务器作为一个病毒源,去感染其它机器,所以做好防护工作,不仅是对自己的服务器负责,也是对他人的服务器负责。防护措施简单的来说可以有两个方面,一个是在后台,也就是腾讯云的安全组设置,设置服务器的入站规则和出站规则,入站规则可以逐步对使用的端口进行开放,对自己了解的端口进行开放。

出站规则可以全部开放,不影响使用,如果中招了,就要对出站规则进行梳理调试。

再一个就是服务器的防火墙的设置,centos7的防火墙用的是firewall。

systemctl start firewalld #开启

systemctl status firewalld #查看状态

systemctl enable firewalld #开机自启动

firewall-cmd --zone=public --add-port=80/tcp --permanent #永久开启80端口

firewall-cmd --zone= public --remove-port=80/tcp –permanent #永久关闭80端口

firewall-cmd --zone=public --list-ports #查看所有打开的端口

firewall-cmd –reload #重载后生效

通过防火墙来设置开放某些端口,这样能够控制外部程序的非法访问。

通过两层控制端口的开放和关闭,默认关闭端口,只有在使用的时候,明确知道外部访问服务器要通过哪个端口,我们再开放它,这样操作比较安全。

3.3 谨慎安装软件

这次的挖矿病毒,主要的问题应该是出在redis上面,服务器上安装了redis,但对软件不太了解,为了能尽快使用,在网上直接找了点资料,把访问权限全部放开,没有深入的评估一下软件的安全问题,挖矿病毒就是通过redis的漏洞,攻击服务器,如果绑定ip,不对所有的网络放开,可能会更安全些。还有就是没有设置密码,这两点很关键。这两个需要设置的内容,通过修改redis.conf实现。利用vi打开redis.conf。比如绑定本机访问和设置访问密码123456,则修改两个地方。

bind 127.0.0.1

requirepass 123456

修改这两个地方之后,进行保存,重启服务

cd /usr/local/bin

./redis-server /etc/redis.conf

这样就完成redis访问ip的控制和密码设置,增强redis的防护。

4 结语

对于服务器来说,安全问题至关重要,很庆幸我的服务器上面没有重要数据,但不能存在侥幸心理,在生产环境中,如果不注意防护,同样存在安全问题。腾讯云或者阿里云这些云服务器商,也会提供一些防护服务,可以有效防止病毒攻击,不过,费用不菲,好像腾讯一个月要小4000,就像房子一样,安全问题是服务器的刚需,在数据为王的时代,如果没有安全保障,数据也就没有了。

对于企业的服务器来说,还是要花钱买安全,做到万无一失,对我们自己用的服务器,也是要在技术上谨慎处理,尽量减小服务器的安全隐患。

记录遭遇挖矿程序kthrotlds的失败处理经历的更多相关文章

  1. zigw 和 nanoWatch, libudev.so 和 XMR 挖矿程序查杀记录

    最近这两天以来,服务器一致声音很响.本来以为有同事在运行大的程序,结果后来发现持续很长时间都是这样,并没有停的样子.后来查了一下,发现有几个可疑进程导致,干掉之后,果然服务器静悄悄了. 但是,问题并没 ...

  2. [zz]VC2005-应用程序正常初始化失败-0xc0150002

    最近几天被这个问题困惑了许久. 不禁感叹微软的东东真是越做越烂了,也终于明白了时隔12年大家仍然死守VC6的原因.. 用VC2005编译的程序,编译时没有任何错误,但是运行时就是提示“应用程序正常初始 ...

  3. SSH 暴力破解趋势——植入的恶意文件属 DDoS 类型的恶意文件最多,接近70%,包括 Ganiw、 Dofloo、Mirai、 Xarcen、 PNScan、 LuaBot、 Ddostf等家族。此外挂机、比特币等挖矿程序占5.21%

    SSH 暴力破解趋势:从云平台向物联网设备迁移 | 云鼎实验室出品 from: http://www.freebuf.com/articles/paper/177473.html 导语:近日,腾讯云发 ...

  4. 解决centos被minerd挖矿程序入侵方法

    记录一次服务器被入侵的解决方法 一:问题说明 1.我的服务器是使用的阿里云的CentOS,收到的阿里云发来的提示邮件如下 然后我查看了运行的进程情况(top 命令),看到一个名为minerd的进程占用 ...

  5. 项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”

    项目 XXX 的 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx” 编译新下载的代码出错 修改包管理器的源为 http://www.nuget.org/api/v2/ .重试后成功 ...

  6. Java程序员面试失败的5大原因

    下面是Java程序员面试失败最有可能的5大原因,当然也许这5点原因适用于所有的程序员,所以,如果你是程序员,请认真阅读以下内容. #1 说得太少 尤其是那些开放式的问题,如“请介绍下你自己”或“请讲一 ...

  7. 项目 Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”。。 0

    项目   Web 的 NuGet 程序包还原失败: 找不到“1.0.0”版本的程序包“Microsoft.Net.Compilers”.. 0 使用vs的NutGet包管理器时,另一台电脑从svn下载 ...

  8. windows服务器解决挖矿程序问题

    前几天发现服务器报警,cpu使用率已达100%,查资料知道正是最近比较流行的挖矿程序在捣鬼.我们使用的是阿里云的服务器,操作系统是windows server.网上有大量的资料讲如何处理,我把自己处理 ...

  9. 服务器被疑似挖矿程序植入,发现以及解决过程(建议所有使用sonatype/nexus3的用户清查一下)

    此次服务器被植入挖矿程序发现起来较为巧合,首先是上周三开始,我通过sonatype/nexus3搭建的仓库间歇性崩溃,但是每次重新start一下也能直接使用所以没有彻底清查,去docker logs里 ...

随机推荐

  1. 公司内网搭建代理DNS使用内网域名代替ip地址

    企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...

  2. 14 Live CDs for Penetration Testing (Pen Test) and Forensic

    http://www.ivizsecurity.com/blog/penetration-testing/live-cd-penetration-testing-pen/ Yesterday I wa ...

  3. Java杂记9—NIO

    前言 非阻塞IO,也被称之为新IO,它重新定义了一些概念. 缓冲buffer 通道 channel 通道选择器 BIO 阻塞IO,几乎所有的java程序员都会的字节流,字符流,输入流,输出流等分类就是 ...

  4. linux定时清理数据库过期记录

    cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start//没打开的话首先要打开. /sbin/service cr ...

  5. Net Core 生成图形验证码

    1. NetCore ZKweb       在我第一次绘制图形验证码时是采用的ZKweb的绘制库,奉上代码参考      public byte[] GetVerifyCode(out string ...

  6. 【转】网上看到的“12个非常有用的JavaScript技巧”

    1) 使用!!将变量转换成布尔类型 有时,我们需要检查一些变量是否存在,或者它是否具有有效值,从而将它们的值视为true.对于做这样的检查,你可以使用!!(双重否定运算符),它能自动将任何类型的数据转 ...

  7. Java多线程-概念与原理

    一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 ...

  8. Struts2文件上传--多文件上传(插件uploadify)

    公司需要把以前的Struts2自带的图片上传替换掉,因为不能一个file选择多个文件,本人直接百度搜索图片插件,  貌似就它(uploadify3.2.1)在最前面,也找过很多案例, 其中有不少问题, ...

  9. Oracle中的优化问题

    1. 在查询时, 尽量使用列名; 2. 在子查询和多表查询都可以达到目的时, 尽量使用多表查询; 3. 在集合运算中, 如果集合中含有null, 那么不能用not in, 但可以用in(可以理解为nu ...

  10. 深入解读Resnet

    残差网络的设计目的 随着网络深度增加,会出现一种退化问题,也就是当网络变得越来越深的时候,训练的准确率会趋于平缓,但是训练误差会变大,这明显不是过拟合造成的,因为过拟合是指网络的训练误差会不断变小,但 ...