
前两天我的 MongoDB 突然被清空,日志里全是陌生 IP 的连接记录… 这是典型的 未授权访问攻击,攻击者直接远程连接并删除了我的数据库! 今天把我总结的防护方案分享给大家?
? 1. 问题原因
MongoDB 默认会监听 0.0.0.0,意味着任何人都能直接访问数据库。 如果没有开启认证、设置密码,后果就是——删库跑路。
? 2. 修复步骤
① 修改配置文件
# Linux sudo nano /etc/mongod.conf
找到 net: 部分 改成:
bindIp: 127.0.0.1
保存并重启
sudo systemctl restart mongod
② 设置强密码用户
进入 MongoDB:
mongosh
创建管理员:
use admin db.createUser({ user: \"安全用户名\", pwd: \"超强密码!@#\", roles: [ { role: \"root\", db: \"admin\" } ] })
③ 使用 SSH 隧道远程访问
在本地执行:
ssh -fN -L 27017:127.0.0.1:27017 root@你的服务器IP
这样外网无法直接访问 MongoDB,必须通过 SSH 进入。
④ 立即更改所有密码
use admin db.updateUser(\"原用户名\", { pwd: \"新密码\" })
? 3. 防御要点
✅ 永远不要裸露在公网
✅ 必须启用认证
✅ 使用强密码
✅ 开启防火墙,限制访问 IP
✅ 定期备份
? 记住: 安全配置 ≠ 麻烦 一旦被攻击,损失远比防护成本高得多!
? 1. 问题原因
MongoDB 默认会监听 0.0.0.0,意味着任何人都能直接访问数据库。 如果没有开启认证、设置密码,后果就是——删库跑路。
? 2. 修复步骤
① 修改配置文件
# Linux sudo nano /etc/mongod.conf
找到 net: 部分 改成:
bindIp: 127.0.0.1
保存并重启
sudo systemctl restart mongod
② 设置强密码用户
进入 MongoDB:
mongosh
创建管理员:
use admin db.createUser({ user: \"安全用户名\", pwd: \"超强密码!@#\", roles: [ { role: \"root\", db: \"admin\" } ] })
③ 使用 SSH 隧道远程访问
在本地执行:
ssh -fN -L 27017:127.0.0.1:27017 root@你的服务器IP
这样外网无法直接访问 MongoDB,必须通过 SSH 进入。
④ 立即更改所有密码
use admin db.updateUser(\"原用户名\", { pwd: \"新密码\" })
? 3. 防御要点
✅ 永远不要裸露在公网
✅ 必须启用认证
✅ 使用强密码
✅ 开启防火墙,限制访问 IP
✅ 定期备份
? 记住: 安全配置 ≠ 麻烦 一旦被攻击,损失远比防护成本高得多!


