MongoDB本身不抗DDoS,防护需依赖外围体系:必须内网部署、禁用公网暴露、启用认证与连接限制,并配合云厂商高防IP应对UDP反射攻击。

MongoDB本身不抗DDoS,得靠外围体系挡——它不是Web服务器,没有内置流量清洗、速率限制或IP封禁能力。一旦攻击流量直接打到MongoDB端口(默认27017),只要连接数/带宽/CPU被耗尽,服务就会假死或拒绝响应。防护必须在它前面布防。
把MongoDB彻底藏到内网,只允许可信来源访问
绝大多数MongoDB被攻破,根本原因不是DDoS,而是暴露在公网+未启认证。DDoS只是压垮最后一根稻草。先堵住这个口子,才谈得上防攻击。
- 删掉安全组里对
0.0.0.0/0开放27017的规则,只放行负载均衡器、API网关或跳板机的IP段 - 如果用K8s,确保
Service类型为ClusterIP,绝不用NodePort或LoadBalancer直曝DB - 云厂商如阿里云/腾讯云,可配置VPC内网访问+网络ACL,禁止任何公网ENI绑定到MongoDB所在ECS
用WAF+CDN过滤HTTP层攻击,但别指望它们保护MongoDB原生协议
Cloudflare、腾讯云WAF、阿里云Anti-DDoS这些,只解析和过滤HTTP/HTTPS流量。而MongoDB走的是TCP私有协议(BSON over TCP),WAF完全看不懂,也无法做规则匹配。
- 如果你的应用是通过HTTP API访问MongoDB(比如用Next.js写了个
/api/user接口),那WAF能拦CC类攻击,但得确保这个API本身做了限流(如用express-rate-limit) - 千万别把
mongosh或应用直连地址扔进CDN回源配置——CDN不支持27017端口转发,会直接失败 - 真要代理MongoDB协议,只能用专用四层设备(如F5、华为USG防火墙)做TCP连接限速,或自建
haproxy做源IP连接数控制
启用--auth只是基础,配合mongod.conf连接数与超时控制才有效
开了权限验证≠防DDoS。攻击者仍可建立大量空连接、发起认证爆破或慢速连接耗尽句柄。必须从连接生命周期下手。
- 启动时加
--auth,且在mongod.conf里配:net.maxIncomingConnections: 500(根据内存调,别设太高) - 设
net.transportLayer.ssl.mode: requireSSL并强制TLS 1.2+,增加SYN Flood成本(非银弹,但有门槛) - 在
systemLog.verbosity: 1下观察日志里是否高频出现connection accepted后无认证动作——这是典型扫描或慢连接试探 - Linux系统层同步加固:
sysctl -w net.ipv4.tcp_syncookies=1+net.core.somaxconn=1024
真正难防的是UDP反射型DDoS(比如NTP放大)打到你的ECS公网IP,MongoDB甚至没机会响应就丢包了。这时候靠云厂商的BGP高防IP或本地清洗设备,和数据库配置无关。别在mongod.conf里找“DDoS开关”——它根本没有。











