You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django出现Invalid HTTP_HOST header告警,如何通过Nginx防范此类攻击?

Host头攻击的识别与防范

攻击名称

这是典型的Host头攻击(HTTP Host Header Attack),攻击者通过伪造HTTP请求中的Host头,尝试绕过服务器主机验证机制,可能用于钓鱼、缓存投毒、绕过CSRF防护,或是触发后端应用泄露错误信息(比如你收到的Sentry告警,就是后端框架因不识别伪造Host头抛出的提示)。

现有配置的补充优化

你已完成Nginx层面的两项配置,针对这类请求还需补充以下处理:

1. 严格校验转发头字段

攻击者伪造了Forwarded、X-Forwarded-For、X-Forwarded-Host等转发头,若后端应用信任这些字段,会导致源地址判断错误。需在Nginx中仅保留可信代理的转发头,或直接清理伪造字段:

# 仅保留真实客户端IP作为X-Forwarded-For,覆盖伪造值
proxy_set_header X-Forwarded-For $remote_addr;
# 用Nginx识别的合法Host覆盖伪造的X-Forwarded-Host
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
# 清空Forwarded头,避免后端解析伪造内容
proxy_set_header Forwarded "";

2. 拦截空值请求头

攻击者发送了Content-Length、Content-Type、X-Real-Ip等空值头,这类畸形请求多来自扫描工具,可在Nginx中直接拦截:

if ($http_content_length = "") {
    return 444;
}
if ($http_content_type = "") {
    return 444;
}
if ($http_x_real_ip = "") {
    return 444;
}

3. 后端应用层面加固

不要仅依赖Nginx防护:

  • 严格配置后端框架的ALLOWED_HOSTS(如Django、Flask),绝对不能将未知Host加入列表;
  • 关闭应用调试模式,防止错误信息泄露敏感配置。

4. 拦截异常User-Agent

攻击者使用的User-Agent: Report Runner属于非常见客户端标识,可在Nginx中拦截这类异常UA:

if ($http_user_agent ~* "Report Runner") {
    return 444;
}

额外建议

  • 配置SSL证书时仅绑定自有域名,避免泛域名证书被滥用;
  • 开启Nginx完整访问日志,记录所有请求头信息,便于攻击溯源;
  • 定期更新Nginx和后端应用版本,修复已知的头解析漏洞。

内容的提问来源于stack exchange,提问作者mirana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 03:20:52