Túnel HTTPS de forma transparente usando squid com filtragem SNI

Túnel HTTPS de forma transparente usando squid com filtragem SNI

Meus requisitos são:

  1. O proxy deve ser transparente.
  2. Devo ser capaz de filtrar sites por nome de domínio.
  3. Eu façonãodeseja descriptografar o tráfego. Estou procurando uma solução baseada em detecção de SNI - sem instalação de certificados em clientes.

Existem muitas respostas por aí, mas elas estão incorretas (alegando que você precisa descriptografar o tráfego para fazer isso) ou incompletas.

Responder1

A maneira de fazer isso é usar o recurso SSL Peek introduzido no Squid 3.5. Veraquipara uma explicação detalhada. Observe que você precisará ter compilado com --with-gnutlsou --with-openssl(verifique squid -v). Algumas distros os deixam de fora.

Resumindo, a configuração relevante do squid é assim.

acl denylist_ssl ssl::server_name google.com # NOT dstdomain
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice !denylist_ssl # allow everything not in the denylist
ssl_bump terminate all # block everything else
https_port 3129 intercept ssl-bump cert=/etc/squid/dummy.pem

(Além disso: não sei por que precisamos apenas dar uma olhada na etapa 1 e não na etapa 2, visto que a etapa 2 envolve apenas o recebimento do certificado do servidor. Os documentos não deixam isso claro. Usar ssl_bump peek allcomo eles recomendam faz com que isso pare de funcionar completamente ).

E então faça o redirecionamento usual da porta 443 para 3129 usando iptables (ou faça o squid ouvir diretamente em 443, se preferir).

-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129

Você pode usar qualquer certificado para o manequim; na verdade, nunca o usamos (porque não estamos descriptografando o tráfego).

Algo assim funciona.

openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout dummy.pem -out dummy.pem

Fontes:

[1]https://unix.stackexchange.com/questions/613359/setting-up-squid-transparent-proxy-with-ssl-bumping-on-debian-10

[2]https://web.archive.org/web/20210128152111/https://www.cammckenzie.com/blog/index.php/2018/07/19/squid-https-interception-and-filtering-without-client- certificados/

[3]https://wiki.squid-cache.org/Features/SslPeekAndSplice

informação relacionada