/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

MongoDB在Windows Server 2012 R2中的安全部署

2017-02-13 十有三 0 浏览:1万+ 数据库 MongoDB

前段时间MongoDB黑客赎金事件搞得沸沸扬扬,很多服务器都纷纷中招。最近正好有台新服务器要配置MongoDB的生产环境,于是记录下笔记,简单说下Windows Server系统要如何做好安全防护,防止数据库裸奔被人洗劫。本文重点介绍使用防火墙的白名单模式来限制公网非法IP,降低被攻击的可能性。

在Windows Server 2012 R2中,如果需要让MongoDB在公网访问(最好不要这样做),按照我自己的经验,必须做到这两点:1、配置身份认证/鉴权,2、防火墙设置白名单,只允许指定的IP地址公网访问!

PS:关于如何配置MongoDB的身份认证/鉴权,这里建议参考官方文档,本文重点在于说明如何配置防火墙白名单的步骤!这里介绍的是系统自带的防火墙,也就是Windows防火墙。如果使用的是其他第三方的防火墙,本文的思路仅供参考。

首先打开控制面板->Windows防火墙,一般情况下Windows防火墙默认使用的是白名单模式,即只有在白名单中的应用/IP/端口才可以连接服务器,未在白名单中的都不能与服务器进行连接。

如果不是使用白名单模式,就要到打开高级设置,重新设置下防火墙公网属性,详细步骤截图如下:

打开Windows防火墙高级设置

打开Windows防火墙属性设置

设置公网访问配置

如上图所示,公用配置文件、域配置文件和专用配置文件的防火墙状态一定要开启,毕竟我也不是专业的运维,还是建议都开启,专业人员的说不定可以根据情况进行调整。入站连接要选择“阻止(默认值)”,额外解释下这个选项,其实就表示开启了白名单模式,会阻止与规则不匹配的入站连接。

接下来打开防火墙高级设置的入站规则,仔细检查右侧的规则列表,看下是否有设置过MongoDB的入站规则,这点很重要,千万不能允许外部的IP都能随意连接你的数据库。

检查防火墙入站规则

找到已经设置的MongoDB入站规则,右键选择属性进行修改和查看:

检查MongoDB规则属性

需要重点检查作用域是否有限制IP,没限制的IP要马上设置,防止任何人都可以随意连接,如果本身就有这个需求必须要做好MongoDB的身份认证:

设置白名单IP

此外需要检查下协议和端口是否设置正确,默认是TCP协议,端口根据自己的数据库端口来设置,端口建议不要开放所有,只开放对应的。

如果没设置过MongoDB的入站规则(白名单),可以在最右侧的操作列表中新建规则:

新建白名单规则

规则类型选择端口,然后下一步:

选择端口限制

协议选择TCP协议,不要开启所有本地端口!端口根据你MongoDB的端口来设置,这里我填写的是MongoDB默认端口,建议修改默认端口(请参考官方文档),继续下一步:

设置默认限制端口

选择允许连接,接着下一步:

开启白名单

最后一步默认全部勾选吧,或者根据自己的需求来设置:

设置作用范围

这一步过后自己设置下规则名称,点击保存,到了这里还不算完成!一定要注意设置下规则的作用域,也就是限制哪些IP可以远程访问MongoDB,防止任何IP都可以连接数据库。具体操作步骤见上面修改规则的步骤。

最后需要检查下是否有设置成功,先用白名单的IP地址连接下数据库,白名单的IP必须要连接成功。再用任意客户端(IP不在白名单中的)连接下数据库,必须要显示禁止连接,由于我是用Robomongo客户端,连接失败的截图如下:

测试防火墙规则是否生效

使用其他的客户端或者直接用cmd命令提示符的,只要提示禁止连接就对了。


关于MongoDB黑客赎金事件,如果对这个事件感兴趣的,只要网上搜下就有很多资料了。简单的说,这些被黑客攻击洗劫的MongoDB数据库基本上都是属于在公网上裸奔的状态,即没有设置任何帐号密码,也没有在防火墙做任何安全配置,导致任何人只要扫描出服务器的公网IP,都可以随意的连接数据库!这看起来有点不可思议,但确确实实发生了。

其实只要在部署的时候仔细阅读官方文档,都可以看到这个明显的提醒:

Do not make mongod.exe visible on public networks without running in “Secure Mode” with the auth setting. MongoDB is designed to be run in trusted environments, and the database does not enable “Secure Mode” by default.

MongoDB官方文档警告信息

总结下这段话,大意就是官方明确警告禁止在公共场合裸奔,要这样干请自己在家里锁上门关好窗户拉上窗帘!但是按照这次事件的爆发情况来看,全世界还是有很多开放的人!!!好吧,官方真的意思是,MongoDB本身是设计运行在一个可信任的安全环境(例如只允许内网访问的服务器),所以默认情况下是不开启任何安全模式的(例如身份认证等)。重点是,不要在没有配置鉴权/身份验证的情况下,将数据库暴露在公网上。

结合网上的资料,总结下MongoDB安全部署的一些注意事项:

  1. 部署的时候一定要仔细阅读官方文档,特别是生产环境下的部署文档。
  2. 设置好鉴权,做好身份认证,角色权限分配等安全防护措施,不要使用弱口令。
  3. 修改默认的监听端口,不要用默认的27017端口。
  4. 防火墙开启白名单模式,只允许特点的远程IP访问和连接数据库,限制在公网上的访问来源,当然最好是只允许内网访问,不开放到公网上。
  5. 对于一些低版本的,可能还有要注意本地侦听IP的设置,由于我接触MongoDB是从3.X以上版本开始的,所以这个问题自己就不太清楚了,建议网上查阅下资料。

其实这些注意事项在其他数据库来看都是常识,会有这种事情我自己也觉得挺不可思议的。从网上的消息来看,被攻击的甚至有公司生产环境的数据库,数据库敢在互联网上裸奔这心真的挺大的。只能说安全意识不能轻易松懈,毕竟只要在互联网上的东西,总有人会去尝试攻击!


作者:十有三

出处:https://shiyousan.com/post/636223431995544094

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: 记录一个starbound解放双手的自动挖矿技巧-使用系统自带的鼠标设置自动按住左键
  • 下一篇: 解决Windows 10系统Administrator内置管理员帐号与微软帐号的合并问题/附详细解绑步骤

相关文章
  • 解决SQL Service创建链接服务器出现(null) 是无效的产品名称的问题
  • SQL Server Express不支持维护计划功能
  • 记录MongoDb连接错误System.TimeoutException: A timeout occured after 30000ms selecting a server
  • 使用sqlcmd命令执行带参数的存储过程
  • SQL SERVER中查询当天、当月、当年数据的SQL语句
  • 创建 SQL Server Express自动备份数据库功能

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • ChinaPay.dll 64位系统导致应用程序池崩溃,异常代码: 0xc0000005
  • Visual Studio 2013 社区版和速成版之间的区别
  • 解决Win10微软拼音输入法与Visual Studio冲突-弹出表情包和无法在文件中查找
  • Javascript方法的覆盖和重写
  • Visual Studio 2017 如何打开Model Browser(实体数据模型浏览器)

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号