CentOS 上 MongoDB 安全设置实操指南
一 基础加固
sudo yum update -y[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
安装:sudo yum install -y mongodb-orgsudo mkdir -p /var/lib/mongodb /var/log/mongodb && sudo chown -R mongod:mongod /var/lib/mongodb /var/log/mongodbsudo systemctl start mongod && sudo systemctl enable mongodsecurity:
authorization: enabled
sudo systemctl restart mongodmongouse admin
db.createUser({
user: "admin",
pwd: "YourStrongPassword123!",
roles: [{ role: "root", db: "admin" }]
})
mongo -u admin -p 'YourStrongPassword123!' --authenticationDatabase adminnet:
port: 27017
bindIp: 127.0.0.1
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.100
sudo systemctl restart mongodsudo firewall-cmd --permanent --zone=public --add-port=27017/tcp && sudo firewall-cmd --reloadsudo 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
以上步骤覆盖系统更新、安装、认证、最小暴露面与防火墙等关键安全基线。
二 加密与审计
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/*.pem
sudo cat /etc/ssl/mongodb/mongodb.key /etc/ssl/mongodb/mongodb.crt > /etc/ssl/mongodb/mongodb.pem
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb/mongodb.pem
# 如使用 CA:CAFile: /path/to/ca.crt
sudo systemctl restart mongodsystemLog:
destination: file
path: /var/log/mongodb/mongod-audit.log
logAppend: true
# 可按需调整详细程度
verbosity: 1
sudo systemctl restart mongod
启用传输加密与审计可显著降低数据泄露与内部滥用风险,并满足常见合规要求。三 用户与权限最小化
use mydatabase
db.createUser({
user: "readonlyUser",
pwd: "ReadOnlyPass123!",
roles: [{ role: "read", db: "mydatabase" }]
})
use mydatabase
db.createUser({
user: "readwriteUser",
pwd: "ReadWritePass123!",
roles: [{ role: "readWrite", db: "mydatabase" }]
})
mongo -u readonlyUser -p 'ReadOnlyPass123!' --authenticationDatabase mydatabase mydatabasemongo -u readwriteUser -p 'ReadWritePass123!' --authenticationDatabase mydatabase mydatabase
遵循最小权限原则,避免在生产环境长期使用高权限账户。四 维护与验证
sudo yum update mongodb-org -ymongodump --out /backup/mongodb-$(date +%F)mongo -u admin -p 'YourStrongPassword123!' --authenticationDatabase adminmongo --host <服务器IP> --port 27017 -u admin -p 'YourStrongPassword123!' --authenticationDatabase admin --ssl --sslCAFile /path/to/ca.crt