1. 启用MongoDB审计功能
在/etc/mongod.conf配置文件中添加或修改auditLog参数,启用审计日志记录。建议将日志以JSON格式存储到专用目录(如/var/log/mongodb/audit.json),便于后续分析。配置示例如下:
security:
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json
修改完成后,重启MongoDB服务使配置生效:sudo systemctl restart mongod。可通过mongo --eval "db.runCommand({ getParameter: 1, auditLog: 1 })"命令验证审计功能是否开启(返回true表示成功)。
2. 配置审计过滤规则
根据业务需求,通过--auditFilter参数指定审计事件的过滤条件,避免记录无关操作。例如,若需记录用户创建、删除及数据库修改操作,可添加如下过滤规则:
{
"filter": {
"operationType": { "$in": ["createUser", "dropUser", "updateUser", "createDatabase", "dropDatabase"] }
}
}
过滤规则需写入MongoDB配置文件或启动命令中,重启后生效。审计日志可通过bsondump工具解析查看(如bsondump /var/log/mongodb/audit.json)。
3. 强化身份验证机制
在/etc/mongod.conf中启用身份验证,禁止未授权用户访问:
security:
authorization: enabled
重启MongoDB服务后,需创建管理员账户(建议使用强密码)并分配userAdminAnyDatabase或dbAdminAnyDatabase等角色,用于管理用户权限。示例如下:
use admin
db.createUser({
user: "myUserAdmin",
pwd: "ComplexPassword123!",
roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})
后续为用户分配权限时,应遵循“最小权限原则”(如仅为应用用户分配readWrite权限,而非dbOwner)。
4. 限制网络访问范围
通过net.bindIp参数限制MongoDB仅监听本地或特定IP地址,避免暴露在公网。例如,若仅需本机访问,配置为:
net:
bindIp: 127.0.0.1
若需允许特定IP(如192.168.1.100)远程访问,可配置为:
net:
bindIp: 127.0.0.1,192.168.1.100
修改后重启MongoDB服务。同时,使用ufw防火墙限制访问:sudo ufw allow from 192.168.1.100 to any port 27017 proto tcp,并启用防火墙:sudo ufw enable。
5. 加密网络通信
为防止数据传输被窃听,需配置SSL/TLS加密。首先生成自签名证书或获取CA签发的证书(包含私钥和公钥文件),然后在/etc/mongod.conf中配置:
net:
ssl:
mode: requireSSL
PEMKeyFile: /path/to/mongodb.pem # 证书文件路径(包含私钥和公钥)
重启MongoDB服务后,客户端连接时需指定ssl=true参数(如mongo --ssl --host 192.168.1.100 --username myUserAdmin --password)。
6. 定期审查审计日志
建立日志审查机制,定期检查审计日志中的异常操作(如未授权登录、大量数据删除、权限变更等)。可使用脚本自动化分析日志(如通过grep过滤"op": "dropDatabase"等关键字),或借助ELK、Splunk等日志分析工具实现实时监控与告警。
7. 保持系统与MongoDB更新
及时更新Debian系统和MongoDB至最新稳定版本,修复已知安全漏洞。可通过以下命令更新系统:
sudo apt update && sudo apt upgrade -y
更新MongoDB时,需通过官方仓库安装(避免使用第三方源):
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 bullseye/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
更新前需备份重要数据,避免升级失败导致数据丢失。
8. 最小化权限与禁用不必要的功能
/var/lib/mongodb)和日志目录(默认/var/log/mongodb)的权限仅允许mongod用户访问(如sudo chown -R mongodb:mongodb /var/lib/mongodb,sudo chmod -R 700 /var/lib/mongodb)。/etc/mongod.conf中禁用:net:
http:
enabled: false
重启服务后,关闭rest接口(默认关闭),避免暴露敏感信息。