Squid Web Cache Wiki

Squid Web Cache 文档

🔗 检测到主机头伪造

🔗 症状

SECURITY ALERT: Host header forgery detected on ... (local IP does not match any domain IP)
SECURITY ALERT: By user agent: ...
SECURITY ALERT: on URL: ...

🔗 解释

这是在 Squid-3.2 中添加的一项新安全功能生成的警报,旨在保护网络免受恶意 Web 脚本劫持。

正如咨询 SQUID-2011:1 中所述,这些脚本能够绕过浏览器安全措施,并通过网络传播感染。它们通过伪造经过拦截代理的 HTTP 流量中的Host: 头来实现这一点。

:information_source: 拦截端口 443 时,在生成的 CONNECT 请求中使用的客户端 SNI 值可以执行此检查。如果该 SNI 名称未解析到目标服务器 IP,则会输出此消息并停止 TLS。

为了避免此漏洞,Squid 已解析了客户端假定正在联系的域名,并确定 HTTP 请求的目标 IP 不属于该域名。

三行引用的第一行

  1. local=(数据包目标 IP)客户端正在连接的域的地址,
  2. remote=(数据包源 IP)正在建立连接的客户端的地址,以及警报原因。

在这种情况下,它是“本地 IP 与任何域名 IP 不匹配”

启用 host_verify_strict 后,可以触发其他检查来发出警报。

第二行和第三行不言自明。

🔗 修复

使用 WPAD/PAC 协议自动配置浏览器代理,而不是拦截流量

使用 Active Directory(R) GPO自动配置浏览器代理,而不是拦截流量。

手动配置浏览器

:information_source: 所有这些方法都会使客户端浏览器代理了解代理。这会导致浏览器发送格式不同的 HTTP 请求,从而避免安全漏洞和显示警报的检查。

您还可以根据警报中提到的详细信息确定客户端已被劫持或感染。在这种情况下,正确的修复可能涉及其他操作来清除感染,此处不作介绍。

🔗 规避方法

:information_source: 截至 2012 年 5 月,Squid-3.2.0.18 将会把未能通过这些验证检查的流量传递给客户端预期的同一源。但会禁用缓存、路由错误恢复和对等路由,以确保安全。未来打算安全地支持这些流量的功能。

实际上没有变通方法。只有修复。尽管网络中可能有一些配置会导致警报不应发生而发生。

以下详细信息是 NAT 拦截或 TPROXY 代理的强制性配置。其中一些之前似乎是可选的,因为旧的 Squid 错误现已修复。

这些是可选的,可能无法实现,但工作正常时很有用

🔗 其他原因

通过dnsmasq工具或通过其他 DNS 技巧在 DNS 层执行拦截,从而更改了客户端在域名查找时收到的目标 IP。

在这些情况下,Squid-3.2 的劫持保护将把流量传递给客户端的目标 IP 地址,而重定向到任何特定其他 IP。需要额外的目标 NAT 配置来识别数据包并确保它们被传递到正确的站点,而不管任何其他详细信息。

类别: 知识库

导航: 站点搜索站点页面类别🔼 向上