Ubuntu MongoDB安全配置指南
首先更新系统软件包并安装MongoDB官方仓库及软件包:
# 更新系统
sudo apt-get update
# 导入MongoDB公钥
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
# 创建MongoDB源列表文件(以Ubuntu 22.04为例,若使用其他版本请替换为对应代号如focal)
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# 更新本地包索引
sudo apt-get update
# 安装MongoDB(选择最新稳定版,如6.0)
sudo apt-get install -y mongodb-org
编辑MongoDB主配置文件/etc/mongod.conf,修改以下关键参数:
# 启用身份验证(强制所有连接提供用户名和密码)
security:
authorization: enabled
# 限制网络访问(仅允许本机IP访问,若需远程访问需添加特定IP)
net:
bindIp: 127.0.0.1
port: 27017 # 默认端口,可根据需求修改
保存后重启MongoDB服务使配置生效:
sudo systemctl restart mongod
# 设置开机自启
sudo systemctl enable mongod
连接到MongoDB Shell(默认本地访问无需密码):
mongo
切换到admin数据库(管理员账户需存放在该数据库):
use admin
创建管理员用户(赋予root角色,拥有最高权限):
db.createUser({
user: "adminUser",
pwd: "YourStrongPassword123!", # 使用强密码(包含大小写字母、数字、特殊字符)
roles: [ { role: "root", db: "admin" } ]
})
退出Shell:
exit
为特定数据库创建专用用户(避免使用管理员账户访问非必要数据库):
mongo -u adminUser -p YourStrongPassword123 --authenticationDatabase admin
切换到目标数据库(如mydb):
use mydb
创建用户并赋予readWrite角色(仅允许读写该数据库):
db.createUser({
user: "mydbUser",
pwd: "MyDbStrongPassword456!",
roles: [ { role: "readWrite", db: "mydb" } ]
})
退出Shell:
exit
可通过以下方式获取证书:
sudo apt-get install -y openssl
sudo mkdir -p /etc/ssl/mongodb
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/mongodb/mongodb.key \
-out /etc/ssl/mongodb/mongodb.crt
sudo chmod 400 /etc/ssl/mongodb/mongodb.key
PEMKeyFile(服务器证书)和CAFile(CA根证书)。编辑/etc/mongod.conf,添加以下参数:
net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /etc/ssl/mongodb/mongodb.crt # 服务器证书路径
CAFile: /etc/ssl/mongodb/mongodb.crt # CA根证书路径(自签名时与服务器证书相同)
重启MongoDB服务:
sudo systemctl restart mongod
使用ufw限制访问MongoDB端口(默认27017):
# 允许本机访问
sudo ufw allow from 127.0.0.1 to any port 27017
# 若需允许特定IP访问(如192.168.1.100),添加规则:
sudo ufw allow from 192.168.1.100 to any port 27017
# 启用防火墙
sudo ufw enable
# 查看规则
sudo ufw status
编辑/etc/mongod.conf,添加以下参数记录用户操作:
systemLog:
destination: file
path: /var/log/mongodb/mongod_audit.log # 审计日志路径
logAppend: true
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/mongod_audit.json
filter: '{}' # 可选:过滤特定操作(如仅记录删除操作)
重启MongoDB服务:
sudo systemctl restart mongod
# 设置日志文件权限(仅mongod用户可写)
sudo chown mongodb:mongodb /var/log/mongodb/mongod_audit.*
sudo chmod 640 /var/log/mongodb/mongod_audit.*
sudo apt-get update
sudo apt-get upgrade mongodb-org
mongodump定期备份数据(如每日凌晨):sudo mkdir -p /backup/mongodb
sudo mongodump --out /backup/mongodb/$(date +%F)
mongostat或第三方工具(如Prometheus+Granafa)监控数据库性能及异常操作。通过以上步骤,可显著提升Ubuntu环境下MongoDB的安全性,防范未授权访问、数据泄露等风险。