mongoDB程序员

Mongo安全 之 拾遗

2017-06-01  本文已影响42人  诺之林

目录

本文的软件和命令基于Ubuntu 1604 LTS系统 Mongo版本使用最新版本 安装方法参考Mongo安全 之 SSL

引言

在上两篇文章Mongo安全 之 鉴权Mongo安全 之 SSL

我们详细讨论Mongo安全的两个主要方面: 鉴权和SSL

本文将汇总Mongo安全的其他细节 让大家对Mongo安全有一个完整的认识

防火墙

其实防火墙并不属于Mongo 而是系统范畴 但是为了Mongo安全的考虑 我们有必要了解下系统常见防火墙的设置

Ubuntu系统默认已经安装了防火墙软件 只是默认没有打开

$ which ufw
/usr/sbin/ufw

$ sudo ufw status
状态:不活动

配置ssh

在打开ufw防火墙之前 我们首先先更新下配置 允许ssh访问

sudo ufw allow ssh

接着 就可以打开ufw防火墙了

sudo ufw enable

此时 再次查看ufw的状态

sudo ufw status

打印结果如下

状态: 激活

至                          动作          来自
-                          --          --
22                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)

配置端口

接着 我们测试本地与Ubuntu机器Mongo服务的连通性

nc -z 192.168.56.101 27017

没有返回成功的信息 说明Ubuntu系统的该端口不能访问

nc的详细使用可以参考nc命令用法举例

于是 我们修改ufw的防火墙设置 允许访问27017端口

$ sudo ufw allow 27017

$ sudo ufw status
状态: 激活

至                          动作          来自
-                          --          --
22                         ALLOW       Anywhere
27017                      ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
27017 (v6)                 ALLOW       Anywhere (v6)

此时 我们再次测试本地与Ubuntu机器的连通性

$ nc -z 192.168.56.101 27017
Connection to 192.168.56.101 port 27017 [tcp/*] succeeded!

返回成功的信息 说明Ubuntu系统的该端口已经能够正常访问

配置地址

上述端口会开放给所有的机器访问 因此 我们为了进一步限制访问范围 还可以配置允许访问的ip地址

sudo ufw delete allow 27017

sudo ufw allow from 192.168.0.0/16 to any port 27017

通过上述配置 只允许192.168..范围的ip 访问27017端口

bindIp

除了系统防火墙这一道"安全保障"之外 Mongo也有类似防火墙的白名单机制: bindIp

打开/etc/mongod.conf文件 我们发现bindIp的值是这样的

bindIp: [127.0.0.1, 192.168.*.*]

上述并不是默认配置 而是笔者修改后的结果

bindIp设置了Mongo服务允许访问的ip地址和范围

我们修改bindIp配置如下

bindIp: 127.0.0.1

然后 重启Mongo服务

sudo service mongod restart

此时 我们再次测试本地与Ubuntu机器的连通性

nc -z 192.168.56.101 27017

没有返回成功的信息 说明Ubuntu系统的Mongo服务27017端口又不能访问了

所以 通常情况下 防火墙和bindIp都需要配置以提高安全性

安全配置

除了配置文件中的bindIp选项外 还有许多其他的安全配置

net.http.enabled 设置成false以关闭http访问

net.http.JSONPEnabled 设置成false以关闭JSONP访问

net.http.RESTInterfaceEnabled 设置成false以关闭RESTful访问

通常情况下 上述访问权限 都是默认false的 所以在没有需求的情况下不要添加这些访问配置或设置成false

除了上述这些安全配置外 Mongo服务的配置选项还有很多 详细的可以参考Configuration File Options

其他

当然 除了上述详细讨论的一些方法外 还有一些细节供参考

小结

本文作为Mongo安全三篇的最后一篇 从鉴权和SSL以外的角度 再次审视了Mongo的安全机制

希望能够让大家对Mongo安全有一个完整的认识 当然 碍于笔者的能力有限 希望有经验的读者分享你的�认识 大家一起讨论进步

参考

更多文章, 请支持我的个人博客

上一篇 下一篇

猜你喜欢

热点阅读