MongoDB在Linux上怎样安全配置
1. 启用身份验证(核心安全措施)
编辑MongoDB配置文件(/etc/mongod.conf
),在security
section添加或修改authorization: enabled
,强制要求用户连接时提供凭据。修改后重启服务:sudo systemctl restart mongod
。启用后需创建管理员账户(见下一步),避免未认证访问。
2. 创建专用管理员账户(RBAC基础)
使用mongo
shell连接到MongoDB,切换至admin
数据库(管理员账户需存放在该数据库),创建具有root
角色的用户(拥有最高权限):
use admin
db.createUser({
user: "admin",
pwd: "YourStrongPassword123!", // 使用大小写字母、数字和符号组合
roles: [{
role: "root", db: "admin" }
]
}
)
退出shell后,需重启MongoDB服务使认证生效。
3. 限制网络访问(缩小攻击面)
- 配置绑定IP:修改
/etc/mongod.conf
中的net.bindIp
参数,仅允许必要的IP地址访问。例如,仅允许本地访问:bindIp: 127.0.0.1
;或允许局域网IP段:bindIp: 192.168.1.0/24
(根据实际需求调整)。 - 禁用不必要的接口:在
net
section添加http.enabled: false
,关闭MongoDB的HTTP管理接口(生产环境无需此功能)。
修改后重启服务:sudo systemctl restart mongod
。
4. 配置防火墙规则(阻断非法访问)
使用Linux防火墙(如ufw
或firewalld
)限制对MongoDB默认端口(27017)的访问:
- ufw(Ubuntu/Debian):
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 # 应用规则
确保仅受信任的IP地址能访问MongoDB端口。
5. 启用TLS/SSL加密(保护数据传输)
- 生成证书:使用OpenSSL生成自签名证书(生产环境建议使用CA签发的证书):
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
- 配置MongoDB:在
/etc/mongod.conf
的net.ssl
section添加以下内容:net: ssl: mode: requireSSL # 强制使用SSL PEMKeyFile: /path/to/mongodb-key.pem # 证书私钥路径 CAFile: /path/to/mongodb-cert.pem # 证书路径(自签名时可指向自身)
修改后重启服务:sudo systemctl restart mongod
。客户端连接时需添加--ssl
参数:mongo --ssl --sslCAFile /path/to/mongodb-cert.pem --sslPEMKeyFile /path/to/mongodb-key.pem -u admin -p --authenticationDatabase admin
。
6. 配置审计日志(追踪异常行为)
若使用MongoDB Enterprise,可启用审计日志记录所有用户操作(如查询、修改、删除):
在/etc/mongod.conf
的security.auditLog
section添加:
security:
auditLog:
destination: file # 日志存储位置
format: JSON # 日志格式(JSON易解析)
path: /var/log/mongodb/audit.json # 日志文件路径
filter: '{
}
' # 可选:过滤特定操作(如仅记录删除操作)
修改后重启服务:sudo systemctl restart mongod
。审计日志可用于事后追溯安全事件。
7. 使用非特权用户运行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
- 以专用用户启动服务:修改MongoDB服务文件(
/etc/systemd/system/mongod.service
),将User
和Group
设置为mongodb
,然后重启服务:sudo systemctl daemon-reload sudo systemctl restart mongod
避免MongoDB以root用户运行,降低系统被入侵的风险。
8. 定期更新与监控(应对新威胁)
- 更新MongoDB:定期检查MongoDB官方仓库(如Ubuntu的
mongodb-org
包),安装最新安全补丁:sudo apt update & & sudo apt upgrade mongodb-org # Ubuntu/Debian sudo yum update mongodb-org # CentOS/RHEL
- 监控日志与性能:使用
mongostat
(监控操作频率)、mongotop
(监控集合级读写)工具,或集成Prometheus+Granafa等监控系统,实时跟踪MongoDB的运行状态(如连接数、查询延迟、磁盘空间),及时发现异常(如大量失败的登录尝试)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux上怎样安全配置
本文地址: https://pptw.com/jishu/722370.html