mongodb删库札记

非常严重的事件,个人网站又被删库了。
9月23日才被删除一次,你大爷的。
好好看看mongodb的安全机制,怎么老被删库啊。


9月23日的安全改造加了一下,加了一个--bind_ip,以为这就是限制了外部可以访问的IP,其实这个参数针对的是本机有多个IP的情况下,指定通过某一个IP访问,而不是限制外部的IP。

被删库原因

公网访问数据库没做安全限制。

最开始在服务器上部署mongodb的时候是考虑到数据库安全性问题的,按照网上的教程添加了admin数据库和超级管理员,应用数据库管理员账号,但是启动数据库的时候没有启用安全限制,即启动数据库的时候没有加--auth参数,导致数据库启动后仍然没有鉴权,从而仍然不需要用户名密码直接从公网上访问数据库,最终导致数据库被删。

深层次的原因是对mongodb不太熟悉照成。

整改方案

还原数据库
mongorestore -d itclj --host=x.x.x.x /home/mongodb/back/itclj
授权访问
  • 创建超级管理员

由于mongodb数据库没有做访问鉴权,直接输入命令mongo进入mongodb的控制台。执行use admin命令切换到admin数据库,3.X版本的是没有这个库的,没关系照样可以切过去,在里面添加超级管理员账号后会自动创建该库。执行show users查看刚刚添加的超级管理员已经添加成功,该账号具有所有数据库的管理权限。

use admin;
db.createUser(
    { 
          user: "root",
          pwd: "XXXXXX",
          roles: [
              { role: "userAdminAnyDatabase", db: "admin" }
          ]
    }
);
show users;
  • 创建应用库管理员

创建应用库管理员的步骤和创建超级管理员的步骤一致。

use itclj;
db.createUser(
  {
    user:"itclj",
    pwd:"XXXXXX",
    roles:[
      {role:"readWrite",db:"itclj"}
    ]
  }
);
show users;

上述命令中可以看出我们在itclj这个应用库中创建了一个itclj用户,该用户具有itclj库的读写权限。

  • 重启数据库

停止

./mongod --shutdown --dbpath=/home/mongodb/db

启动

./mongod --auth -f /home/mongodb/bin/mongodb.conf

--auth参数非常重要,表示数据库需要授权访问。

数据库重启完毕后通过Robomongo这个mongodb的客户端工具远程访问,发现已经不能直接进入mongodb数据库了,设置用户名密码后便可顺利登陆。


原文:http://www.itclj.com/blog/59dcd9f681c06e4103ef5124

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值