温馨提示×

MongoDB在CentOS的安全配置怎么做

小樊
38
2025-10-06 23:37:39
栏目: 云计算

MongoDB在CentOS上的安全配置步骤

1. 系统与软件准备

  • 更新系统:运行sudo yum update -y确保CentOS系统为最新版本,修复已知安全漏洞。
  • 安装MongoDB:通过官方YUM仓库安装MongoDB(以4.2版本为例):
    • 创建仓库文件:sudo vi /etc/yum.repos.d/mongodb-org-4.2.repo,添加以下内容:
      [mongodb-org-4.2]
      name=MongoDB Repository
      baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
      gpgcheck=1
      enabled=1
      gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
      
    • 安装MongoDB:sudo yum install -y mongodb-org

2. 启用身份验证(核心安全措施)

  • 编辑MongoDB配置文件/etc/mongod.conf,在security section添加:
    security:
      authorization: enabled
    
  • 重启MongoDB服务使配置生效:sudo systemctl restart mongod
  • 创建管理员账户:使用MongoDB shell创建具有root权限的管理员(需替换your_strong_password为强密码):
    mongo
    use admin
    db.createUser({
      user: "admin",
      pwd: "your_strong_password",
      roles: [{ role: "root", db: "admin" }]
    })
    
    之后需通过mongo -u admin -p --authenticationDatabase "admin"认证后操作。

3. 配置网络访问控制

  • 限制绑定IP:修改/etc/mongod.conf中的net.bindIp,仅允许本地或特定IP访问(如127.0.0.1为本机,192.168.1.100为服务器IP):
    net:
      bindIp: 127.0.0.1,192.168.1.100  # 根据需求调整
      port: 27017
    
  • 配置防火墙:使用firewalld开放MongoDB默认端口(27017):
    sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
    sudo firewall-cmd --reload
    
    若使用iptables,可运行:sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT并保存规则。

4. 启用SSL/TLS加密通信

  • 生成SSL证书:使用OpenSSL生成自签名证书(生产环境建议使用CA签发的证书):
    sudo mkdir -p /etc/ssl/mongodb
    sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 \
      -keyout /etc/ssl/mongodb/mongodb-key.pem \
      -out /etc/ssl/mongodb/mongodb-cert.pem
    sudo chmod 600 /etc/ssl/mongodb/*.pem
    
  • 配置MongoDB使用SSL:修改/etc/mongod.conf中的net.ssl section:
    net:
      ssl:
        mode: requireSSL  # 强制使用SSL
        PEMKeyFile: /etc/ssl/mongodb/mongodb-cert.pem
        # 若使用CA签发证书,需添加CAFile路径
        # CAFile: /etc/ssl/mongodb/ca.pem
    
  • 重启MongoDB服务:sudo systemctl restart mongod

5. 细化用户权限管理

  • 为特定数据库创建用户:以管理员身份登录MongoDB shell,为mydatabase数据库创建只读用户(替换readonlypassword为强密码):
    use mydatabase
    db.createUser({
      user: "readonlyuser",
      pwd: "readonlypassword",
      roles: [{ role: "read", db: "mydatabase" }]
    })
    
  • 按需分配角色:根据业务需求选择角色(如readWrite用于读写、dbAdmin用于数据库管理),避免过度授权。

6. 启用审计日志(可选但推荐)

  • 编辑/etc/mongod.conf,在systemLog section添加审计日志配置:
    systemLog:
      destination: file
      path: /var/log/mongodb/mongod-audit.log
      logAppend: true
      verbosity: 1  # 日志详细程度(0-5,1为基本审计)
    
  • 重启MongoDB服务:sudo systemctl restart mongod,审计日志将记录所有数据库操作(如查询、插入、删除)。

7. 定期维护与更新

  • 更新MongoDB:定期通过sudo yum update mongodb-org升级到最新版本,修复安全漏洞。
  • 备份数据:使用mongodump定期备份数据库(如每日备份),存储到安全位置:
    mongodump --out /backup/mongodb-$(date +%F)
    
  • 监控日志:定期检查/var/log/mongodb/mongod.log和审计日志,及时发现异常行为(如频繁的失败登录尝试)。

通过以上步骤,可显著提升CentOS上MongoDB的安全性,覆盖身份认证、访问控制、加密通信、权限管理等核心安全需求。根据实际环境(如是否允许远程访问、是否需要高可用性),可进一步调整配置(如配置复制集、调整SSL证书路径)。

0