温馨提示×

CentOS环境下MongoDB的安全设置

小樊
35
2025-11-23 19:27:08
栏目: 云计算

CentOS 上 MongoDB 的安全设置清单

一 身份与访问控制

  • 启用认证:编辑配置文件 /etc/mongod.conf,在 security 段落开启授权;保存后重启服务。
    • YAML 配置示例:
      security:
        authorization: enabled
      
    • 重启:sudo systemctl restart mongod
  • 创建管理员账户:连接到 shell 后,在 admin 库创建高权限用户(示例赋予 root 角色,生产环境可按需收敛为 userAdminAnyDatabase 等)。
    • 命令示例:
      use admin
      db.createUser({
        user: "admin",
        pwd: "YourStrongP@ssw0rd!",
        roles: [ { role: "root", db: "admin" } ]
      })
      
  • 创建业务用户:按库最小权限原则为业务库创建用户(示例为 readWrite)。
    use your_database
    db.createUser({
      user: "app_user",
      pwd: "AppUserP@ssw0rd!",
      roles: [ { role: "readWrite", db: "your_database" } ]
    })
    
  • 连接示例:使用账户连接时需指定认证库
    mongo -u admin -p --authenticationDatabase admin
    

以上步骤可有效开启认证、建立分权账户体系,避免无鉴权访问与权限滥用。

二 网络与防火墙

  • 绑定地址:在 net.bindIp 中仅绑定需要监听的地址,优先仅本地回环,必要时再添加内网地址。
    • 示例(仅本地):
      net:
        bindIp: 127.0.0.1
      
    • 示例(本地 + 内网):
      net:
        bindIp: 127.0.0.1,192.168.1.100
      
  • 防火墙:使用 firewalld 仅放行必要来源与端口(默认端口 27017)。
    • 仅本机访问(推荐默认):
      sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="127.0.0.1" port port="27017" protocol="tcp" accept'
      sudo firewall-cmd --reload
      
    • 如需内网访问,替换为内网网段或具体主机 IP。
  • 服务重启:网络变更后重启生效
    sudo systemctl restart mongod
    

通过限制监听地址与防火墙策略,可显著降低暴露面与暴力扫描风险。

三 加密与传输安全

  • 生成证书:使用 OpenSSL 生成自签名证书(或接入可信 CA)。
    sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 \
      -keyout /etc/ssl/private/mongodb-key.pem \
      -out /etc/ssl/certs/mongodb-cert.pem
    sudo chown mongod:mongod /etc/ssl/private/mongodb-key.pem /etc/ssl/certs/mongodb-cert.pem
    sudo chmod 600 /etc/ssl/private/mongodb-key.pem
    
  • 启用 TLS/SSL:在配置中要求加密通信并指定证书。
    net:
      ssl:
        mode: requireSSL
        PEMKeyFile: /etc/ssl/private/mongodb-key.pem
        CAFile: /etc/ssl/certs/mongodb-cert.pem
    
  • 重启生效:
    sudo systemctl restart mongod
    

启用 TLS/SSL 可防止明文传输导致的数据泄露与中间人攻击。

四 运行环境与系统加固

  • 最小权限运行:使用专用系统用户运行 mongod,并限制其目录权限。
    sudo useradd -r -s /sbin/nologin mongodb
    sudo chown -R mongodb:mongodb /var/lib/mongo /var/log/mongodb
    
  • 日志与审计:确保日志写入文件并合理配置级别,便于安全审计与异常排查。
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
      logLevel: 2
    
  • SELinux:若启用 SELinux,按需配置策略或布尔值以允许 MongoDB 正常运行(避免因策略阻断导致服务异常)。
  • 容器场景:在 docker-compose.yml 中使用环境变量 MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD 初始化 root 用户,并在服务启动参数或配置中启用 –auth/认证,确保镜像默认即安全。

五 运维与持续安全

  • 及时更新:定期执行 sudo yum update(MongoDB 按官方渠道升级),修复已知漏洞。
  • 备份与恢复:建立自动化备份(如按日全量/增量),并定期校验与演练恢复流程。
  • 监控与告警:集中采集与告警 mongod.log,关注失败登录、异常查询、复制变更等安全事件。
  • 密码与密钥管理:使用强口令并定期轮换;证书私钥设置 600 权限并妥善管控。
  • 最小权限原则:业务账号仅授予必需角色,避免在生产库授予 root 等高权限角色。 以上措施有助于形成闭环的安全运维体系,降低长期运行风险。

0