服务公告

全部公告 > 安全公告 > 关于MongoDB数据库非授权访问漏洞的安全预警

关于MongoDB数据库非授权访问漏洞的安全预警

2019-03-08

一、概要

近日,业界报道有大量MongoDB数据库暴露在互联网上导致重要信息泄露,其主要原因为未正确设置数据库访问权限。在MongoDB数据库启动时,如不修改数据库认证访问权限方面的默认配置,用户则无需权限验证,通过默认的服务端口可本地或远程访问该数据库并进行任意操作。此类数据库若暴露在互联网上,将可能存在信息泄露的风险。

华为云提醒各位租户,请您加强对MongoDB等数据库的安全加固,保障数据安全。

二、威胁级别

威胁级别:【严重】

(说明:威胁级别共四级:一般、重要、严重、紧急。)

三、排查和处置方法

排查方法:

1. 检查数据库是否部署在互联网边界;

2. 检查数据库实例是否由root账户启动;

3. 库实例是否具有访问控制;

4. 检查数据库是否修改了默认端口;

5. 检查数据库是否限制了终端访问地址;

6. 检查数据库是否禁用HTTP接口;

7. 检查数据库是否禁用REST接口;

8. 检查数据库管理时是否启用SSL协议;

9. 检查数据库用户权限是否为最小授权;

10. 检查数据库是否启用审计功能;

11. 集群复制时是否采用Keyfile访问控制部署新副本集;

12. 检查数据库是否安装了最新系统漏洞补丁包。

处置方案:

1. 数据库与应用平台分开部署,不能部署在同一台服务器上,且不能部署在互联网边界及DMZ区,数据库应部署在核心网段中,并在网络层做好相应的访问控制策略;

2. 不要对MongoDB设置过多角色,普通用户权限已经满足日常维护需求。另外,对以下文件要配置适应的文件权限,如,只允许mongodb用户自己进行读写(1、数据文件;2、秘钥、证书文件(只读)、日志文件);

3. 数据库应带-auth参数启动;

4. 数据库应修改27017默认端口;

5. 数据库应通过bind_ip来进一步限制MongoDB会在哪一个网络接口上监听;

6. 在业务不需要的情况下关闭HTTP接口;

7. 在业务不需要的情况下关闭REST接口;

8. MongoDB集群之间,以及从客户端连接到MongoDB实例的连接应该使用SSL,使用SSL对性能没有影响,并且可以防范类似于man-in-the-middle的攻击;

9. 为数据库用户分配合理的角色和权限,不建议(1、仅仅使用一个高权限用户(如root)来执行所有操作;2、给用户分配不需要的权限;3、使用简单密码或者多个账号同用一个密码;4、删除数据库后没有删除相应的用户);

10. 启用数据库审计功能或采用第三方数据库审计产品对数据库的操作进行审计;

11. 使用KeyFile认证,副本集中的每个MongoDB实例使用KeyFile内容作为认证其他成员的共享密码,只有有正确的KeyFile的MongoDB实例可以加入副本集;

12. 关注数据库漏洞情况,发现重大安全漏洞时及时更新补丁。

注意:修复漏洞前请将资料备份,并进行充分测试。