1. 前置准备:启用MongoDB身份验证与网络隔离
在配置安全审计前,需先完成基础安全设置,确保只有授权用户能访问MongoDB:
/etc/mongod.conf,在security部分添加authorization: enabled,强制用户登录后才能操作数据库。net.bindIp参数,仅允许受信任的IP地址访问(如bindIp: 127.0.0.1仅限本机,或bindIp: 192.168.1.100允许特定IP)。sudo systemctl restart mongod。2. 配置MongoDB安全审计功能
打开/etc/mongod.conf,在security部分添加auditLog配置,指定日志的输出位置、格式及过滤规则:
security:
auditLog:
destination: file # 日志输出到文件(也可选"syslog")
format: JSON # 日志格式(推荐JSON,便于后续分析)
path: /var/log/mongodb/audit.json # 日志文件路径
filter: '{ "severity": { "$gte": 1 } }' # 可选:仅记录严重级别≥1的事件(如用户操作、权限变更)
确保MongoDB用户对日志目录有写入权限:
sudo mkdir -p /var/log/mongodb
sudo chown mongodb:mongodb /var/log/mongodb
应用配置更改:sudo systemctl restart mongod。
3. 验证审计功能是否开启
通过MongoDB shell执行以下命令,检查审计功能状态:
mongo --eval "db.runCommand({ getParameter: 1, auditLog: 1 })"
若返回结果中auditLog字段为true,则表示审计功能已成功开启。
4. 配置审计策略(可选但推荐)
通过filter参数细化审计范围,避免日志过于冗余。常见过滤场景:
filter: '{ "atype": { "$in": ["createUser", "dropUser", "updateUser"] } }'
find、insert、update、delete):filter: '{ "operationType": { "$in": ["find", "insert", "update", "delete"] } }'
修改配置后需重启MongoDB服务。
5. 监控与分析审计日志
使用tail命令实时查看JSON格式的审计日志:
tail -f /var/log/mongodb/audit.json
若format设置为BSON,需用bsondump工具转换为JSON:
bsondump /var/log/mongodb/auditLog.bson > /var/log/mongodb/auditLog.json
使用脚本(如grep、awk)或日志分析工具(如ELK Stack、Splunk)提取关键信息(如频繁的失败登录、未授权访问尝试),并设置告警规则(如邮件通知管理员)。
6. 安全加固补充
/var/log/mongodb/目录备份至安全存储(如异地服务器、云存储),防止日志被篡改或删除。chmod 600 /var/log/mongodb/audit.json)。sudo apt update && sudo apt upgrade mongodb-org安装最新安全补丁,修复已知漏洞。