MongoDB安全配置指南CentOS篇
MongoDB安全配置指南(CentOS篇)
在CentOS系统上配置MongoDB安全,需通过身份验证、访问控制、加密通信、网络隔离、审计监控等多层措施,降低未授权访问、数据泄露等风险。以下是具体操作步骤:
1. 安装MongoDB(若未安装)
使用MongoDB官方YUM仓库安装,确保软件包安全:
# 导入MongoDB官方GPG密钥
sudo rpm -v --import https://www.mongodb.org/static/pgp/server-6.0.asc
# 创建YUM仓库文件
sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo
在文件中添加以下内容(根据CentOS版本调整,如CentOS 7替换$releasever为7):
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
安装MongoDB并设置开机自启:
sudo yum install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod
2. 启用身份验证(核心安全措施)
编辑MongoDB配置文件/etc/mongod.conf,在security section添加以下内容,强制要求用户身份验证:
security:
authorization: enabled
重启MongoDB服务使配置生效:
sudo systemctl restart mongod
3. 创建管理员用户(管理权限)
使用mongo shell连接到MongoDB,切换至admin数据库(系统级权限数据库),创建具有root角色的管理员用户(用于管理所有数据库和用户):
mongo
use admin
db.createUser({
user: "admin",
pwd: "YourStrongPassword123!", # 使用大小写字母、数字和特殊字符组合
roles: ["root"] # root角色拥有最高权限
}
)
exit
4. 创建数据库用户(最小权限原则)
为具体数据库创建专用用户,仅授予必要权限(如readWrite用于读写、dbAdmin用于数据库管理)。例如,为mydb数据库创建mydbuser用户:
mongo
use mydb
db.createUser({
user: "mydbuser",
pwd: "MyDbPassword456!",
roles: ["readWrite", "dbAdmin"] # 仅授予读写和数据库管理权限
}
)
exit
5. 配置网络访问控制
5.1 限制绑定IP
编辑/etc/mongod.conf中的net section,将bindIp设置为仅允许本地访问(127.0.0.1)或特定IP地址(如服务器公网IP):
net:
bindIp: 127.0.0.1,192.168.1.100 # 替换为你的服务器IP
port: 27017 # 默认端口,可修改但需同步更新防火墙规则
重启MongoDB服务:
sudo systemctl restart mongod
5.2 配置防火墙
使用firewalld开放MongoDB默认端口(27017),并限制访问来源(如仅允许特定IP段):
# 开放端口(永久生效)
sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
# 限制访问来源(可选,如仅允许公司IP段192.168.1.0/24)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="27017" accept'
# 重新加载防火墙规则
sudo firewall-cmd --reload
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.pem -out /etc/ssl/mongodb/mongodb-cert.pem
# 合并证书和密钥为PEM格式(MongoDB要求)
sudo cat /etc/ssl/mongodb/mongodb-key.pem /etc/ssl/mongodb/mongodb-cert.pem >
/etc/ssl/mongodb/mongodb.pem
# 设置证书文件权限(仅mongod用户可读)
sudo chown mongod:mongod /etc/ssl/mongodb/mongodb.pem
sudo chmod 600 /etc/ssl/mongodb/mongodb.pem
6.2 配置MongoDB使用SSL
编辑/etc/mongod.conf中的net.ssl section,启用SSL并要求客户端使用SSL连接:
net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /etc/ssl/mongodb/mongodb.pem # 证书文件路径
# CAFile: /etc/ssl/mongodb/ca.pem # 若使用CA签发证书,需指定CA文件
重启MongoDB服务:
sudo systemctl restart mongod
7. 启用审计日志(操作追溯)
编辑/etc/mongod.conf中的auditLog section,开启审计日志记录所有用户操作(如查询、修改、删除):
auditLog:
destination: file # 日志输出到文件
format: JSON # 日志格式为JSON(便于解析)
path: /var/log/mongodb/audit.log # 日志文件路径
filter: '{
}
' # 空过滤器表示记录所有操作
创建日志目录并设置权限:
sudo mkdir -p /var/log/mongodb
sudo chown mongod:mongod /var/log/mongodb
重启MongoDB服务:
sudo systemctl restart mongod
8. 定期更新与维护
8.1 更新MongoDB软件包
定期检查并安装MongoDB官方仓库的最新安全更新:
sudo yum update mongodb-org -y
8.2 定期备份数据
使用mongodump工具定期备份数据库(如每日凌晨2点),并将备份文件存储至安全位置(如异地服务器或云存储):
# 创建备份脚本(/usr/local/bin/mongodb_backup.sh)
sudo vi /usr/local/bin/mongodb_backup.sh
添加以下内容(替换mydb为你的数据库名,/backups/mongodb为备份目录):
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/mongodb"
mkdir -p $BACKUP_DIR
mongodump --out $BACKUP_DIR/$DATE
# 删除7天前的备份(保留最近7天)
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {
}
\;
设置脚本可执行权限并添加定时任务(每天凌晨2点执行):
sudo chmod +x /usr/local/bin/mongodb_backup.sh
sudo crontab -e
添加以下内容:
0 2 * * * /usr/local/bin/mongodb_backup.sh
9. 监控与告警(实时感知异常)
使用mongostat(实时监控)和mongotop(查询性能分析)工具监控MongoDB运行状态,或集成第三方监控工具(如Prometheus+Granafa)实现可视化。设置告警规则(如CPU使用率超过80%、连接数超过1000),及时响应异常情况。
通过以上步骤,可全面加固CentOS系统上MongoDB的安全性,防范未授权访问、数据泄露等风险。需根据实际业务需求调整配置(如增加自定义角色、调整防火墙规则),并定期审查安全策略的有效性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB安全配置指南CentOS篇
本文地址: https://pptw.com/jishu/738602.html
