1. 安装官方仓库包(优先选择)
避免从源码编译安装,优先使用Linux发行版的官方包管理器(如Ubuntu的apt、CentOS的yum)安装MongoDB,确保版本兼容性与安全更新。例如,Ubuntu系统可通过导入MongoDB官方GPG密钥、添加mongodb-org仓库后,使用apt install mongodb-org安装。
2. 正确配置数据与日志目录权限
创建专用的数据存储目录(如/var/lib/mongodb)和日志目录(如/var/log/mongodb),并将所有权赋予运行MongoDB的用户(通常为mongodb)。例如:
sudo mkdir -p /var/lib/mongodb /var/log/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb
避免使用root用户运行MongoDB,降低系统风险。
3. 强制启用用户认证
编辑/etc/mongod.conf配置文件,添加security.authorization: enabled,强制要求所有客户端连接提供认证。修改后需重启MongoDB服务使配置生效:
sudo systemctl restart mongod
启用认证后,需创建管理员账户(如admin用户,角色为userAdminAnyDatabase)和数据库用户(分配readWrite或dbOwner等最小必要权限)。
4. 严格限制网络访问
在/etc/mongod.conf中配置net.bindIp参数,仅允许必要的IP地址访问MongoDB。例如:
bindIp: 127.0.0.1(适用于单机环境);bindIp: 192.168.1.0/24(适用于局域网环境)。ufw或iptables)限制端口(默认27017)访问,仅放行信任IP。5. 优化存储引擎与内存配置
MongoDB默认使用WiredTiger存储引擎,需在配置文件中设置storage.wiredTiger.engineConfig.cacheSizeGB参数,建议值为物理内存的50%-75%(如8GB内存可设置为4GB),避免占用过多内存影响系统性能。此外,启用日志追加模式(systemLog.logAppend: true)确保日志完整性。
6. 禁用不必要的功能与接口
/etc/mongod.conf中设置net.http.enabled: false,减少攻击面;numactl --interleave=all或修改/etc/default/grub禁用NUMA,提升数据库性能。7. 配置TLS/SSL加密通信
生成SSL证书(可使用OpenSSL生成自签名证书或申请CA签发证书),并在/etc/mongod.conf中配置SSL参数:
net:
ssl:
mode: requireSSL
PEMKeyFile: /path/to/mongodb-key.pem
CAFile: /path/to/mongodb-cert.pem
重启服务后,MongoDB将强制使用SSL加密客户端与服务器之间的通信。
8. 启用审计日志(企业版必备)
若使用MongoDB Enterprise版本,可在/etc/mongod.conf中配置审计日志,记录所有用户操作(如查询、插入、删除):
security:
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.log
审计日志有助于追踪安全事件,满足合规要求。
9. 设置文件描述符与系统参数
MongoDB需要较高的文件描述符限制,需修改系统配置:
/etc/security/limits.conf,添加:mongodb soft nofile 64000
mongodb hard nofile 64000
/etc/sysctl.conf,添加:vm.dirty_background_ratio = 10
vm.dirty_ratio = 20
应用配置:sudo sysctl -p。这些设置可避免因文件描述符不足或内存写入延迟导致的性能问题。
10. 定期更新与监控
apt list --upgradable mongodb-org或yum check-update mongodb-org),及时升级到最新版本以修复已知漏洞;mongostat、mongotop,或第三方工具如Prometheus+Granafa)监控数据库性能(如QPS、延迟、内存使用率),及时发现异常。