MongoDB怎么防止勒索病毒攻击?安全加固步骤有哪些?

文章导读
MongoDB 防止勒索病毒攻击的核心是启用身份认证、绑定内网 IP 并配置防火墙,同时验证备份可恢复性。默认无认证且监听公网的配置极易被扫描脚本直接删除数据,必须在安装后立即修改默认配置。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

MongoDB 防止勒索病毒攻击的核心是启用身份认证、绑定内网 IP 并配置防火墙,同时验证备份可恢复性。默认无认证且监听公网的配置极易被扫描脚本直接删除数据,必须在安装后立即修改默认配置。

先说结论:MongoDB 防勒索的关键在于阻断未授权访问入口并确保有可用备份,单靠存储加密无法防止逻辑删除。

  • 先判断:检查配置文件是否启用 security.authorization 及 bind_ip 是否限制为内网。
  • 优先做:开启认证、创建最小权限用户、配置防火墙只放行应用服务器 IP。
  • 再验证:尝试无密码连接应被拒绝,并定期测试备份恢复流程。

命令速用版

若发现数据库疑似被入侵,立即执行网络隔离,阻止攻击者继续操作。

sudo iptables -A INPUT -p tcp `--dport` 27017 -j DROP

检查当前 MongoDB 配置是否开启认证:

grep -E "authorization|bind_ip" /etc/mongod.conf

查看是否存在异常数据库(如 READ_ME_TO_RECOVER):

mongo `--eval` "show dbs"

为什么会这样

MongoDB 默认启动时不启用认证且监听所有网络接口,导致公网扫描脚本可直接连接并执行删除操作。安装完毕后 admin 数据库为空,即使添加`--auth` 参数,若未创建第一个用户,认证机制也不会生效,攻击者无需密码即可执行 db.dropDatabase() 或导出全部数据。

分步处理

按照以下顺序加固 MongoDB,确保每一步都有验证。

1. 网络层隔离
修改 bind_ip 仅监听内网 IP 或本机,不要使用 0.0.0.0。在云服务器安全组中,只放行应用服务器的源 IP 到 27017 端口,拒绝 0.0.0.0/0。

2. 启用身份认证
在 mongod.conf 中设置 security.authorization: enabled。重启服务前,务必先在 admin 数据库创建管理员用户,否则重启后将无法登录。

use admin
db.createUser({user:"admin", pwd:"强密码", roles:["userAdminAnyDatabase","clusterAdmin"]})

3. 创建业务专用用户
不要使用 root 或 admin 账号给业务连接。为每个业务库创建独立用户,仅授予 readWrite 权限。

use orders
db.createUser({user:"order_app", pwd:"独立强密码", roles:[{role:"readWrite", db:"orders"}]})

4. 备份与恢复验证
配置定期快照备份,并将备份存储在与数据库隔离的位置。定期执行恢复演练,确保备份文件未被损坏且可用。

怎么验证是否生效

完成加固后,通过以下方法确认安全策略已生效。

MongoDB怎么防止勒索病毒攻击?安全加固步骤有哪些?

1. 认证测试
尝试不使用密码连接数据库,连接应被拒绝或无法执行写操作。

mongo `--host` <IP> `--eval` "db.runCommand({ping:1})"

2. 网络测试
从非白名单 IP 尝试 telnet 27017 端口,连接应超时或被重置。

3. 日志审计
开启审计日志,监控 remove、dropCollection 等高危行为,确认日志能记录连接来源 IP。

常见坑

以下误区可能导致加固措施失效,操作时需特别注意。

1. 加密不等于防勒索
WiredTiger 存储引擎加密仅防止物理磁盘被盗后读取,无法阻止获得权限后的逻辑删除操作。开启加密后仍需配合访问控制。

2. 本地回环 bypass

部分旧版本或特定配置下,localhost 可能绕过认证。确保设置 enableLocalhostAuthBypass: false 或显式绑定非回环 IP。

3. 改端口无效
将 27017 改为其他端口只能防小白,专业扫描器会将常见偏移端口列入字典,不能替代防火墙策略。

常见问题

开启 WiredTiger 加密能防止文件被删除吗?

不能。加密仅保护磁盘文件防物理窃取,一旦攻击者获得数据库写权限,仍可执行 remove 或 drop 命令清空数据。

数据库被勒索后数据能恢复吗?

取决于是否有未被覆盖的备份或延迟副本集。发现勒索后应立即停止 mongod 进程,避免新写入覆盖底层数据块。

只绑定内网 IP 就安全了吗?

不安全。如果宿主机其他服务被攻破(如 SSRF、Docker API 暴露),攻击者仍能从内网打穿 MongoDB,需配合防火墙双重防护。

参考来源

  • 如何防御针对 MongoDB 的勒索病毒攻击
  • MongoDB GridFS 如何应对勒索病毒攻击_开启数据库加密存储引擎
  • 从一次数据被黑经历说起:MongoDB 安全防护的 5 个关键步骤
  • Ubuntu 20.04 下 MongoDB 安全加固四层实战指南
  • MongoDB 安全加固方案,防止数据泄露被勒索
  • 避免 MongoDB 被勒索详解,腾讯云上更安全 - 腾讯云开发者社区 - 腾讯云
  • MongoDB 数据安全防护指南:六大核心策略保障数据不泄露、不丢失