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