温馨提示×

MongoDB在Debian上的安全配置怎么做

小樊
51
2025-10-04 15:39:03
栏目: 云计算

MongoDB在Debian上的安全配置步骤

1. 安装MongoDB官方版本

首先,更新系统并添加MongoDB官方APT仓库,确保安装最新稳定版(如6.0+),避免使用过时的第三方仓库:

sudo apt update && sudo apt upgrade -y
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian $(lsb_release -sc)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
sudo apt install -y mongodb-org

启动MongoDB服务并设置开机自启:

sudo systemctl start mongod
sudo systemctl enable mongod

2. 启用身份验证(核心安全措施)

编辑MongoDB配置文件/etc/mongod.conf,在security部分添加authorization: enabled,强制要求用户认证:

security:
  authorization: enabled
  # 可选:禁用本地主机的认证绕过(生产环境建议开启)
  enableLocalhostAuthBypass: false

保存后重启服务使配置生效:

sudo systemctl restart mongod

3. 创建管理员账户

使用MongoDB shell连接到本地实例,切换至admin数据库(管理员账户需存放在admin库),创建具备用户管理权限的管理员账户(如admin):

mongo
use admin
db.createUser({
  user: "admin",
  pwd: "YourStrongPassword123!",  # 使用大小写字母、数字和符号组合
  roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" } ]
})

退出shell:exit

4. 配置网络访问控制

修改/etc/mongod.conf中的net.bindIp参数,限制MongoDB仅监听本地回环接口(127.0.0.1)或特定局域网IP(如192.168.1.100),避免暴露在公网:

net:
  port: 27017
  bindIp: 127.0.0.1  # 生产环境可添加局域网IP,如 "127.0.0.1,192.168.1.100"

重启服务应用更改:

sudo systemctl restart mongod

5. 启用TLS/SSL加密通信

生成自签名SSL证书(生产环境建议使用CA签发的证书):

sudo mkdir -p /etc/ssl/mongodb
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb/mongodb.key -out /etc/ssl/mongodb/mongodb.crt
sudo cat /etc/ssl/mongodb/mongodb.key /etc/ssl/mongodb/mongodb.crt > /etc/ssl/mongodb/mongodb.pem
sudo chmod 600 /etc/ssl/mongodb/mongodb.key /etc/ssl/mongodb/mongodb.pem

编辑/etc/mongod.conf,配置SSL/TLS模式为requireSSL,并指定证书路径:

net:
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/mongodb/mongodb.pem

重启服务:

sudo systemctl restart mongod

6. 配置防火墙限制访问

使用ufw(Ubuntu默认防火墙)允许MongoDB端口(默认27017)的TCP流量,并限制仅受信任IP访问:

sudo ufw allow from 192.168.1.0/24 to any port 27017 proto tcp  # 替换为你的局域网网段
sudo ufw deny 27017/tcp  # 默认拒绝其他IP
sudo ufw enable

7. 设置细粒度用户权限

根据业务需求创建专用用户,分配最小必要权限(如readOnlyUser仅具备读权限,appUser具备读写权限):

mongo -u admin -p --authenticationDatabase admin
use myDatabase
# 创建只读用户
db.createUser({
  user: "readOnlyUser",
  pwd: "ReadOnlyPass123!",
  roles: [ { role: "read", db: "myDatabase" } ]
})
# 创建读写用户
db.createUser({
  user: "appUser",
  pwd: "AppUserPass123!",
  roles: [ { role: "readWrite", db: "myDatabase" } ]
})
exit

8. 启用安全审计(可选但推荐)

MongoDB企业版支持审计功能,可记录数据库操作(如查询、修改、登录)。编辑/etc/mongod.conf,配置审计日志路径和格式:

security:
  auditLog:
    destination: file
    format: JSON
    path: /var/log/mongodb/audit.json

创建日志目录并设置权限:

sudo mkdir -p /var/log/mongodb
sudo chown mongodb:mongodb /var/log/mongodb

重启服务:

sudo systemctl restart mongod

9. 定期更新与维护

定期检查MongoDB更新,及时安装安全补丁:

sudo apt update
sudo apt upgrade mongodb-org

监控MongoDB日志(/var/log/mongodb/mongod.log),关注异常登录、未授权访问等事件。

通过以上步骤,可显著提升Debian环境下MongoDB的安全性,防范未授权访问、数据泄露等风险。生产环境中还需结合实际情况调整配置(如使用专业防火墙、启用更严格的审计策略)。

0