1. 启用MongoDB审计功能
在Debian系统中,MongoDB的审计功能需通过修改配置文件/etc/mongod.conf开启。在security部分添加以下配置(支持BSON或JSON格式,推荐JSON便于后续分析):
security:
auditLog:
destination: file # 日志输出到文件
format: JSON # 日志格式(可选JSON/CSV/BSON)
path: /var/log/mongodb/audit.json # 日志文件路径
# 可选:通过filter过滤日志(如仅记录严重级别≥1的事件)
# filter: '{ "severity": { "$gte": 1 } }'
修改完成后,重启MongoDB服务使配置生效:
sudo systemctl restart mongod
验证审计功能是否开启,可通过MongoDB shell执行以下命令,若返回true则表示成功:
mongo --eval "db.runCommand({ getParameter: 1, auditLog: 1 })"
2. 配置审计过滤策略
为减少无关日志占用空间,可通过filter参数指定审计范围。例如:
filter: '{ "operationType": { "$in": ["createUser", "dropUser"] } }'
admin数据库的访问:filter: '{ "db": "admin" }'
修改mongod.conf中的filter字段后,重启MongoDB服务即可应用新策略。如需临时调整过滤条件,可直接在MongoDB shell中执行:
use admin
db.setAuditLogDestination("file", { format: "JSON", path: "/var/log/mongodb/audit.json" })
db.getAuditLogOptions().filter = '{ "operationType": { "$in": ["createUser", "dropUser"] } }'
3. 加固操作系统及MongoDB基础安全
审计功能需配合基础安全措施才能发挥最大效果:
mongod.conf的security部分添加authorization: enabled,强制用户登录后才能访问数据库。mongod.conf中的net.bindIp参数,仅允许受信任的IP地址访问(如本机127.0.0.1或特定内网IP)。net.ssl.mode: requireSSL并指定证书路径(PEMKeyFile),确保数据传输安全。mongodb)运行MongoDB服务,限制其对系统文件的访问权限。4. 定期监控与分析审计日志
审计日志需定期检查以识别异常行为:
tail命令实时查看日志:tail -f /var/log/mongodb/audit.json
grep过滤关键操作、awk统计操作频率):# 查找所有用户创建操作
grep 'operationType": "createUser"' /var/log/mongodb/audit.json
# 统计每日登录次数
awk -F'"timestamp":' '{print $2}' /var/log/mongodb/audit.json | cut -d' ' -f1 | uniq -c