MongoDB在Linux上的安全设置有哪些
1. 启用身份验证(核心安全机制)
MongoDB默认未启用身份验证,需通过配置强制用户认证。编辑/etc/mongod.conf文件,添加/修改security.authorization参数:
security:
authorization: enabled
重启MongoDB服务使配置生效:sudo systemctl restart mongod。
创建管理员用户(需在admin数据库中操作):
use admin
db.createUser({
user: "admin",
pwd: "强密码(包含大小写、数字、特殊字符)",
roles: ["root"] // root角色拥有最高权限
}
)
后续连接需指定用户名、密码及认证数据库(如mongo -u admin -p 密码 --authenticationDatabase admin)。
2. 限制网络访问(缩小攻击面)
通过配置bindIp参数,仅允许特定IP地址访问MongoDB。编辑/etc/mongod.conf:
net:
bindIp: 127.0.0.1,192.168.1.100 # 本地+受信任的局域网IP(根据需求调整)
port: 27017 # 建议保持默认端口,避免频繁变更增加维护成本
重启服务生效:sudo systemctl restart mongod。
补充:防火墙规则
使用ufw(Ubuntu)或firewalld(CentOS)限制端口访问:
- ufw:
sudo ufw allow from 192.168.1.100 to any port 27017(允许指定IP),sudo ufw enable开启防火墙; - firewalld:
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。
3. 使用非特权用户运行MongoDB(降低权限风险)
避免以root用户运行MongoDB,创建专用用户:
sudo useradd -r -s /bin/false mongodb # 创建系统用户(无登录权限)
sudo chown -R mongodb:mongodb /var/lib/mongodb # 数据目录归属
sudo chown -R mongodb:mongodb /var/log/mongodb # 日志目录归属
修改/etc/systemd/system/mongod.service(若不存在则创建),指定用户:
[Service]
User=mongodb
Group=mongodb
重新加载systemd并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart mongod
```。
**4. 配置SSL/TLS加密通信(防数据泄露)**
生成自签名证书(生产环境建议使用CA签发的证书):
```bash
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/private/mongodb-key.pem -out /etc/ssl/certs/mongodb-cert.pem
编辑/etc/mongod.conf,启用SSL:
net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /etc/ssl/private/mongodb-key.pem # 私钥路径
CAFile: /etc/ssl/certs/mongodb-cert.pem # 证书路径(自签名时可省略或指向自身)
重启服务:sudo systemctl restart mongod。
客户端连接时需指定证书:
mongo --ssl --sslCAFile /etc/ssl/certs/mongodb-cert.pem --sslPEMKeyFile /etc/ssl/private/mongodb-key.pem -u admin -p 密码 --authenticationDatabase admin
```。
**5. 配置访问控制(细粒度权限管理)**
遵循**最小权限原则**,为不同数据库创建专用用户:
```javascript
use myDatabase // 切换至目标数据库
db.createUser({
user: "appUser",
pwd: "应用专用密码",
roles: ["readWrite", "dbOwner"] // 仅授予应用所需权限(如读写、数据库管理)
}
)
创建只读用户(适用于报表查询等场景):
use myDatabase
db.createUser({
user: "reportUser",
pwd: "报表密码",
roles: ["read"] // 仅允许读取数据
}
)
定期审计用户权限,删除闲置账户。
6. 配置审计日志(记录敏感操作)
MongoDB Enterprise版支持审计日志,记录用户操作(如查询、修改、删除)。编辑/etc/mongod.conf:
security:
auditLog:
destination: file # 日志输出到文件
format: JSON # 日志格式(JSON易解析)
path: /var/log/mongodb/audit.json # 日志路径
filter: '{
"users": ["admin"], "operationType": ["find", "update", "delete"] }
' # 可选:过滤特定操作
重启服务:sudo systemctl restart mongod。
日志可用于追踪异常操作(如未授权访问、数据篡改)。
7. 禁用不必要的接口(减少攻击入口)
MongoDB默认开启HTTP接口和REST API,建议禁用:
编辑/etc/mongod.conf:
net:
http:
enabled: false # 关闭HTTP接口
RESTInterfaceEnabled: false # 关闭REST API
JSONPEnabled: false # 关闭JSONP(防止跨站脚本攻击)
重启服务:sudo systemctl restart mongod。
8. 定期更新与监控(应对新威胁)
- 更新MongoDB:使用包管理器更新至最新稳定版(修复已知漏洞):
sudo apt update & & sudo apt upgrade mongodb-org # Ubuntu/Debian sudo yum update mongodb-org # CentOS/RHEL - 监控日志:定期检查
/var/log/mongodb/mongod.log,关注异常登录(如多次认证失败)、未授权访问尝试; - 设置警报:使用监控工具(如Prometheus+Granafa、Zabbix)监控MongoDB端口流量、CPU/内存使用率,异常时触发警报。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux上的安全设置有哪些
本文地址: https://pptw.com/jishu/735745.html
