近期全球范围内大量 MongoDB因为配置不当导致公网匿名可访问,被黑产大量利用,删除业务数据并索要赎金后才恢复数据,本文从攻防角度讲述下那些容易被黑产盯上的开源数据库软件。
只要攻击成本低于收益,就有动机。互联网公司大量使用各种开源的数据库保存重要的业务数据,一旦数据被销毁且无法恢复,会造成较大损失,这类互联网公司有相当一部分安全防护薄弱,攻击成本低,也有一定能力支付较小金融的赎金,于是这波人就成了黑产理想的攻击目标。
这类攻击往往非常简单粗暴但有效,以MongoDB为例。MongoDB默认情况下不需要密码认证即可登录,虽然默认是监听127.0.0.1,但是较多情况下前端和MongoDB不在一台服务器上,管理员会配置MongoDB监听网络连接,于是只要没严格限制外网访问,MongoDB就被无意之中对公网开放了访问权限了。黑产的攻击过程很简单,简单描述如下:
可见,被攻击的要素有两个:
无认证或者弱口令
公网可访问
知道了攻击原理后,推而广之有类似问题的开源数据库其实很多,既有传统的SQL数据库,也有流行的NOSQL,我们列举下名气比较大的几个:
作为当今最流行的开放源码数据库之一,MySQL数据库为用户提供了一个相对简单的 解决方案,适用于广泛的应用程序部署,能够降低用户的TCO。情况稍好,基本管理员都会配置用户认证和访问来源限制。
PostgreSQL是一个功能齐全、开放源码的对象一关系性数据库管理系统 (ORDBMS)。目前,PostgreSQL的稳定版本为8.4版,具有丰富的特性和商业级数据库管理系统的特质。情况稍好,基本管理员都会配置用户认证和访问来源限制。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。情况最差,默认匿名访问。
redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。情况最差,默认匿名访问。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 情况最差,默认匿名访问。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 情况最差,默认匿名访问。
以上只是举了常见的几个,作为甲方安全团队,我建议:
数据库软件一定要开启认证,使用强密码
严格限制访问源,而且最好在防火墙上限制
修改默认开放端口