1. 谨慎配置bindIp参数
bindIp参数决定了MongoDB监听的网络接口,直接影响可访问的IP范围。默认情况下,Ubuntu上的MongoDB绑定到127.0.0.1(仅本地访问),若需远程访问,需修改为特定IP或0.0.0.0(允许所有IP)。强烈建议避免直接使用0.0.0.0,优先绑定服务器的局域网IP(如192.168.1.100)或公网IP(若需远程访问),以限制访问来源。修改配置文件(/etc/mongod.conf)后,需重启MongoDB服务(sudo systemctl restart mongod)使更改生效。
2. 强制启用身份验证
默认情况下,MongoDB未启用认证,任何能连接到服务器的用户均可访问数据库,存在极大安全风险。需在配置文件的security部分启用authorization:
security:
authorization: enabled
启用后,需创建管理员用户(如使用mongo shell执行db.createUser({ user: "admin", pwd: "strongpassword", roles: ["root"] })),后续连接需提供用户名和密码。
3. 配置防火墙限制访问
即使绑定了特定IP,仍需通过防火墙进一步限制MongoDB端口(默认27017)的访问。使用Ubuntu默认的ufw防火墙,可执行以下命令:
sudo ufw allow from <trusted-ip> to any port 27017/tcp # 仅允许指定IP访问
sudo ufw enable # 启用防火墙
若使用iptables,可添加规则:sudo iptables -A INPUT -p tcp --dport 27017 -s <trusted-ip> -j ACCEPT,并持久化规则(sudo netfilter-persistent save)。
4. 限制bindIp到必要IP
避免将bindIp设置为0.0.0.0(允许所有IP连接),除非是测试环境。生产环境中,应仅绑定服务器本地IP(127.0.0.1)和需要访问的局域网/公网IP(如192.168.1.100,10.0.0.5),减少潜在的攻击面。
5. 使用SSL/TLS加密通信
默认情况下,MongoDB的通信是明文的,易被窃听或篡改。建议启用SSL/TLS加密,配置net.ssl部分:
net:
ssl:
mode: requireSSL # 强制使用SSL
sslPEMKeyFile: /etc/ssl/mongodb.pem # 证书文件路径(包含私钥和公钥)
sslCAFile: /etc/ssl/ca.pem # CA证书路径(验证客户端证书,可选)
需提前生成或获取有效的SSL证书(可使用Let’s Encrypt免费获取),并重启MongoDB服务。
6. 定期监控与审计
启用MongoDB的审计日志功能,记录所有数据库操作(如查询、插入、删除),便于追踪异常行为。配置systemLog部分:
systemLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json
定期检查审计日志(如使用tail -f /var/log/mongodb/audit.json),及时发现可疑操作。
7. 保持MongoDB版本更新
及时更新MongoDB到最新稳定版,修复已知的安全漏洞(如CVE漏洞)。Ubuntu系统可通过sudo apt update && sudo apt upgrade mongodb命令更新,确保系统包管理器中的MongoDB版本是最新的。