1. 启用身份验证(核心安全机制)
在/etc/mongod.conf配置文件中添加security.authorization: enabled,强制要求所有客户端连接提供有效凭证。修改后需重启MongoDB服务(sudo systemctl restart mongod)。启用后需创建管理员账户(如admin用户,赋予root角色)和数据库级用户(如readWrite、dbOwner等角色),避免未认证访问。
2. 限制网络访问(缩小攻击面)
通过net.bindIp参数限制MongoDB仅监听特定IP地址(如127.0.0.1仅本地访问,或添加业务服务器IP如192.168.1.100)。同时,使用Linux防火墙(如ufw或firewalld)放行MongoDB端口(默认27017),拒绝其他IP的非法连接。例如,ufw配置:sudo ufw allow from 192.168.1.0/24 to any port 27017。
3. 使用TLS/SSL加密通信(防数据泄露)
生成SSL证书(私钥mongodb-key.pem和证书mongodb-cert.pem),在mongod.conf中配置net.ssl.mode: requireSSL、PEMKeyFile(证书路径)和CAFile(CA证书路径),强制加密客户端与服务端的通信。加密后可防止中间人攻击窃取敏感数据。
4. 配置审计日志(追踪异常行为)
若使用MongoDB Enterprise,可在mongod.conf中启用审计日志,记录用户操作(如查询、修改、删除)。配置示例如下:security.auditLog.destination: file、format: JSON、path: /var/log/mongodb/audit.json。审计日志可帮助快速定位安全事件(如未授权访问、数据篡改)。
5. 以非特权用户运行(降低权限风险)
创建专用用户(如mongodb)运行MongoDB服务,避免使用root用户。操作步骤:sudo useradd -r -s /bin/false mongodb(创建用户)、sudo chown -R mongodb:mongodb /var/lib/mongodb(修改数据目录权限)、sudo -u mongodb mongod --config /etc/mongod.conf(以专用用户启动)。降低权限后可限制攻击者获取系统最高权限。
6. 禁用不必要的接口和功能(减少攻击入口)
在mongod.conf中禁用HTTP接口(net.http.enabled: false)、REST接口(net.RESTInterfaceEnabled: false)和JSONP(net.JSONPEnabled: false),这些功能默认开启会增加安全风险(如通过HTTP暴露数据库信息)。
7. 定期更新和打补丁(修复已知漏洞)
定期检查MongoDB官方安全公告,及时升级到最新稳定版本(如使用apt或yum更新mongodb-org包)。更新前需备份数据,避免升级失败导致数据丢失。
8. 定期备份数据(防数据丢失)
使用mongodump命令定期备份数据(如每天凌晨),备份文件存储在安全位置(如异地服务器或云存储)。示例命令:mongodump --out /backup/mongodb-$(date +%F)。备份可应对数据被篡改、删除或勒索软件攻击的情况。