温馨提示×

MongoDB在Linux上的安全设置指南

小樊
44
2025-11-28 18:49:35
栏目: 云计算

MongoDB 在 Linux 上的安全设置指南

一 基础安全基线

  • 启用身份验证:编辑配置文件 /etc/mongod.conf,在 security 段开启授权,重启生效。
    • 配置示例:
      • security:
        • authorization: enabled
    • 重启服务:sudo systemctl restart mongod
  • 创建管理员账户:连接 mongo 后切换到 admin 库创建高权限用户(生产环境建议使用强密码并妥善保存)。
    • 示例:
      • use admin
      • db.createUser({ user: “admin”, pwd: “StrongPass!23”, roles: [“root”] })
  • 最小权限原则:为业务库创建专属用户,仅授予所需角色(如 readWritedbOwner),避免使用 root 日常访问。
    • 示例:
      • use mydb
      • db.createUser({ user: “app_rw”, pwd: “AppPass!45”, roles: [{ role: “readWrite”, db: “mydb” }] })
  • 连接串示例:mongo -u app_rw -p ‘AppPass!45’ --authenticationDatabase mydb。

二 网络安全与系统加固

  • 绑定地址最小化:在 net.bindIp 中仅保留必要来源(本地或内网网段),避免 0.0.0.0 暴露公网。
    • 示例:
      • net:
        • bindIp: 127.0.0.1,192.168.1.0/24
  • 防火墙限制端口:仅允许受信任网段访问 27017/TCP
    • firewalld(CentOS/RHEL):
      • sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port port=“27017” protocol=“tcp” accept’
      • sudo firewall-cmd --reload
    • ufw(Ubuntu/Debian):
      • sudo ufw allow from 192.168.1.0/24 to any port 27017
  • 禁用不安全接口:关闭 HTTP 接口与 REST 接口,减少攻击面。
    • 示例:
      • net:
        • http: { enabled: false }
        • RESTInterfaceEnabled: false
  • 非特权运行:使用专用系统用户(如 mongod)运行进程,避免 root。
    • 示例:
      • sudo useradd -r -s /bin/false mongod
      • sudo chown -R mongod:mongod /var/lib/mongodb /var/log/mongodb
      • sudo systemctl restart mongod

三 加密与传输安全

  • 启用 TLS/SSL:生成或获取证书,在 net.ssl 中强制加密通信。
    • 自签名证书示例:
      • openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/private/mongodb-key.pem -out /etc/ssl/certs/mongodb-cert.pem
    • 配置示例:
      • net:
        • ssl:
          • mode: requireSSL
          • PEMKeyFile: /etc/ssl/private/mongodb-key.pem
          • CAFile: /etc/ssl/certs/mongodb-cert.pem
    • 重启服务:sudo systemctl restart mongod
  • 客户端连接:使用 --ssl 参数连接,确保端到端加密。

四 审计与日志监控

  • 启用审计日志:记录关键操作,便于合规与溯源(建议输出为 JSON 便于分析)。
    • 配置示例:
      • security:
        • auditLog:
          • destination: file
          • format: JSON
          • path: /var/log/mongodb/audit.json
  • 常规日志:确保服务日志持续写入并滚动。
    • 配置示例:
      • systemLog:
        • destination: file
        • path: /var/log/mongodb/mongod.log
        • logAppend: true
  • 备份与恢复:定期离线/逻辑备份,验证可恢复性。
    • 示例:
      • mongodump --out /opt/backup/$(date +%F)
      • mongorestore /opt/backup/2025-11-28

五 集群与复制场景的额外措施

  • 副本集/分片认证:使用 keyFile 实现节点间内部认证,所有节点 keyFile 内容一致 且权限为 400
    • 生成与分发 keyFile(示例):
      • openssl rand -base64 756 > /var/lib/mongodb/keyfile
      • chmod 400 /var/lib/mongodb/keyfile
      • chown mongod:mongod /var/lib/mongodb/keyfile
    • 配置示例:
      • security:
        • keyFile: /var/lib/mongodb/keyfile
        • authorization: enabled
      • replication:
        • replSetName: rs0
    • 注意:keyFile 权限过大(如 644)会导致启动报错,需严格设置为 400。

0