MongoDB安全事件的防范与反思
此文已由作者温正湖授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
近段时间来,全球范围内数以万计的MongoDB实例被攻击,作为旨在为用户提供最优MongoDB云服务的网易蜂巢MongoDB团队在第一时间跟进了相关报道,虽然蜂巢MongoDB服务从设计初就将数据的安全性列为第一位,确保用户数据安全,但本着高度负责的态度我们对MongoDB服务又进行了安全自检,显然,结果也没让大家失望。这次事件从技术层面看并没有什么高深之处,应对措施也非常方便,下面结合蜂巢MongoDB进行介绍。
首先,不要把MongoDB实例直接暴露在公网下,这是原则问题。可以说没有任何理由将您的数据存储服务部署在公网环境,蜂巢用户的MongoDB实例都部署在私有网络中,跟公网相隔离。通过这个措施,可以抵挡掉绝大部分伤害。进一步,MongoDB实例所在的私网是用户专用的,也就是说,该私网对蜂巢中的其他用户也是隔离的,这又消除了被同一云平台下其他用户攻击的可能。
其次,为MongoDB实例开启认证并设置访问账号,这也是最基本的。启动认证后,访问者若不指定正确的账号和密码就无法正常访问MongoDB实例。密码应该设置成字母、数字和特殊符号的组合,可以极大降低被破解的难度。显然,包括蜂巢MongoDB在内的主流MongoDB云服务都开启了认证。
可以说,做了上述几点,基本上可以保证您的MongoDB数据是安全的。但还可以做得更好。
做好账号权限控制。MongoDB引入了非常细粒度的基于角色的权限控制机制(RBAC),实例拥有者可以为不同的MongoDB使用者提供适当权限等级的账号,比如仅能读/写某个集合、数据库;为MongoDB管理员提供 dbAdmin/userAdmin等权限的账号,可参考官方文档https://docs.mongodb.com/manual/core/authorization/,该文档对权限管理进行了详细地介绍。这样,即使某个账号泄露或被攻破,也可以最大限度减少损失。蜂巢MongoDB服务为用户提供readWriteAnyDatabase权限的账号,用户仅能通过云控制台来修改密码。避免账号泄露密码被篡改。后续,我们还将为用户提供增强版的MongoDB数据库和账号管理功能,敬请期待!
将MongoDB端口设置为非默认端口。大家都知道27017端口是MongoDB的,3306是端口MySQL的,暴露在公网的MongoDB实例,如果使用默认端口,别有用心的他们telnet下就连上了。当然了,你选择其他端口无法从根本上解决问题,但至少加了层防护,所以也应该考虑。在网易蜂巢云平台,用户在创建蜂巢MongoDB实例时可以指定端口。
在网易蜂巢(云计算基础服务),除了以上防护外,我们还提供了平台级的安全保证,网易内部有专门的安全部门负责扫描和识别安全隐患,一旦发现既会通知相应的产品负责人第一时间解决问题,排除隐患。
如果因为上述防护没有做到位等原因,您的MongoDB实例还是被攻破了,数据被删或被勒索,那么至少应该有备份可以用来恢复数据。所以平时做好数据备份是非常重要的,不仅仅在防“盗”(黑客)时有用,防“火”(软硬件故障)时也很有用,同时也可以用来防止数据被误删。蜂巢MongoDB提供手动备份功能,用户可以随时为您的实例进行备份,比如在load完一批重要数据后;还提供了自动备份能力,周期性地将您的数据备份到网易对象存储服务NOS上,免费的哦!在需要进行数据恢复时,用户可选择对应时间点的备份,将数据恢复到一个新的实例上。
到此,本文可以结束了。但我一直有个疑问未解:为什么会有那么多裸奔的MongoDB实例?我认真阅读了该事件被报道后的几乎每篇文章,但目前还没有分析这些实例的具体情况,这些实例创建者到底是些什么人,是不是“傻子太多,骗子不够用了”?下面谈谈我的看法:
裸奔的MongoDB很多是用于学习的。MongoDB目前已经在全球数据库排老四了,肯定有一大波App开发者、数据库运维、在校学生和其他对MongoDB感兴趣的朋友们在学习MongoDB,那么在公有云平台上搭建个测试实例用于学习这种事情很好理解。什么,开启认证设置密码?一是或许还不会,二是估计也是嫌麻烦,反正裸奔也挺时尚。
裸奔的MongoDB很多是用于测试的。这么火的MongoDB,公司要上新业务做数据库选型时,怎么也得纳入候选列表,那就得搭个测试环境,调研试用一番,再测测功能。于是,也会产生一堆实例,或许数据量还挺大的。
如果上面两种情况占了裸奔实例大部分,那么不是坏事,我们应该以积极的心态来看待。当然,可能还有很多的确是跑着线上业务的。对于这部分实例,可能又可以分为两种:
一是,程序开发者搭建的。因为MongoDB对移动App开发者等程序员来说比较友好,使用JSON、模式自由、故障移动处理,所以很省事、上手很快,某些项目为了赶进度,或为了控制成本,团队中没有专门的数据库运维,直接让App开发搭个用于存储后端数据的MongoDB实例,于是,难免就出现在公网裸奔的MongoDB实例。对于这种情况,真不能怪App开发,人家本来就不是干这块的。MongoDB能够大大提高项目的开发效率,确实很好用,但团队中如果没有MongoDB运维能人,劝项目的负责人还是将MongoDB部署在专业的MongoDB云服务平台上或请MongoDB官方技术团队协助吧,但相比应该前一种更实惠,尤其是网易蜂巢MongoDB云服务。
二是,确实是团队专职的运维人员负责搭建的。对于这类,只能说:“把数据库暴露在公网实在是心太大…”。暴露在公网而且不设密码,这行为绝对是公害啊,被坑的项目负责人应该把他们一个个找出来判刑,并把名单全球公布,永久封杀。然后把MongoDB实例迁到蜂巢上。
最后总结下,对于数据存储这类安全性要求极高的服务,应该把部署和运维交给专业的团队,不能用“临时工”。欢迎大家使用网易蜂巢(云计算基础服务)MongoDB服务。
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 分布式存储系统Kudu与HBase的简要分析与对比
【推荐】 从疑似华住集团4.93亿开房信息泄露 看个人如何预防信息泄露
MongoDB安全事件的防范与反思的更多相关文章
- 关于MongoDB安全事件的一些思考
刚刚过去的这个周末,各位大数据和数据库从业者想必是被MongoDB的"安全事件"给刷屏了,MongoDB作为当前NoSQL在全球的领军人物,遭到这么大规模的黑客攻击,这也再次让我们 ...
- 2017年开年的第一次比较大的安全事件: MongoDB “赎金事件”,如何看待互联网安全问题
今天上午(2017年1月7日),我的微信群中同时出现了两个MongoDB被黑掉要赎金的情况,于是在调查过程中,发现了这个事件.这个事件应该是2017年开年的第一次比较大的安全事件吧,发现国内居然没有什 ...
- 安全防范:nginx下git引发的隐私泄露问题
安全防范:nginx下git引发的隐私泄露问题 1 安全事件 最近阿里云服务器后台管理系统中收到一条安全提示消息,系统配置信息泄露: http://my.domain.com/.git/confi ...
- MongoDB数据库未授权访问漏洞及加固
1.漏洞危害 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作)而且可以远程访问数据库. 2.漏洞成因 在刚安装完毕的 ...
- 成功熬了四年还没死?一个IT屌丝创业者的深刻反思
三个IT屌丝创业的故事 从前有三个屌丝,聚在一起做网络.提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾,啥都做了.3年后终于做到了五百万用户.对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼 ...
- HBase、Redis、MongoDB、Couchbase、LevelDB主流 NoSQL 数据库的对比
最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...
- SQL注入攻击的种类和防范手段
观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. ...
- 每天200亿次查询 – MongoDB在奇虎360【转】
100多个应用,1,500多个实例,每天200亿次查询 奇虎是中国最大的安卓移动发布平台.奇虎也是中国最顶尖的病毒软件防护公司,同时为网络以及移动平台提供产品.自从2011年成为MongoDB的用户之 ...
- springboot(十一):Spring boot中mongodb的使用
mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多.由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置 ...
随机推荐
- type和metaclass元类
元类type 1. 创建类的两种方式 (都是由type元类创建) 方式一: class Foo(object): # 默认metaclass = type, 当前类, 由type类创建 a = 'aa ...
- SQL SERVER 2012 第五章 创建和修改数据表 の CREATE语句
CREATE <object type> <object name> CREATE DATABASE <database name> 比较完整的语法列表: 日志文件 ...
- P1396 营救 洛谷
https://www.luogu.org/problem/show?pid=1396 题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起 ...
- 洛谷 P2862 [USACO06JAN]把牛Corral the Cows
P2862 [USACO06JAN]把牛Corral the Cows 题目描述 Farmer John wishes to build a corral for his cows. Being fi ...
- otl_stream流相关绑定变量
声明绑定变量 本章节将详细的说明如何在otl_stream流里面声明绑定变量. SQL语句.SQL语句块或存储过程在程序里面使用的时候总是带有占位符.OTL里面带有一个小的解析器用来解析这些占位符,并 ...
- 使用Spring定时任务并且通过AOP监控任务执行情况
原文:http://www.open-open.com/code/view/1426250803279 本文讲的是通过Spring注解的方式实现任务调度.只要引入了spring-context包就能够 ...
- 机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树
上一讲主要利用不同模型计算出来的g.採用aggregation来实现更好的g.假设还没有做出来g.我们能够採用bootstrap的方法来做出一系列的"diversity"的data ...
- [Node.js] Write or Append to a File in Node.js with fs.writeFile and fs.writeFileSync
In node.js, you can require fs, and then call fs.writeFile with the filename, and data to write to t ...
- SharePoint 2013 调查问卷的使用方法
SharePoint 2013 调查问卷的使用方法 1,介绍调查问卷的用法. 2.图形和全部结果. 3,控制用户仅仅能看到自己答案. 1.确认有权限,假设没有管理管理权限请向管理员申请. 站点&quo ...
- 架构设计经典案例:X窗体系统
X Window在1984年由MIT研发.它的设计哲学之中的一个是:提供机制.而非策略(类似面向对象思想中的"针对接口编程,而不是针对实现编程").机制(mechanism)是指须 ...