刚刚过去的这个周末,各位大数据和数据库从业者想必是被MongoDB的“安全事件”给刷屏了,MongoDB作为当前NoSQL在全球的领军人物,遭到这么大规模的黑客攻击,这也再次让我们对于新一代的开源数据库的数据安全问题产生了思考。而作为国内领先的新一代分布式数据库厂商,我们也来说说我们对这个事件的看法。

事件回顾

此前,众多无需身份验证的开放式 MongoDB 数据库实例正在遭受多个黑客组织的攻击,被攻破的数据库内容会被加密,受害者必须支付赎金才能找回自己的数据。攻击者利用配置存在疏漏的开源 MongoDB 数据库展开了一系列勒索行为。此番针对 MongoDB 的勒索行为最早是由 GDI Foundation 的安全研究人员 Victor Gevers 在2016年12月27日发现的,在这之后影响陆续扩大,目前至少有五个不同黑客组织控制了上万个数据库实例。

目前在Google Docs上有一个列表,其中列出了参与此次攻击的黑客组织名单,具体数量还在增加中。攻击者所要求支付的金额各异,最低仅0.15个比特币,但也有高达1个比特币的赎金。2017年至今,比特币的价值上下波动,截止1月6日,具体金额约等于892美元。

此次针对MongoDB的攻击非常简单,利用了配置有误且可公开访问的数据库,无须具备相应的管理员凭据即可展开攻击。一旦攻击者登录到开放的数据库,随后会全面夺取控制权并窃取或加密数据库,被勒索的受害者必须支付赎金才能找回自己的数据。

事件几点分析

针对此次的MongoDB安全事件,业界的评判不一,而从一个数据库厂商的角度,我们认为主要的原因有一下几点:

1) 数据库用户的安全意识:本次攻击的原理并不复杂,基本属于把自己数据库的大门敞开,难免最终会被贼“光顾”。一方面,用户对于数据库特别是MongoDB这样的数据库新面孔并没有特别熟悉,因此在使用的过程中由于经验不足而没有注意数据库安全的设置。另一方面,一些用户会认为防火墙和数据中心的安全机制已经足够,不需要再管数据库的安全设置,最终“大意失荆州”。归集起来,原因主要还是用户对于数据库使用的经验不足。

2) 黑客攻击后未有有效的警告:除了本身用户使用的大意,对于数据库安全的监控无论是厂商自己还是相关的机构都远未达到大家的预期。首先,早在15年有关MongoDB“裸奔”的消息放出后,无论是厂商还是业界都没有引起足够的重视,更没有有效的警告和提醒。其次,在本次大规模的攻击事件发生后,各方的反应也较慢,直到有媒体开始爆出消息才引起了厂商和用户群体的警惕。然而可以说是“为时已晚”。

3) MongoDB的安全机制不完善:虽然本次安全时间并不是因为MongoDB程序自身的漏洞而遭到大规模攻击,但是作为厂商,产品用户遭到大规模的攻击和勒索,自己也是难逃其咎。总结起来主要有两个问题,一个是安全机制的不完善,也就是在使用中没有自动化的安全保护机制,如MongoDB在3.x之后更改了鉴权协议,而不兼容2.x版本协议,许多用户因为不愿升级而最终选择“裸奔”。另一个,MongoDB也没有能有效的提醒用户注意设置数据库权限,对于可能出现的“裸奔”情况,其并没有做好十足的提醒,保证用户必须设置好权限才可以使用,这也是造成本次事件的主要原因之一。

数据库安全的思考

说了这么多,大家应该也比较关心怎么去预防类似问题的出现,我们也在这里给大家几点思考吧:

1) 数据库安全十分重要:这次的事件提醒大家,数据库安全真的很重要。无论是资深的还是新人“小白”用户,都应该把数据库的安全提到一个重要的位置。用户们要注意数据库的安全保护,充分利用好数据库的安全机制,保护好自己的数据。避免这次MongoDB“裸奔”的情况出现。

2) 企业用户需要专业的技术支持:对于数据量达到一定规模或者是保存的数据十分敏感、重要的企业用户,无论是数据库安全还是数据库的高效管理、高性能配置,我们认为最好都要寻求专业的厂商技术团队的支持。厂商专业的团队可以帮助企业更全面的使用和管理好自己的数据库平台,同时,厂商专业的团队也能给到用户最好最及时的数据库安全保护和漏洞修复服务,避免大规模数据库安全事故的发生。

3) 国产化与开源产品:虽然目前业界也有许多的海外开源产品,但是作为用户,如果在并不能完全了解这些技术的前提下使用开源架构,很可能也会面临使用上和管理上的一些盲点,造成出现数据库“裸奔”这样的失误。因此,国内的用户我们也认为可以考虑更多国产大数据架构,这样不仅产品更适合国内应用场景需求,在技术支持上相对海外的开源架构,更能给到原厂代码级别的服务支持。

4) 厂商的产品服务:反过来,对于厂商,我们希望厂商也都能引以为戒,产品开发要更全面的考虑到用户的需求以及可能遇到的问题,同时对客户的服务响应上也要更加的及时,不要等到大规模的爆发了问题才引起重视。

SequoiaDB巨杉数据库

SequoiaDB巨杉数据库是一款新一代的分布式NewSQL数据库,完全自主研发并且产品已经商业化开源。巨杉数据库的产品和服务能够切实保障用户的数据安全:

  • 分布式高可用:完全的分布式架构,实现了数据的多副本与高可用,保证数据实时在线。
  • 容灾:巨杉数据库的跨数据中心异地容灾,保证企业的数据安全。
  • 7x24小时原厂技术支持:巨杉最专业的技术团队,为企业用户提供7x24的本地技术支持,加速企业用户的大数据业务,是您的大数据系统的坚强后盾。

