温馨提示×

MongoDB安全设置CentOS上怎么操作

小樊
31
2025-12-29 05:08:27
栏目: 云计算

CentOS 上 MongoDB 安全设置实操指南

一 基础加固

  • 更新系统与安装
    • 执行:sudo yum update -y
    • 安装 MongoDB(以 6.0 为例):创建仓库文件 /etc/yum.repos.d/mongodb-org-6.0.repo,内容如下:
      [mongodb-org-6.0]
      name=MongoDB Repository
      baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
      gpgcheck=1
      enabled=1
      gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
      
      安装:sudo yum install -y mongodb-org
  • 目录权限与启动
    • 创建数据与日志目录并修正属主:sudo mkdir -p /var/lib/mongodb /var/log/mongodb && sudo chown -R mongod:mongod /var/lib/mongodb /var/log/mongodb
    • 启动并设置开机自启:sudo systemctl start mongod && sudo systemctl enable mongod
  • 启用身份验证
    • 编辑 /etc/mongod.conf
      security:
        authorization: enabled
      
    • 重启:sudo systemctl restart mongod
  • 创建管理员账户
    • 连接 Shell:mongo
    • 执行:
      use admin
      db.createUser({
        user: "admin",
        pwd: "YourStrongPassword123!",
        roles: [{ role: "root", db: "admin" }]
      })
      
    • 退出后使用认证连接:mongo -u admin -p 'YourStrongPassword123!' --authenticationDatabase admin
  • 网络访问控制
    • 仅本地访问(推荐):编辑 /etc/mongod.conf
      net:
        port: 27017
        bindIp: 127.0.0.1
      
    • 如需远程访问,仅放通必要来源 IP(示例:192.168.1.100):
      net:
        port: 27017
        bindIp: 127.0.0.1,192.168.1.100
      
    • 重启:sudo systemctl restart mongod
  • 防火墙
    • 开放端口:sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp && sudo firewall-cmd --reload
    • 进一步限制源 IP(示例:192.168.1.100):
      sudo firewall-cmd --permanent --zone=public \
        --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="27017" accept'
      sudo firewall-cmd --reload
      

以上步骤覆盖系统更新、安装、认证、最小暴露面与防火墙等关键安全基线。

二 加密与审计

  • SSL/TLS 加密通信
    • 生成证书(自签名,生产建议用 CA 签发):
      sudo mkdir -p /etc/ssl/mongodb
      sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 \
        -keyout /etc/ssl/mongodb/mongodb.key -out /etc/ssl/mongodb/mongodb.crt
      sudo chmod 600 /etc/ssl/mongodb/*.pem
      sudo cat /etc/ssl/mongodb/mongodb.key /etc/ssl/mongodb/mongodb.crt > /etc/ssl/mongodb/mongodb.pem
      
    • 配置 /etc/mongod.conf
      net:
        ssl:
          mode: requireSSL
          PEMKeyFile: /etc/ssl/mongodb/mongodb.pem
          # 如使用 CA:CAFile: /path/to/ca.crt
      
    • 重启:sudo systemctl restart mongod
  • 审计日志(合规与取证)
    • 编辑 /etc/mongod.conf
      systemLog:
        destination: file
        path: /var/log/mongodb/mongod-audit.log
        logAppend: true
        # 可按需调整详细程度
        verbosity: 1
      
    • 重启:sudo systemctl restart mongod 启用传输加密与审计可显著降低数据泄露与内部滥用风险,并满足常见合规要求。

三 用户与权限最小化

  • 按库创建最小权限用户
    • 只读用户(示例库:mydatabase):
      use mydatabase
      db.createUser({
        user: "readonlyUser",
        pwd: "ReadOnlyPass123!",
        roles: [{ role: "read", db: "mydatabase" }]
      })
      
    • 读写用户:
      use mydatabase
      db.createUser({
        user: "readwriteUser",
        pwd: "ReadWritePass123!",
        roles: [{ role: "readWrite", db: "mydatabase" }]
      })
      
  • 连接示例
    • 只读连接:mongo -u readonlyUser -p 'ReadOnlyPass123!' --authenticationDatabase mydatabase mydatabase
    • 读写连接:mongo -u readwriteUser -p 'ReadWritePass123!' --authenticationDatabase mydatabase mydatabase 遵循最小权限原则,避免在生产环境长期使用高权限账户。

四 维护与验证

  • 持续更新与补丁
    • 定期执行:sudo yum update mongodb-org -y
  • 备份策略
    • 示例每日备份:mongodump --out /backup/mongodb-$(date +%F)
  • 日志与监控
    • 关注 /var/log/mongodb/mongod.log 与审计日志,排查异常登录与失败操作
  • 连接验证
    • 本地认证:mongo -u admin -p 'YourStrongPassword123!' --authenticationDatabase admin
    • 远程加密连接示例:mongo --host <服务器IP> --port 27017 -u admin -p 'YourStrongPassword123!' --authenticationDatabase admin --ssl --sslCAFile /path/to/ca.crt
  • SELinux(如启用)
    • 视环境配置相应策略或布尔值,确保 mongod 对相关目录与端口的访问不受阻 定期更新、备份与日志审计是长期安全运营的关键环节。

0