问题描述

问题详情

All your data is backed up. You must pay 0.0063 BTC to 1HcZssLejAL33y2EyBqwk3ot2vAiUtkoLG In 48 hours, your data will be publicly disclosed and deleted. (more information: go to http://iplis.ru/data01)After paying send mail to us: dzen+1rr2j7@onionmail.org and we will provide a link for you to download your data. Your DBCODE is: 1RR2J7

前几日曾尝试在云服务器上安装了 MongoDB 数据库,并新建了数据库及集合,新增多条数据以供本地测试使用,一切都是那么地顺利!

But 问题来了,今日打开 Navicat 查看数据库信息后,发现数据没有了…… 起初还以为是网络的问题导致最终数据没存储成功,于是乎又重新新建了数据库并增加了数据信息,看起来一切正常。可是当我本地通过 Postman 测试新建项目服务中写的接口时,咦~ 怎么为空呀,我明明添加数据了的呀,这是怎么一回事儿呢???

好好好,我查看数据库发现只给我留下了一个名为 【READ_ME_TO_RECOVER_YOUR_DATA】的数据库,里面留下了 这些字段信息:All your data is backed up. You must pay 0.0063 BTC to …… 🤦这才反应过来被黑了!多次怀疑过是自己初次接触 MongoDB,认为可能是服务器内配置或操作失误的原因,怀疑过网络,怀疑过自己,就是没想到黑客,我真是 😭😭😭

下面是一些详细的内容展示信息:

通过自己查看,也可大致判断出 是要我去支付 xx 才可以,Google 给出了详细翻译:

解决方案

下面详细介绍如何通过各种方法来保护您的 MongoDB 数据库:

1. 启用身份验证

MongoDB 默认不启用身份验证。启用身份验证是防止未经授权访问的首要步骤。

  • 修改配置文件(通常为 mongod.conf):

 vi /etc/mongod.conf
security:
  authorization: "enabled"
  • 重启 MongoDB 服务以应用更改:

sudo systemctl restart mongod
  • 创建管理员用户: 连接到 MongoDB shell

mongo

admin 数据库中创建一个具有管理员权限的用户:

use admin
db.createUser({
  user: "admin",
  pwd: passwordPrompt(),   // 强密码
  roles: [{ role: "root", db: "admin" }]
})
  • userAdminAnyDatabase角色:允许用户管理任何数据库的用户和角色,但不允许访问所有数据库的数据。

  • root角色:用户能够访问和管理所有数据库的数据 。

  • 退出: 退出 MongoDB shell

exit

2. 配置网络安全

  • 编辑 mongod.conf 文件 限制 bindIp 设置,使 MongoDB 只能从特定的、安全的内部网络访问:

 vi /etc/mongod.conf
net:
  bindIp: 127.0.0.1,192.168.1.100  # 例子,添加内部网络的 IP,注意是内部网络,如果不是,还是可以写为0.0.0.0
  port: 27017
  • 配置服务器防火墙: 仅允许来自特定 IP 的连接:

使用 firewalld 添加允许特定 IP 地址访问特定端口的规则,您可以使用 firewall-cmd 命令。以下命令将为 IP 192.168.1.100 允许访问端口 27017(默认 MongoDB 端口):

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="27017" protocol="tcp" accept'
# 重新加载防火墙规则
sudo firewall-cmd --reload

# 检查规则是否添加成功
sudo firewall-cmd --list-all

3. 测试连接:本地 Navicat

  • 重启 MongoDB

sudo systemctl restart mongod
  • 检查 MongoDB 服务状态:在本地测试之前务必确保 MongoDB 服务状态是启动的

sudo systemctl status mongod

3.1. 未配置密码 连接

3.2. 配置密码 连接

新建连接配置密码后,再次打开连接就不会提示未授权啦~

4. 定期更新和打补丁

  • 保持 MongoDB 最新 :定期检查 MongoDB 的更新和安全补丁,并及时安装。

sudo yum update
sudo yum upgrade mongodb-org

5. [ 日志监控和审计 ]

  • 开启审计功能 来追踪和记录关键的数据库活动。 在 mongod.conf 中添加或修改审计配置:

auditLog:
  destination: file
  format: BSON
  path: /var/log/mongodb/audit.bson
  filter: '{ atype: { $in: [ "authenticate", "dropDatabase", "dropCollection", "createIndex", "delete" ] } }'
  • 使用日志管理工具(如 Logstash 或 Fluentd)集中管理和监控日志。

6. [ 备份和恢复 ]

  • 定期备份数据库: 使用 mongodump 工具定期备份数据库。

mongodump --archive=/var/backups/mongo-backup-`date +"%Y-%m-%d"`.gz --gzip
  • 制定灾难恢复计划:确保在数据丢失或损坏时,您有可行的恢复策略。

告诫与警示

经此一事,明白事事需考虑周全,对于非专业网络安全人士,同样也需要注意考虑安全的问题,增强个人安全意识,一定要采取针对性措施,以避免或减少被黑客攻击的风险,共勉!