温馨提示×

centos中mongodb安全设置有哪些

小樊
46
2025-11-01 12:56:21
栏目: 云计算

1. 启用身份验证(Authorization)
这是MongoDB安全的基础,强制要求所有客户端连接提供用户名和密码验证。配置方法:编辑/etc/mongod.conf文件,在security部分添加authorization: enabled,保存后重启MongoDB服务(sudo systemctl restart mongod)。

2. 创建专用管理员账户
admin数据库中创建具有管理权限的管理员账户(如root角色),避免使用默认的无密码账户。示例命令:

mongo
use admin
db.createUser({
  user: "admin",
  pwd: "YourStrongPassword123!",
  roles: [{ role: "root", db: "admin" }]
})

创建后,所有管理操作(如创建用户、修改权限)需通过该账户认证。

3. 配置基于角色的访问控制(RBAC)
采用MongoDB内置的RBAC模型,为普通用户分配最小必要权限。常见内置角色:

  • 数据库级read(只读)、readWrite(读写)、dbAdmin(数据库管理,如创建索引);
  • 集群级clusterAdmin(集群管理)、clusterMonitor(集群监控);
  • 备份恢复backup(备份)、restore(恢复)。
    示例:为用户app_user分配testdb数据库的读写权限:
use testdb
db.createUser({
  user: "app_user",
  pwd: "AppUserPassword456!",
  roles: [{ role: "readWrite", db: "testdb" }]
})

如需自定义角色(如限制某用户只能操作products集合的inventory子集合),可通过db.createRole()定义权限。

4. 限制网络访问(Bind IP)
修改/etc/mongod.conf中的net.bindIp参数,仅允许必要的IP地址访问MongoDB服务。常见设置:

  • 仅本地访问(推荐开发环境):bindIp: 127.0.0.1
  • 允许本地和特定服务器IP(推荐生产环境):bindIp: 127.0.0.1,192.168.1.100(替换为实际服务器IP)。
    修改后重启服务生效,避免暴露服务到公网。

5. 配置防火墙规则
使用CentOS的firewalld工具开放MongoDB默认端口(27017),并限制访问来源。示例命令:

sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload

上述命令允许本地网络(192.168.1.0/24)访问27017端口,拒绝其他来源。

6. 启用SSL/TLS加密通信
通过SSL/TLS加密MongoDB客户端与服务端之间的数据传输,防止数据泄露。步骤如下:

  • 生成证书:使用OpenSSL生成CA证书、服务器证书和私钥(或使用第三方CA颁发的证书);
  • 配置MongoDB:在/etc/mongod.confnet.ssl部分添加以下内容:
    net:
      ssl:
        mode: requireSSL
        PEMKeyFile: /path/to/mongodb-server.pem  # 合并后的服务器证书+私钥(如`cat server.crt server.key > server.pem`)
        CAFile: /path/to/mongodb-ca.crt          # CA证书路径
    
  • 重启服务:保存配置并重启MongoDB(sudo systemctl restart mongod)。
    客户端连接时需指定SSL参数,如mongo --ssl --sslCAFile /path/to/mongodb-ca.crt --sslPEMKeyFile /path/to/mongodb-client.pem

7. 启用审计日志
记录所有数据库操作(如用户登录、数据修改、权限变更),便于后续安全审计和异常排查。配置方法:在/etc/mongod.confsystemLog部分添加:

systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
  verbosity: 1  # 1为基本审计,更高数值记录更详细信息

重启服务后,审计日志将保存到指定路径。

8. 定期更新与备份

  • 更新MongoDB:定期检查MongoDB官方安全公告,及时升级到最新稳定版本(使用sudo yum update mongodb-org);
  • 数据备份:使用mongodump工具定期备份数据(如每日凌晨),并将备份文件存储在安全位置(如异地服务器或云存储)。示例备份命令:
    mongodump --host localhost --port 27017 --username admin --password YourStrongPassword123 --authenticationDatabase admin --out /backup/mongodb-$(date +%F)
    

0