mongodb删库札记
来源:互联网 发布:编程图片素材 编辑:程序博客网 时间:2024/06/04 19:53
非常严重的事件,个人网站又被删库了。
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
- mongodb删库札记
- MongoDB学习札记
- MongoDB学习札记
- Python札记 -- MongoDB模糊查询
- 札记
- 札记
- 札记
- 札记
- 札记
- 札记
- 札记
- 札记
- 札记
- 札记
- 札记Microsoft基本类库应用程序框架
- C++Primer学习札记_标准库String类
- C++Primer学习札记_标准bitset库
- 南方札记
- Linux下的虚拟地址映射详解(二)线性地址到物理地址的映射
- JAVA之StringBuilder类
- Pandas+groupby用法讲解
- java鬼混笔记:lucene 9、查询结果高亮
- 使用 Python爬取龙珠超下载链接地址
- mongodb删库札记
- 转载(springmvc+spring+mabatis)配置
- 1.基础语法(2)变量
- 一、ajax基础语法使用(Ajax入门)
- bzoj3400 [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队
- 面试中遇到的有趣的小问题
- Java语言中String、Integer、int相互间的转换
- (网易2018校招笔试)[编程题] 游历魔法王国
- AspectJ