Haz un túnel HTTPS de forma transparente usando squid con filtrado SNI

Haz un túnel HTTPS de forma transparente usando squid con filtrado SNI

Mis requisitos son:

  1. El proxy debe ser transparente.
  2. Debería poder filtrar sitios web por nombre de dominio.
  3. noQuiero descifrar el tráfico. Estoy buscando una solución basada en rastreo SNI, sin instalar certificados en los clientes.

Hay muchas respuestas flotando, pero son incorrectas (afirman que es necesario descifrar el tráfico para poder hacer esto) o están incompletas.

Respuesta1

La forma de hacerlo es utilizar la función SSL Peek introducida en Squid 3.5. Veraquípara una explicación detallada. Tenga en cuenta que deberá haber compilado con o --with-gnutls( --with-opensslmarque squid -v). Algunas distribuciones los omiten.

En resumen, la configuración de Squid relevante se ve así.

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

(Aparte: no estoy seguro de por qué solo necesitamos echar un vistazo al paso 1 y no al paso 2, dado que el paso 2 implica solo recibir el certificado del servidor. Los documentos no dejan esto claro en absoluto. Usarlo ssl_bump peek allcomo recomiendan hace que esto deje de funcionar por completo. ).

Y luego haga el baile habitual de redireccionamiento del puerto 443 al 3129 usando iptables (o haga que squid escuche en 443 directamente si lo prefiere).

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

Puede usar cualquier certificado para el modelo ficticio; en realidad, nunca lo usamos (porque no estamos descifrando el tráfico).

Algo como esto funciona.

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

Fuentes:

[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

información relacionada