首页 » 应用安全 » 数据库 » MongoDB » 正文

MongoDB 安全加固

说明

加固项中部分操作需要先连接 MongoDB 才能进行,连接方法如下:

# /usr/local/mongodb/ 为 MongoDB 的安装目录
/usr/local/mongodb/bin/mongo

通常会使用配置文件存储 MongoDB 的各项配置信息,假设配置文件为下面的文件,加固过程中部分配置需要修改此文件:  

/usr/local/mongodb/mongodb.conf

查看 MongoDB 的版本号:

/usr/local/mongodb/bin/mongod -v  

 

1,MongoDB安装

下载地址:

https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.0.4.tgz
安装操作
tar -zxvf /usr/local/mongodb-linux-x86_64-ubuntu1404-3.0.4.tgz
mv /usr/local/mongodb-linux-x86_64-ubuntu1404-3.0.4 /usr/local/mongodb
mkdir /usr/local/mongodb/data
mkdir /usr/local/mongodb/log
vi /usr/local/mongodb/mongodb.conf
启动MongoDB
# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

2,修改默认监听ip和端口

由于配置参数过多,通常会将配置信息放到一个配置文件里(这里是 /usr/local/mongodb/mongodb.conf),每次启动指定配置文件即可。

mkdir /usr/local/mongodb/mongodb.conf
vim /usr/local/mongodb/mongodb.conf
# 设置监听地址
bind_ip=192.168.31.139
# 设置监听端口
port=12333
# 设置数据存放路径
dbpath=/usr/local/mongodb/data/
# 设置日志存放路径
logpath=/usr/local/mongodb/log/mongodb.log
# 设置日志以附加的方式写入
logappend=true

使用配置文件启动 MongoDB:

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

3,关闭 HTTP 端口

MongoDB 在 28017 端口提供一个 HTTP 服务,用于监视服务器的运行状态等信息。

通过修改 mongdb.conf 文件,添加/修改如下配置后重启服务。

nohttpinterface=true

注:MongoDB 3.04版本默认未开启 28017 端口

4,添加认证

连接数据库,执行以下命令添加不同类型的用户:

对于 MongoDB 3.0以前的用户,可以使用下面的方法添加不同权限的用户:

# 添加管理员用户
use admin
db.addUser("admin","复杂的密码")
# 查询系统用户
db.system.users.find()

# 添加一个普通用户
use test1(用户数据库)
db.addUser("test","复杂的密码")

对于 MongoDB 3.0及后续版本的用户,可以使用下面的方法添加不同权限的用户:

# 添加用户管理员(角色)
use admin
db.createUser({user:"admin", pwd:"复杂的密码", roles:[ "userAdminAnyDatabase" ]})

# 添加一个普通具有读写权限(角色)的用户
use test1(用户数据库)
db.createUser({user:"test", pwd:"复杂的密码", roles:[ "readWrite" ]})

注: MongoDB 提供了很多内置角色,建议根据实际需要为用户分配适当的角色。

添加完用户后,需要在 MongoDB 的配置文件中添加如下参数设置,然后重启服务。

auth = true

 5,文件安全

应赋予 MongoDB 相关的文件合适的权限,防止被其它用户非授权访问或篡改。建议按照下面的建议实施权限控制:

# 配置文件只允许属主读取和修改、属组读取
/usr/local/mongodb/mongodb.conf(640)
# 数据目录只允许属主读取和修改
/usr/local/mongodb/data/(600)
# 日志文件只允许属主读取和修改、属组读取
/usr/local/mongodb/log/mongodb.log(640)

发表评论