CentOS MongoDB安全配置指南
CentOS MongoDB安全配置指南
1. 系统与MongoDB基础准备
- 更新系统:运行
sudo yum update -y确保CentOS系统为最新版本,修复已知安全漏洞。 - 安装MongoDB:通过官方YUM仓库安装MongoDB(以4.2版本为例),创建仓库文件
/etc/yum.repos.d/mongodb-org-4.2.repo,内容如下:执行[mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.ascsudo yum install -y mongodb-org安装MongoDB。 - 启动服务:启动MongoDB并设置开机自启:
sudo systemctl start mongod & & sudo systemctl enable mongod。
2. 启用身份验证(核心安全措施)
编辑MongoDB配置文件/etc/mongod.conf,在security section添加以下内容以强制身份验证:
security:
authorization: enabled
保存后重启服务使配置生效:sudo systemctl restart mongod。
3. 创建管理员账户(超级权限)
使用MongoDB Shell(mongo)切换至admin数据库,创建拥有root角色(超级管理员)的账户:
use admin
db.createUser({
user: "admin",
pwd: "YourStrongPassword123!", // 替换为包含大小写字母、数字和符号的强密码
roles: [{
role: "root", db: "admin" }
]
}
)
退出Shell:exit。
4. 配置防火墙限制访问
使用firewalld开放MongoDB默认端口(27017),并限制仅允许可信IP访问:
sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
sudo firewall-cmd --reload
若需进一步限制源IP(如仅允许公司IP192.168.1.100访问),可添加富规则:
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
5. 限制网络访问(绑定IP)
修改/etc/mongod.conf中的net section,将bindIp设置为仅允许本地连接(127.0.0.1)。若需远程访问,可添加特定IP(如192.168.1.100):
net:
bindIp: 127.0.0.1,192.168.1.100 # 多个IP用逗号分隔
port: 27017
重启服务使配置生效:sudo systemctl restart mongod。
6. 启用SSL/TLS加密通信
6.1 生成SSL证书
使用OpenSSL生成自签名证书(生产环境建议使用CA签发的证书):
sudo mkdir -p /etc/ssl/mongodb
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb/mongodb.key -out /etc/ssl/mongodb/mongodb.crt
sudo chmod 600 /etc/ssl/mongodb/mongodb.key
sudo cat /etc/ssl/mongodb/mongodb.key /etc/ssl/mongodb/mongodb.crt >
/etc/ssl/mongodb/mongodb.pem
6.2 配置MongoDB使用SSL
编辑/etc/mongod.conf,添加以下内容:
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb/mongodb.pem
# 若使用CA签发的证书,取消以下注释并指定CA文件路径
# CAFile: /path/to/ca.crt
重启服务:sudo systemctl restart mongod。
7. 配置审计日志(合规需求)
编辑/etc/mongod.conf,在systemLog section添加以下内容以记录所有数据库操作:
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
verbosity: 1 # 1为基本日志,2为详细日志(根据需求调整)
重启服务:sudo systemctl restart mongod。
8. 细化用户权限管理(RBAC)
8.1 创建普通用户(最小权限原则)
例如,为mydatabase数据库创建只读用户readonlyUser:
use mydatabase
db.createUser({
user: "readonlyUser",
pwd: "ReadOnlyPass123!",
roles: [{
role: "read", db: "mydatabase" }
]
}
)
创建读写用户readwriteUser:
use mydatabase
db.createUser({
user: "readwriteUser",
pwd: "ReadWritePass123!",
roles: [{
role: "readWrite", db: "mydatabase" }
]
}
)
8.2 创建自定义角色(满足特殊需求)
若内置角色无法满足需求,可创建自定义角色。例如,创建允许在mydatabase的mycollection集合上执行find和aggregate操作的角色:
use admin
db.createRole({
role: "customDataAnalyzer",
privileges: [
{
resource: {
db: "mydatabase", collection: "mycollection" }
,
actions: ["find", "aggregate"]
}
],
roles: []
}
)
将自定义角色分配给用户:
use admin
db.grantRolesToUser("readonlyUser", ["customDataAnalyzer"])
8.3 定期审查权限
定期检查用户权限,确保符合当前业务需求:
// 查看用户权限详情
db.getUser("readonlyUser")
// 删除不再需要的用户
db.dropUser("oldUser")
9. 定期更新与维护
- 更新MongoDB:定期检查MongoDB官方YUM仓库,升级至最新稳定版本以修复安全漏洞:
sudo yum update mongodb-org - 备份数据:使用
mongodump定期备份数据,存储至安全位置:mongodump --out /backup/mongodb_$(date +%F) - 监控系统:使用监控工具(如Prometheus+Granafa)监控MongoDB性能与安全事件,及时响应异常。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS MongoDB安全配置指南
本文地址: https://pptw.com/jishu/734579.html
