加固 Debian 上的 MongoDB,核心目标是防止未授权访问、减少攻击面、提升可审计性与稳定性。下面按从基础到进阶给你一套可落地的加固方案(适用于 Debian 10/11/12,MongoDB 4.4/5.x/6.x/7.x)。
确认 MongoDB 使用专用用户运行:
ps aux | grep mongod
正常应看到:
mongodb ...
若不是,请检查 systemd 服务:
cat /lib/systemd/system/mongod.service
编辑配置文件:
sudo nano /etc/mongod.conf
修改为:
net:
bindIp: 127.0.0.1
port: 27017
✅ 生产环境强烈建议 127.0.0.1 或内网 IP
❌ 不要直接 0.0.0.0
重启:
sudo systemctl restart mongod
security:
authorization: enabled
重启 MongoDB:
sudo systemctl restart mongod
进入 mongo shell:
mongosh
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [{ role: "root", db: "admin" }]
})
退出后测试:
mongosh -u admin -p --authenticationDatabase admin
不要给应用 root 权限。
示例:给应用创建一个专用账号:
use appdb
db.createUser({
user: "appuser",
pwd: "AppPass!2025",
roles: [{ role: "readWrite", db: "appdb" }]
})
use test
db.dropDatabase()
use admin
db.dropUser("test")
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow from 内网IP to any port 27017
sudo ufw enable
检查:
sudo ufw status
✅ 正确方式:
❌ 错误方式:
bindIp: 0.0.0.0
生成证书后在 mongod.conf:
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongo.pem
客户端连接:
mongosh --tls --host xxx
官方企业版:
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json
ls -l /var/log/mongodb/
确保:
sudo chown root:mongodb /etc/mongod.conf
sudo chmod 640 /etc/mongod.conf
如使用 HTTP 接口(老版本):
net:
http:
enabled: false
sudo apt update && sudo apt upgrade -y
MongoDB 官方仓库更新:
sudo apt update
sudo apt upgrade mongodb-org
[Service]
PrivateTmp=true
NoNewPrivileges=true
LimitNOFILE=64000
| 项目 | 是否完成 |
|---|---|
| 启用认证 | ✅ |
| 非 root 运行 | ✅ |
| 绑定内网 IP | ✅ |
| 防火墙限制 | ✅ |
| 最小权限账号 | ✅ |
| 删除默认库 | ✅ |
| 日志保护 | ✅ |
| 定期更新 | ✅ |
[ App Server ]
|
(内网)
|
[ MongoDB 仅监听 127.0.0.1 / 内网 ]
如果你愿意,我可以:
你可以直接贴出:
mongod --version
cat /etc/mongod.conf