MongoDB于Linux怎样安全配置
导读:MongoDB在Linux上的安全配置指南 1. 启用身份验证(核心安全措施) 身份验证是防止未授权访问的第一道防线。需在MongoDB配置文件(/etc/mongod.conf)中启用认证,并创建专用管理员账户: 编辑配置文件,添加/修...
MongoDB在Linux上的安全配置指南
1. 启用身份验证(核心安全措施)
身份验证是防止未授权访问的第一道防线。需在MongoDB配置文件(/etc/mongod.conf)中启用认证,并创建专用管理员账户:
- 编辑配置文件,添加/修改
security.authorization参数:security: authorization: enabled - 重启MongoDB服务使配置生效:
sudo systemctl restart mongod - 连接到MongoDB Shell(
mongo),切换至admin数据库并创建管理员账户(赋予root角色,拥有最高权限):use admin db.createUser({ user: "admin", pwd: "YourStrongPassword123!", roles: [{ role: "root", db: "admin" } ] } ) - 后续连接需使用认证信息(如
mongo -u admin -p YourStrongPassword123 --authenticationDatabase admin)。
2. 限制网络访问(缩小攻击面)
通过配置绑定IP和防火墙规则,仅允许受信任的IP访问MongoDB:
- 修改绑定IP:编辑
/etc/mongod.conf中的net.bindIp参数,推荐设置为本地IP或特定服务器IP(如127.0.0.1或192.168.1.100),避免使用0.0.0.0(允许所有IP访问):net: bindIp: 127.0.0.1,192.168.1.100 # 允许本地和指定局域网IP port: 27017 - 配置防火墙:
- 使用
ufw(Ubuntu):允许MongoDB端口(默认27017)并限制来源IP:sudo ufw allow from 192.168.1.100 to any port 27017/tcp # 仅允许指定IP sudo ufw enable - 使用
firewalld(CentOS/RHEL):添加永久规则并重载:sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="27017" accept' sudo firewall-cmd --reload
- 使用
- 重启MongoDB服务使绑定IP生效:
sudo systemctl restart mongod
3. 使用TLS/SSL加密通信(防数据泄露)
加密MongoDB客户端与服务端之间的通信,防止数据被窃听或篡改:
- 生成SSL证书:使用OpenSSL生成自签名证书(生产环境建议使用CA签发的证书):
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem cat mongodb-key.pem mongodb-cert.pem > mongodb.pem - 配置MongoDB:编辑
/etc/mongod.conf,添加SSL参数:net: ssl: mode: requireSSL # 强制使用SSL PEMKeyFile: /etc/ssl/mongodb.pem # 证书路径 CAFile: /etc/ssl/ca.pem # CA证书路径(可选,自签名时可省略) - 重启MongoDB服务:
sudo systemctl restart mongod - 客户端连接:更新连接字符串,启用SSL:
mongo --ssl --sslCAFile /etc/ssl/ca.pem --sslPEMKeyFile /etc/ssl/mongodb.pem -u admin -p YourStrongPassword123 --authenticationDatabase admin
4. 配置审计日志(追踪异常操作)
审计日志可记录所有用户操作(如查询、修改、删除),便于事后追溯安全事件:
- 启用审计日志:编辑
/etc/mongod.conf,添加security.auditLog配置(MongoDB Enterprise版支持):security: auditLog: destination: file # 日志输出到文件 format: JSON # 日志格式为JSON(易解析) path: /var/log/mongodb/audit.json # 日志文件路径 - 创建日志目录并设置权限:
sudo mkdir -p /var/log/mongodb sudo chown mongodb:mongodb /var/log/mongodb - 重启MongoDB服务:
sudo systemctl restart mongod - 日志示例:
{ "timestamp": "2025-10-27T10:00:00.000Z", "operation": "query", "database": "admin", "user": "admin", "command": { "find": "users", "filter": { } } }
5. 使用非特权用户运行MongoDB(降低权限风险)
避免以root用户运行MongoDB,减少潜在的安全风险:
- 创建专用用户:创建一个无登录权限的系统用户(如
mongodb):sudo useradd -r -s /bin/false mongodb - 修改数据目录权限:将MongoDB数据目录(默认
/var/lib/mongodb)和日志目录(默认/var/log/mongodb)的所有权赋予该用户:sudo chown -R mongodb:mongodb /var/lib/mongodb sudo chown -R mongodb:mongodb /var/log/mongodb - 以专用用户启动服务:
sudo -u mongodb mongod --config /etc/mongod.conf - 设置开机自启(若未设置):
sudo systemctl enable mongod
6. 禁用不必要的接口和功能(减少攻击面)
关闭MongoDB默认开启的非必要功能,如HTTP接口、REST API:
- 编辑
/etc/mongod.conf,添加以下配置:net: http: enabled: false # 禁用HTTP接口 RESTInterfaceEnabled: false # 禁用REST API JSONPEnabled: false # 禁用JSONP - 重启MongoDB服务:
sudo systemctl restart mongod
7. 定期更新和监控(应对新威胁)
保持MongoDB版本最新,及时修复安全漏洞,并通过监控及时发现异常:
- 更新MongoDB:使用包管理器更新到最新稳定版(如Ubuntu使用
sudo apt update & & sudo apt upgrade mongodb-org,CentOS使用sudo yum update mongodb-org)。 - 监控日志:定期检查MongoDB日志(
/var/log/mongodb/mongod.log)和审计日志,关注异常操作(如大量失败登录、未授权访问尝试)。 - 设置警报:使用监控工具(如Prometheus+Granafa、Zabbix)监控MongoDB服务状态、CPU/内存使用率、连接数等指标,设置阈值警报。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB于Linux怎样安全配置
本文地址: https://pptw.com/jishu/735711.html
