警惕 MongoDB 的未授权访问漏洞

前言

Mongodb 一直让人诟病的 未授权访问 问题, 这在了发个帖作为警醒, 大家在部署的时候要小心点.

原因

未授权访问漏洞成因:Mongodb 在启动的时候提供了很多参数,如日志记录到哪个文件夹,是否开启认证等。造成未授权访问的根本原因就在于启动Mongodb的时候未设置 --auth 也很少会有人会给数据库添加上账号密码(默认空口令,它像一张白纸,需要管理员自己去涂写账号),使用默认空口令这将导致任何人无需进行账号认证就可以登陆到数据服务器。

解决方法

  1. 使用 iptables 控制端口 27017 (默认端口) 的访问;
  2. auth 模式下运行 mongodb;

开启 MongoDB授权

1. 添加一个管理员用户,

下面代码在 Mongo Shell 运行:

> use admin
> db.createUser(  
{  
    user: "root",  
    pwd: "YOUR PASSWORD",  
    roles:  
    [  
      {  
        role: "userAdminAnyDatabase",  
        db: "admin"  
      }  
    ]  
  }  
) 

更多选项见这: MongoDB – Add Users and Authenticate .

2. 授权模式下运行 mongod

1). 先停止服务

$ sudo service mongod stop

2). 编辑 /etc/mongo.conf 文件, 找到 #auth=true , 去掉注释.

3). 重新运行服务

$ sudo service mongod start

扩展阅读:

本文章首发在 Laravel China 社区

Practice makes perfect.