mongodb禁止外网访问以及添加账号
未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬。怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性。
一直未给自己的mongodb数据库设置账号密码,也没禁止外网访问,等同于在这个开放的网络世界里裸奔了几个月
,不被人惦记才怪呢。
昔人有云:跌倒并不可怕,可怕的是在同一个地方跌倒两次。
亡羊补牢,犹未迟也。
那么我将从两个方面提高mongo数据库的安全防护系数
1.设置mongodb外网禁止访问
启动数据库时,额外添加--bind_ip 127.0.0.1即可
./mongod --bind_ip 127.0.0.1 --dbpath /data/db --auth
也可以通过修改/etc/mongod.conf文件添加一行代码
#只监听本地接口,多个接口用,隔开
bind_ip = 127.0.0.1
2.为数据库设置账号密码登录权限
为了保证数据库需要账号密码才能连接,那么在启动数据库的时候需要添加auth参数
./mongod --dbpath /data/db --auth
也可以通过修改/etc/mongod.conf文件添加一行代码
auth = true
这样在进行数据库连接的时候需要相应的账号密码才能成功访问。
如果之前数据库未设置账号密码的话,那么需要先添加一个管理员账户,
> use admin
switched to db admin
> db.createUser({user:"root",pwd:"123456",roles:["userAdminAnyDatabase"]})
Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }
此时我们就成功的创建了一个管理员账户 账户名 root 密码 123456 ,此时执行show dbs会出现如下报错
> show dbs
2017-12-03T22:14:58.418+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
} .....
上边提示意为当前admin数据库未经授权无法执行指令,因此需要以管理员身份登录验证,如下操作
> db.auth('dpd','123456')
1
上边执行登录操作,输出结果 1,说明登录成功。此时再执行 show dbs 则会成功输出结果。此刻我们是以管理员的身份登录数据库,如果切换到test数据库,执行db.blog.insert({name:1})会报错如下,同样意为该数据库未经授权无法操作:
> use test
switched to db test
> db.blog.insert({name:})
WriteResult({
"writeError" : {
"code" : 13,
"errmsg" : "not authorized on test to execute command { insert: \"blog\", documents: [ { _id: ObjectId('5a240d8e2d43081ea4271cc8'), name: 1.0 } ], ordered: true }"
}
})
所以要为test数据库添加一个用户,并以该用户身份登录才可以执行对该数据的操作。
> db.createUser({user:'use1',pwd:'123456',roles:["readWrite"]})
Successfully added user: { "user" : "use1", "roles" : [ "readWrite" ] }
> db.auth('use1','123456')
1
> db.blog.insert({name:})
WriteResult({ "nInserted" : 1 })
>
至此,完成了通过账号和密码登录权限对数据库的访问和操作。
那么最终标准的连接test数据库的URI语法如下:
mongodb://use1:123456@localhost:27017/test
通过设置上述两道关卡,妈妈再也不用担心我的学习啦
mongodb禁止外网访问以及添加账号的更多相关文章
- mongodb数据库禁止外网访问以及添加账号
未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...
- Tomcat禁止外网访问
Tomcat中某个应用禁止外网访问 Tomcat中有多个应用,由于权限需要,将某一个主机禁止外网访问.在config/server.xml中设置: <Host name="172.16 ...
- 使用iptables禁止外网访问tomcat的8080端口
如果项目同时使用了nginx反向代理服务器和tomcat等web服务器,并且两台服务器都暴露于公网中,那么通常我们会禁止外网直接访问tomcat,因为以下原因: 1.如果可以直接访问tomcat,那么 ...
- tomcat manager 禁止外网访问 只容许内网访问
参考:http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html A default Tomcat installation includes ...
- iptables禁止外网访问redis server服务默认端口6379的命令
//只允许127.0.0.1访问6379 iptables -A INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT //其他ip访问全部拒绝 iptab ...
- 怎样从外网访问内网MongoDB数据库?
本地安装了一个MongoDB数据库,只能在局域网内访问到,怎样从外网也能访问到本地的MongoDB数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MongoDB数据库 默认安装 ...
- 外网访问VMware虚拟机
目的: 主机上安装了VMware,VMware上安装了Linux虚拟机(我安装的是Centos7).我想让虚拟机向外提供Web服务.本文记录如何让我的主机和外网用户可以访问VM虚拟机上的Web. ...
- WinServer 之 内网发布网站后端口映射外网访问
内网IP只能在内网局域网访问连接,在外网是不能认识内网IP不能访问的.如有路由权限,且路由有固定公网IP,可以通过路由的端口映射,实现外网访问内网.如无路由,或路由无公网IP,需要用到第三方开放的花生 ...
- 利用nat.123实现SVN外网访问
背景: 在高效平台的合作中,我们用到了很多团队合作开发的工具,比如SVN.禅道.Confluence等等.有了这些工具,我们可以很好的进行团队合作交流.但同样有所限制,这些工具都是发布在局域网中,只能 ...
随机推荐
- JavaWeb-HttpServletResponse对象一
web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应的response对象.resquest和response对象既然代表请求和响应,那么要 ...
- Java时间处理类SimpleDateFormat的parse和format方法的正确使用
Java中怎么才能把日期转换成想要的格式呢,或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类可以实现. SimpleDa ...
- Lepus_天兔的安装
一.安装平台 Centos 32位 二.依赖软件 依赖软件包:mysql.php.apache集成在xampp中,python,MySQLdb模块安装包在lepus安装包目录中 以下标红软件是必须安装 ...
- PAT 1115 Counting Nodes in a BST[构建BST]
1115 Counting Nodes in a BST(30 分) A Binary Search Tree (BST) is recursively defined as a binary tre ...
- android ListView SimpleAdapter 带图片
main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...
- Linux系统——源码编译安装
记得要先去把httpd-2.2.9.tar.gz通过xftp进行文件传输第一步:yum仓库下安装编译环境的支持程序 #yum -y install gcc gcc-c++ make 第二步:将源码包h ...
- 63. Unique Paths II(有障碍的路径 动态规划)
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- 哪个地图API 好用
之前我们能用的地图软件还寥寥无几,而且一个地图包动辄就上百M,还不支持GPS,没有实时路况,没有卫星图,一年也未必更新一次.现如今的地图功能已经极大丰富了,开发者的项目选择性也很大,地图哪个受众比较多 ...
- iOS 总结APP间跳转的常用以及非常用需求 APP跳转Safari APP跳转APP
需求驱动技术,有了新的需求,旧技术无法实现时,就会有新的技术出现. 一般的APP跳转需求有以下几种: 1. 从自己的APP跳转到别人的APP. 2. 从自己的APP跳转系统APP. 3. 让别人的A ...
- C#数组的Map、Filter、Reduce操作
在Javascript.Python等语言里,Map.Filter和Reduce是数组的常用方法,可以让你在实现一些数组操作时告别循环,具有很高的实用价值.它们三个的意义大家应该都清楚,有一个十分形象 ...