MongoDB被黑经历,yapi登录显示用户不存在

Mongodb被黑经历

被黑与安全措施

昨晚有人跟我说登录yapi显示用户不存在,我自己尝试了管理员账户也是如此。第一个想到的是会不会数据库掉了,ps aux | grep mongod之后发现仍然在,接着去查看mongodb,看到yapi的数据库显示为(empty),一开始不明白,看了SegmentFault,结果发现自己的情况是一摸一样的,有一个Warning的数据库,里面还有一个Readme表,被黑无疑。

image.png

Hello! Your database has been uploaded to our server. To get your database back, you have to pay $ 300 for this bitcoin wallet: 1YxJc6DKvHHRNNtM4UxRnzPqBp5cEWJVe . 
You can buy bitcoin here 
https://localbitcoins.com 
using this guide 
https://localbitcoins.com/guides/how-to-buy-bitcoins . 
After payment write to me in the mail with your DB IP: [email protected] and you will receive a link to download your database dump. 
Also, don't forget about GDPR. 

原作者描述如下:
首先要进行反思,为什么会被攻击。首先这种攻击肯定是AOE,对于我们这样的学生项目也没什么必要进行勒索,那么问题往往就出现在自己这里。当我拿到腾讯云学生服务器的时候,其安全组策略是默认开放全部端口,并且我使用了mongodb的默认27017端口,所以如果黑客进行了广撒网式的攻击,这样的安全策略式很容易中招的。另外我记得我开启了mongod的auth模式,应该不是因为我使用了无认证模式导致数据库随便就被黑了。

所以参考Mongodb黑客事件浅析,应当做一些安全措施:

  • 在服务器供应商处关闭不必要对外开放的端口,配置安全组策略
  • 将mongodb的运行端口设置为27017之外的端口
  • 在启动mongod的时候一定要带上--auth,mongodb创建用户参考create user

可能碰到的问题

npm install卡在rollbackFailedOptional

这个实际上是连接npm服务器超时的结果,很大可能是因为设置安全组策略的时候,没有对出站的流量进行允许,导致npm无法访问到服务器,在服务器供应商处将出站安全配置为允许所有。

userAdminAnyDatabase鉴权失败

这个应该是因为当前使用的数据库不是admin数据库,根据博客园,这个用户身份应该只能在admin数据库中使用,用于管理用户。所以要创建一个访问某个数据库的用户身份,需要切换到对应的数据库,再创建用户,比如:

use yapi
db.createUser(...roles: [ { role: "readWrite", db: "yapi" } ]...)

本人与原作者经历完全相同。
原作者:https://blog.csdn.net/VanciorH/article/details/80265681?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2

你可能感兴趣的:(MongoDB被黑经历,yapi登录显示用户不存在)