关于MongoDB安全事件的一些思考的更多相关文章

  1. MongoDB安全事件的防范与反思

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 近段时间来,全球范围内数以万计的MongoDB实例被攻击,作为旨在为用户提供最优MongoDB云服务的网易蜂 ...

  2. MongoDB,还有一个角度看数据

    传智-玄痛(传智播客北京校区C/C++学院技术指导老师) MongoDB的起源 几年前 10gen 公司做了 SaaS 方面的研发,由于公司一个 MongoDB 产品存储接口的易用性,用户评价很好,公 ...

  3. 2017年开年的第一次比较大的安全事件: MongoDB “赎金事件”,如何看待互联网安全问题

    今天上午(2017年1月7日),我的微信群中同时出现了两个MongoDB被黑掉要赎金的情况,于是在调查过程中,发现了这个事件.这个事件应该是2017年开年的第一次比较大的安全事件吧,发现国内居然没有什 ...

  4. 单点登录(十四)-----实战-----cas5.0.x登录mongodb验证方式常规的四种加密的思考和分析

    我们在上一篇文章中已经讲解了cas4.2.X登录启用mongodb验证方式 单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方式完整流程 但是密码是明文存储的,也就是 ...

  5. 关于mongoDB的思考和nodeJS执行windows系统命令

    P1:在cnodejs.org上面看到有人问这个问题: 然后对此产生思考,第一句db.artile.find('uid':id) 然后问后台是否是这样查询,后台告诉我不是,这种写法就是违背非关系型数据 ...

  6. MongoDB仲裁节点的理解以及memcached,zookeeper,redis,故障恢复方案思考.

    在进行副本集部署时我们会添加一个或多个仲裁节点,仲裁节点不用于备份数据,由于它职责的职责是负责选举主节点,所以对硬件没有太高要求,可以将它部署在单独的服务器上,这个服务器可以是监听服务器,也可以部署在 ...

  7. CAP理论与MongoDB一致性、可用性的一些思考

    大约在五六年前,第一次接触到了当时已经是hot topic的NoSql.不过那个时候学的用的都是mysql,Nosql对于我而言还是新事物,并没有真正使用,只是不明觉厉.但是印象深刻的是这么一张图片( ...

  8. MongoDB分页的Java实现和分页需求的思考

    前言 传统关系数据库中都提供了基于row number的分页功能,切换MongoDB后,想要实现分页,则需要修改一下思路. 传统分页思路 假设一页大小为10条.则 //page 1 1-10 //pa ...

  9. 关于Mongodb RC的思考

    Mongodb Oplog 和 Journal log 的关系与执行顺序 就关系来说,op log实际上与数据是一致的概念. 但在有 RC的时候,执行顺序 w  j 的设置 如果不设置 j ,则默认是 ...

随机推荐

  1. PHP二位数组按照数组的某个字段值排序

    不多废话 直接代码 /** * @name 排序 按照数组的某个字段值排序 * @param $array 排序数组 $field 排序字段 $direction 排序顺序 * @author wan ...

  2. JS高级-数据结构的封装

    最近在看了<数据结构与算法JavaScript描述>这本书,对大学里学的数据结构做了一次复习(其实差不多忘干净了,哈哈).如果能将这些知识捡起来,融入到实际工作当中,估计编码水平将是一次质 ...

  3. struts2.1.6教程五、拦截器

    在前面我们已经初步使用过拦截器,下面继续细细探讨. 1.概述strust2中的拦截器 拦截器是Struts2框架的核心,它主要完成解析请求参数.将请求参数赋值给Action属性.执行数据校验.文件上传 ...

  4. 详解Centos默认磁盘分区

    对于有经验的Linux系统管理员,在安装系统之前都会对系统的分区进行规划:针对这一需求,下面就通过默认的Centos分区与大家分享一些关于Linux系统的知识.Linux系统的磁盘命名规范:硬盘类型标 ...

  5. Zepto源码分析-callbacks模块

    // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  6. Angular随笔第二课

    一.  列表表格以及其它迭代型元素 ng-repeat 可能是最有用的angular指令了,它可以根据集合中的项目一次创建一组元素的多份拷贝.不管在什么地方,只要你想创建一组事物的列表,你就可以使用这 ...

  7. 关于python编译的一点小结

    大家都知道python是脚本语言,源码可以直接执行,有时需要提高执行效率或者保密(因为有时候不想让使用人看到源码文件),那就涉及到python编译了,那么该如何做呢? 有两种方法可以做到. 1.一种是 ...

  8. php+mysql 除了设置主键防止表单提交内容重复外的另一种方法

    感觉好久没有更新博客了,一直在做网站及后台,也没有遇到让我觉得可以整理的内容,之前做的一个系统,已经完成了,后来客户又要求加一个功能,大概就是表单提交的时候,约束有一项不能和以前的内容重复,如图 比如 ...

  9. iOS CAShapeLayer、CADisplayLink 实现波浪动画效果

    iOS CAShapeLayer.CADisplayLink 实现波浪动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnima ...

  10. C# 中文在URL中的编码

      UTF-8中,一个汉字对应三个字节,GB2312中一个汉字占用两个字节. 不论何种编码,字母数字都不编码,特殊符号编码后占用一个字节. //按照UTF-8进行编码 string tempSearc ...