Ubuntu环境下MongoDB的安全性保障需通过 分层配置+持续管理 实现,覆盖安装、认证、网络、加密、监控等全流程,以下是关键措施:
从MongoDB官方APT仓库安装(避免第三方源的安全风险),并安装OpenSSL等必要依赖:
# 导入MongoDB公钥
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
# 添加MongoDB官方源(以Ubuntu 20.04为例)
echo "deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
# 更新并安装
sudo apt-get update && sudo apt-get install -y mongodb-org
确保安装的版本为当前支持的稳定版,减少已知漏洞风险。
编辑MongoDB配置文件(/etc/mongod.conf),开启身份验证机制:
security:
authorization: enabled # 强制要求用户认证
重启服务使配置生效:
sudo systemctl restart mongod
创建专用管理员账号(避免使用默认root),并分配最小必要权限(如root角色用于全局管理):
use admin
db.createUser({
user: "secureAdmin",
pwd: "StrongPassword@123",
roles: [{ role: "root", db: "admin" }]
})
后续所有数据库操作需通过该账号认证(如mongo -u secureAdmin -p --authenticationDatabase admin)。
通过配置文件约束MongoDB监听的IP地址,仅允许可信IP连接:
net:
bindIp: 127.0.0.1,192.168.1.100 # 本地+特定内网IP(根据需求调整)
port: 27017 # 避免使用默认端口(如27018)
若无需远程访问,可将bindIp设为127.0.0.1(仅本地访问)。同时,使用Ubuntu防火墙(ufw)进一步限制端口访问:
sudo ufw allow from 192.168.1.100 to any port 27017 # 仅允许指定IP访问27017端口
sudo ufw enable # 启用防火墙
```。
### **4. 启用传输层加密(TLS/SSL)**
为防止数据在传输过程中被窃取或篡改,配置MongoDB使用SSL/TLS加密:
1. 申请或生成SSL证书(含私钥`server.pem`和CA证书`ca.pem`);
2. 在配置文件中添加SSL参数:
```yaml
net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /path/to/server.pem # 服务器证书路径
CAFile: /path/to/ca.pem # CA证书路径
重启服务后,客户端连接需指定SSL证书(如mongo --ssl --sslCAFile /path/to/ca.pem --sslPEMKeyFile /path/to/client.pem)。
通过审计日志记录所有用户的操作(如查询、修改、删除),便于事后追溯异常行为:
在配置文件中添加以下参数:
systemLog:
destination: file
path: /var/log/mongodb/mongod_audit.log # 审计日志路径
logAppend: true
auditLog:
destination: file
format: JSON # 日志格式(JSON/CSV)
path: /var/log/mongodb/mongod_audit.json
定期审查日志(如使用grep、ELK等工具),及时发现未授权访问或恶意操作。
保持MongoDB及Ubuntu系统的最新状态,及时修复已知安全漏洞:
# 更新Ubuntu系统
sudo apt-get update && sudo apt-get upgrade -y
# 更新MongoDB(官方仓库)
sudo apt-get update && sudo apt-get install --only-upgrade mongodb-org
订阅MongoDB安全公告(如邮件列表、官方博客),第一时间获取漏洞修复信息。
定期备份MongoDB数据(如使用mongodump),并将备份文件存储在安全位置(如异地服务器、云存储):
# 全量备份
mongodump --out /backup/mongodb_$(date +%F)
# 增量备份(需启用oplog)
mongodump --oplog --out /backup/mongodb_incremental_$(date +%F)
测试备份的可恢复性(如模拟数据丢失场景,恢复后验证数据完整性)。
使用监控工具(如Prometheus+Granafa、MongoDB Ops Manager)实时监控MongoDB的运行状态(CPU、内存、磁盘空间、连接数),设置异常告警(如连接数超过阈值、磁盘空间不足):
# 示例:通过systemd服务监控MongoDB状态
sudo systemctl status mongod # 检查服务是否运行
及时响应告警(如重启服务、扩容资源),防止因系统故障导致数据泄露或丢失。
通过以上措施的组合实施,可显著提升Ubuntu环境下MongoDB的安全性,覆盖从安装到运行的全生命周期防护。需根据实际业务需求调整配置(如调整访问IP范围、加密级别),并定期进行安全审计。