下面给你一套在 Debian 上加固 MongoDB 的实用清单,从安装、权限、网络、配置到审计,适合生产环境。默认假设你使用的是 MongoDB 6.x / 7.x(官方 APT 仓库),如果你用的是 Debian 自带版本(通常较旧),建议优先使用官方源。
Debian 自带版本往往较旧,缺少安全更新。
# 示例:Debian 12 (bookworm)
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" \
| tee /etc/apt/sources.list.d/mongodb-org-7.0.list
apt update
apt install -y mongodb-org
编辑配置文件:
nano /etc/mongod.conf
启用:
security:
authorization: enabled
重启:
systemctl restart mongod
先以本地方式连接:
mongosh
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword",
roles: [ { role: "root", db: "admin" } ]
})
退出后重新登录:
mongosh -u admin -p --authenticationDatabase admin
✅ 不要使用默认空密码
net:
bindIp: 127.0.0.1
port: 27017
如果是集群或内网访问:
bindIp: 127.0.0.1,10.0.0.5
❌ 绝对不要 bindIp: 0.0.0.0
net:
port: 27018
只允许应用服务器访问:
ufw allow from 10.0.0.0/8 to any port 27017
ufw enable
或 nftables:
nft add rule inet filter input tcp dport 27017 ip saddr 10.0.0.0/8 accept
不要所有应用都用 admin
use appdb
db.createUser({
user: "appuser",
pwd: "AppStrongPass",
roles: [ { role: "readWrite", db: "appdb" } ]
})
✅ 避免:
rootdbOwner 除非必要生成证书后:
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongo/mongo.pem
CAFile: /etc/ssl/mongo/ca.pem
客户端连接:
mongosh --tls --tlsCAFile ca.pem
Debian 官方包默认已使用 mongodb 用户,确认:
ps aux | grep mongod
chown -R mongodb:mongodb /var/lib/mongodb
chmod 700 /var/lib/mongodb
禁用 HTTP 接口(新版默认关闭):
net:
http:
enabled: false
社区版替代方案:
rsyslog / journaldsystemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
mongodump --authenticationDatabase admin -u admin -p
apt update && apt upgrade mongodb-org
| 项目 | 状态 |
|---|---|
| 启用认证 | ✅ |
| 非公网绑定 | ✅ |
| 防火墙限制 | ✅ |
| 最小权限用户 | ✅ |
| TLS 启用 | ✅ |
| 日志开启 | ✅ |
| 定期更新 | ✅ |
如果你愿意,我可以:
mongod.conf 模板直接告诉我你的使用场景(单机 / 副本集 / 公网 / 内网)。