温馨提示×

怎么加固Debian的MongoDB

小樊
38
2026-08-02 05:23:56
栏目: 云计算

加固 Debian 上的 MongoDB,核心目标是防止未授权访问、减少攻击面、提升可审计性与稳定性。下面按从基础到进阶给你一套可落地的加固方案(适用于 Debian 10/11/12,MongoDB 4.4/5.x/6.x/7.x)。


一、基础安全(必须做)

1. 不要使用 root 启动 MongoDB

确认 MongoDB 使用专用用户运行:

ps aux | grep mongod

正常应看到:

mongodb   ...

若不是,请检查 systemd 服务:

cat /lib/systemd/system/mongod.service

2. 绑定监听地址(禁止公网直接访问)

编辑配置文件:

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

3. 启用认证(最关键)

security:
  authorization: enabled

重启 MongoDB:

sudo systemctl restart mongod

4. 创建管理员账号

进入 mongo shell:

mongosh
use admin
db.createUser({
  user: "admin",
  pwd: "StrongPassword123!",
  roles: [{ role: "root", db: "admin" }]
})

退出后测试:

mongosh -u admin -p --authenticationDatabase admin

二、数据库级安全

5. 最小权限原则

不要给应用 root 权限。

示例:给应用创建一个专用账号:

use appdb
db.createUser({
  user: "appuser",
  pwd: "AppPass!2025",
  roles: [{ role: "readWrite", db: "appdb" }]
})

6. 删除默认账号和测试库

use test
db.dropDatabase()

use admin
db.dropUser("test")

三、网络安全

7. 使用防火墙(强烈推荐)

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow from 内网IP to any port 27017
sudo ufw enable

检查:

sudo ufw status

8. 不要直接暴露 MongoDB 到公网

✅ 正确方式:

  • 内网访问
  • SSH 隧道
  • 或使用应用中间件

❌ 错误方式:

bindIp: 0.0.0.0

四、传输加密(推荐)

9. 启用 TLS / SSL

生成证书后在 mongod.conf

net:
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongo.pem

客户端连接:

mongosh --tls --host xxx

五、审计与日志

10. 开启审计日志(企业版 / Percona)

官方企业版:

auditLog:
  destination: file
  format: JSON
  path: /var/log/mongodb/audit.json

11. 保留并保护日志

ls -l /var/log/mongodb/

确保:

  • 权限 640
  • 仅 mongodb / root 可读

六、文件与系统加固

12. 限制配置文件权限

sudo chown root:mongodb /etc/mongod.conf
sudo chmod 640 /etc/mongod.conf

13. 禁用不必要的接口

如使用 HTTP 接口(老版本):

net:
  http:
    enabled: false

七、Debian 系统级加固

14. 定期更新

sudo apt update && sudo apt upgrade -y

MongoDB 官方仓库更新:

sudo apt update
sudo apt upgrade mongodb-org

15. 使用 systemd 限制资源(可选)

[Service]
PrivateTmp=true
NoNewPrivileges=true
LimitNOFILE=64000

八、快速加固检查清单 ✅

项目 是否完成
启用认证
非 root 运行
绑定内网 IP
防火墙限制
最小权限账号
删除默认库
日志保护
定期更新

九、推荐生产架构

[ App Server ]
      |
(内网)
      |
[ MongoDB 仅监听 127.0.0.1 / 内网 ]

如果你愿意,我可以:

  • 帮你检查当前 MongoDB 配置是否安全
  • 根据你现在的 Debian + MongoDB 版本给出精确命令
  • 生成一份 MongoDB 安全基线脚本

你可以直接贴出:

mongod --version
cat /etc/mongod.conf

0