避免 MongoDB 被勒索详解,腾讯云上更安全

事件起因

新年伊始,又有一些不安分的黑客们出来兴风作浪了,近期比较受关注的主要是黑客组织们利用 MongoDB 一直存有的未授权访问问题[登录不需要用户名和密码认证]进行攻击,连接上数据库后把别人的数据备份,然后删除数据并勒索赎金。

如果您的数据库有可能遭到此类型攻击,那么务必认真看下本文中所提的解决方案与修复建议。

漏洞成因与后果

由于用户在使用 MongoDB 时,将服务直接开放在了公网上,并且直接采用了默认配置,而默认配置并没有开启鉴权访问[未设置账号密码],从而导致这个数据库谁都可以访问,这就好比你把保险柜放在家门口,且没有设置密码,谁路过看到了都可以过来顺点钱。

如果您的服务也开放在了公网上,且MongoDB服务器没有配置鉴权,则可能像各类报道里说的:被黑客窃取、删除、勒索缴纳赎金、泄露等等严重后果。

攻击方式

1、黑客从Shodan等渠道收集到存在漏洞的机器列表,如下图

2、使用MongoDB客户端直接连接目标MongoDB服务

3、接下来就可以通过正常的MongoDB查询语句进行相关的操作,如下载数据、删除数据等

不容忽视的影响面积

早在之前,网络上就爆出过利用 MongoDB 数据库未授权访问进行攻击的事件;2015年11月,ZoomEye  对 MongoDB 进行相关探测和分析,发现互联网上至少存在38000个开放在公网上的无口令的 MongoDB 服务,这些 MongoDB 服务都存在同样的可被攻击利用的问题。

一年多过去了,通过在 ZoomEye 上搜索,可以发现,当前开放在公网上的 MongoDB 目标多达220000余个,这些 MongoDB 由于直接开放在公网,如果没有进行正确的配置,则均可能存在同样的问题,而被黑客直接攻击。

下图为今日搜索结果:

解决方案与修复建议

配置鉴权

下面以3.2版本为例,给出 MongoDB设置权限认证,具体步骤如下:

1、启动MongoDB进程是加上-auth参数或在MongoDB的配置文件中加上auth = true;

2、带auth启动的MongoDB,如未创建用户,MongoDB会允许本地访问后创建管理员用户。创建步骤如下:

1>切换到 admin 库;

2>创建管理员用户,命令如下(user和pwd可以根据需要设置):

db.createUser({user: "root",pwd: "password",roles: [ "root" ]})

使用管理员用户登录后,根据角色创建您需要的用户

关闭公网访问

如无开放在公网的必要,建议关闭MongoDB服务的公网访问,切断黑客攻击的入口。可通过MongoDB的bind_ip参数进行配置,只需将IP绑定为内网IP即可,如下:

方法一、启动时增加bind_ip参数:

mongod --bind_ip 127.0.0.1,10.x.x.x

方法二、在配置文件mongodb.conf中添加以下内容:

bind_ip = 127.0.0.1,10.x.x.x

其中10.x.x.x为您机器的内网IP.

迁移至腾讯云 MongoDB

腾讯云的云数据库MongoDB有多重机制保证数据库安全性和数据可靠性,同时提供便捷的迁移工具。

1>腾讯云MongoDB需要通过腾讯云内网来进行访问,不同用户间的数据库服务相互隔离,访问必须要强制鉴权

2> 腾讯云MongoDB提供库级别账号权限管理,访问控制粒度更细,同时支持可视化的授权方式,操作便捷

3> 完善的云监控机制,当数据操作突破预设阀值时,会触发告警,第一时间通知用户做相关紧急处理

4>在数据库可靠性方面,腾讯云MongoDB提供周期性自动备份和手动备份功能,记录操作流水,可将数据恢复到任意时间点

5>腾讯云MongoDB提供一站式迁移上云服务,专家团队护航,安全又省心

目前,对安全性要求极高的金融,保险行业,已经有不少客户正在使用腾讯云 MongoDB 服务,并且已经将核心的交易数据,客户资料数据存储在 MongoDB 数据库中[可访问阅读原文了解更多详情]

更多关于MongoDB的安全配置可以参考官方文档:https://docs.mongodb.com/manual/administration/security-checklist/

另外,其实对于其他类似于非关系型数据库,如Redis、Memcached、ElasticSearch等由于安装的时候默认无需配置权限验证,也未限制访问IP,也会存在同样的未授权访问问题而被黑客利用,之前也曾爆过被黑客组织攻击利用的事件,如果您存在自建的以上服务,请一并检查是否同样存在配置问题,导致可未授权访问,以免被黑客入侵!

原文发布于微信公众号 - 腾讯云安全(TencentCloudSecurity)

原文发表时间:2017-01-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

10g和11g中的一些差别(r6笔记第98天)

最近有时候看官方文档,感觉11g里面已经有了很多的变化,无论是使用还是安装上的细节上,11g似乎总是能够带给我更多的惊喜。而从以往的使用情况中感 觉10g已经足...

3304
来自专栏施炯的IoT开发专栏

ZigBee On Windows Mobile--2.硬件和软件设计

    继续上一篇”ZigBee On Windows Mobile--1.背景和结构”,今天来讲讲硬件和软件设计。硬件设计主要是做ZigBee模块,输出文件一...

1838
来自专栏马哥教育

Linux快速入门教程-进程管理ipcs命令学习

使用Linux系统必备的技能之一就是Linux进程管理,系统运行的过程正是无数进程在运行的过程。这些进程的运行需要占用系统的内存等资源,做好系统进程的管理,对于...

4087
来自专栏区块链入门

第10课 EOS常见命令及样例演示

【本文目标】 本文列出经常EOS环境经常会使用的命令格式以及样例,作为EOS命令的快速查找手册。 不管是EOS的命令行帮助说明还是命令行参考文档,对参数的引...

701
来自专栏james大数据架构

分布式监控系统Zabbix3.2对数据库的连接数预警

  在前篇分布式监控系统Zabbix3.2监控数据库的连接数 中已经对数据库的端口3306进行了监控,可以看到数据库的连接数历史变化有高有低,那如果达到了数据库...

1798
来自专栏butterfly100

Chris Richardson微服务翻译:微服务部署

Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 ...

3209
来自专栏北京马哥教育

5分钟了解MariaDB创建角色功能

Grant Role? 创建角色,oracle很早就支持创建角色的功能了,而MySQL5.7版本依然尚不支持。目前,只有MariaDB10.0/10.1版本里支...

2715
来自专栏杨建荣的学习笔记

使用sysbench压力测试MySQL(一)(r11笔记第3天)

今天用了下新版本的sysbench,发现和早期版本的差别还不小,确实有不少有趣的地方,是的,我们继续测试下MySQL。 如果大家看过《高性能MyS...

3898
来自专栏轮子工厂

1. C语言的第一个程序

(。・∀・)ノ゙嗨!大家好,我是呆博~很开心可以在这里给大家分享我的 C 语言学习笔记~

764
来自专栏黑白安全

macOS High Sierra 以明文存储外部 APFS 驱动密码

根据 Mac 取证专家 Sarah Edwards 的报告,新版 macOS High Sierra 再次出现 APFS(苹果文件系统)漏洞,以明文形式记录 A...

673

扫码关注云+社区