温馨提示×

MongoDB在Debian上的安全审计方法

小樊
37
2025-12-30 20:49:10
栏目: 云计算

MongoDB 在 Debian 上的安全审计方法

一 启用与配置审计日志

  • 编辑配置文件:打开 /etc/mongod.conf,在顶层加入或修改以下段落(注意缩进与层级)。示例为记录到文件、JSON 格式、仅记录严重级别大于等于 1 的事件:
    security:
      authorization: enabled
      auditLog:
        destination: file
        format: JSON
        path: /var/log/mongodb/audit.json
        filter: '{ "severity": { "$gte": 1 } }'
    
  • 准备目录与权限:
    sudo mkdir -p /var/log/mongodb
    sudo chown mongodb:mongodb /var/log/mongodb
    
  • 重启生效并检查:
    sudo systemctl restart mongod
    sudo tail -f /var/log/mongodb/audit.json
    
  • 说明:审计日志支持输出到文件(JSON/CSV),可通过 filter 精准控制记录范围,减少噪声与性能压力。

二 审计策略与权限控制

  • 创建具备审计管理能力的专用账户(示例创建于 admin 库):
    use admin
    db.createUser({
      user: "auditAdmin",
      pwd: "StrongPassword!",
      roles: [
        { role: "userAdminAnyDatabase", db: "admin" },
        { role: "auditAdmin", db: "admin" }
      ]
    })
    
  • 连接与验证:
    mongo -u auditAdmin -p --authenticationDatabase admin
    db.getAuditLogOptions()
    
  • 建议:为审计账户启用最小权限与专用凭据,避免与日常运维账户混用,便于审计责任划分与合规。

三 审计日志的验证与日常分析

  • 实时查看与回溯:
    tail -f /var/log/mongodb/audit.json
    
  • 快速检索示例(JSON 日志):
    # 查看失败登录
    jq 'select(.result == 13)' /var/log/mongodb/audit.json
    
    # 查看针对特定集合的写操作
    jq 'select(.ns == "mydb.mycol" and .atype == "createCollection")' /var/log/mongodb/audit.json
    
    # 按时间窗口统计事件数量
    jq -r 'select(.ts) | .ts[:19]' /var/log/mongodb/audit.json | sort | uniq -c
    
  • 建议:将审计日志纳入集中式日志平台(如 rsyslog/ELK/Graylog),设置关键事件的告警(如多次失败登录、权限变更、dropDatabase 等),并建立周/月度审计报表。

四 审计落地与合规的配套措施

  • 身份与访问控制:启用 security.authorization: enabled,按库/集合粒度分配 readWrite/backup/restore 等角色,避免超权。
  • 网络与端口防护:通过 net.bindIp 仅监听必要地址,配合 ufw/iptables 限制来源 IP 对 27017 的访问,减少攻击面。
  • 传输加密:配置 net.ssl.mode: requireSSLPEMKeyFile,确保客户端与服务端、节点间通信加密。
  • 系统加固与维护:保持 MongoDB 与 Debian 的安全更新,定期备份(如 mongodump),并禁用不必要的接口(如 HTTP/REST)。

0