防御资源消耗类拒绝服务攻击的核心是限制单个请求或客户端对服务器关键资源的无节制占用,需通过收紧超时参数、限制并发与速率、精简处理路径、结合WAF语义防护等多层措施实现。

防御资源消耗类拒绝服务攻击,核心是限制单个请求或客户端对服务器连接、内存、带宽等关键资源的无节制占用。这类攻击不依赖大流量,而是靠“慢”和“小”,比如 Slowloris、Slow POST、CC 类请求,重点在于让服务器长时间维持无效连接或反复执行高开销操作。
收紧连接超时参数(对抗慢速攻击)
攻击者常通过极慢发送头部、请求体或响应读取来拖住连接。Nginx 中需主动缩短等待时间,并及时释放连接:
- client_header_timeout 10s:头部未在 10 秒内收全即断开,防 Slow headers
- client_body_timeout 15s:请求体(如大文件上传)每段间隔超 15 秒即中断,防 Slow body
- send_timeout 10s:向客户端发送响应时,两次写操作间隔超 10 秒即关闭连接,防 Slow read
- keepalive_timeout 20s:长连接空闲保持时间设为 20 秒以内,避免连接池被低活跃度连接占满
- reset_timedout_connection on:超时后直接发送 RST 包重置连接,比 FIN 更快释放内核资源
限制单 IP 并发与速率(压制 CC 和连接耗尽)
即使每个请求合法,高频或高并发也能压垮应用。需在 Nginx 层做基础限流:
- 用 limit_conn_zone $binary_remote_addr zone=addr:10m 定义按 IP 的连接数限制区域
- 在 server 或 location 块中加 limit_conn addr 20,限制单 IP 最多 20 个并发连接
- 用 limit_req_zone $binary_remote_addr zone=req_rate:10m rate=10r/s 控制请求频率
- 配合 limit_req burst=30 nodelay 允许短时突发,但不排队积压,防缓冲区膨胀
精简请求处理路径(减少攻击面)
很多资源消耗源于不必要的解析、转发或执行。应主动裁剪非必需环节:
- 静态资源(JS/CSS/图片)单独配置 location,跳过 PHP/Java 后端,直接由 Nginx 服务
- 禁用危险 HTTP 方法:if ($request_method !~ ^(GET|HEAD|POST|OPTIONS|PUT|DELETE)$) { return 405; }
- 限制请求头大小:client_header_buffer_size 1k、large_client_header_buffers 4 2k,防 Server Limit DOS
- 对上传接口明确设置 client_max_body_size 50m,超出即 413,避免大 Content-Length 消耗内存
结合 WAF 做语义层防护(识别恶意行为模式)
Nginx 限流是基础,WAF 可识别更复杂的资源耗尽意图:
- 开启 Web 基础防护的“中等”等级,默认拦截 SQL 注入、XSS、目录遍历等高开销攻击载荷
- 针对 CC 攻击,启用精准访问防护规则,例如限制 /api/login 路径每分钟最多 5 次请求
- 配置攻击惩罚:单 IP 触发 3 次拦截后自动封禁 30 分钟,降低持续试探成本
- 上传接口启用 Webshell 检测和 header 全检测,防止通过伪装文件触发服务端解析漏洞


















