如何通过 squid 透明转发 HTTPS 流量?

如何通过 squid 透明转发 HTTPS 流量?

我想将所有 HTTP 和 HTTPS 流量重定向到squid充当透明代理。然后,这些流量将在特定时段被阻止或授权(批量)。具体来说,我不想解密/重新加密 HTTPS 流量,而是将其按原样推送。

HTTP 部分起作用,REDIRECT规则将shorewall所有发往目标端口的流量传输80到模式下的监听3128squid 端口transparent

对于端口,同样的技巧443不起作用。

教程关于如何为 HTTPS 流量设置透明代理,但我发现的所有方法都描述了创建证书对来解密/重新加密流量——这是我不想做的事情。

鱿鱼 维基提到 CONNECT 是一种传输 HTTPS 流量的方式,但添加http_access allow CONNECT all到配置中(并禁用默认值deny)不会改变任何内容。

然后一些以前的 答案这表明,如果不破坏 TLS 隧道,透明的 HTTPS 流量是不可能的。

因此:有没有办法配置squid,以便通过它重新路由的 HTTPS 流量iptables可以透明地传输,而无需进行任何修改?

(当满足某些时间规则时,我最终会进行阻止(也就是说,阻止不会基于 HTTPS 流本身中的任何内容))

答案1

但我发现所有这些都描述了创建证书对来解密/重新加密流量——这是我不想做的事情。

由于 https 协议的工作方式,您要求的功能根本无法实现。您的选择包括:

  • 允许通过防火墙传出 https,并且不要尝试使用任何代理
  • 配置客户端以使用您的代理/过滤器,它们将使用 HTTP CONNECT 调用代理。
  • 将您的代理设置为中间人,然后执行 sslbump。

当满足某些时间规则时,我最终会阻止

你可以用正确的iptables 模块根据一天中的时间进行过滤。也许你应该只在防火墙中处理一天中的时间过滤?

答案2

二、步骤:

  1. 安装红袜队并进行配置以将任何 TCP 连接(https 连接基于 tcp)从侦听端口重定向到 HTTPS 代理端口(HTTP/CONNECT 例如你的乌贼http代理端口(
  2. 使用 NAT 构建 iptables,并将所有连接重定向到您上面设置的 redsocks 监听端口(您可以在 redsocks 文档中找到示例)

但是对于 udp 连接,redsocks 性能较差,你可以尝试ss-redir作为替代方案(需要TPROXY内核模块)。

相关内容