Transparentes Tunneln von HTTPS mithilfe von Squid mit SNI-Filterung

Transparentes Tunneln von HTTPS mithilfe von Squid mit SNI-Filterung

Meine Anforderungen sind:

  1. Der Proxy sollte transparent sein.
  2. Ich sollte Websites nach Domänennamen filtern können.
  3. Ich tuenichtmöchte den Datenverkehr entschlüsseln. Ich suche nach einer auf SNI-Sniffing basierenden Lösung – ohne Installation von Zertifikaten auf Clients.

Es sind zahlreiche Antworten im Umlauf, doch sie sind entweder falsch (behaupten, Sie müssten hierzu den Datenverkehr entschlüsseln) oder unvollständig.

Antwort1

Dies erreichen Sie mit der SSL-Peek-Funktion, die in Squid 3.5 eingeführt wurde. SieheHier--with-gnutlsfür eine ausführliche Erklärung. Beachten Sie, dass Sie entweder mit oder kompiliert haben müssen --with-openssl(aktivieren Sie squid -v). Einige Distributionen lassen sie weg.

Kurz gesagt sieht die relevante Squid-Konfiguration folgendermaßen aus.

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

(Abgesehen davon: Ich bin nicht sicher, warum wir nur einen Blick auf Schritt 1 werfen müssen und nicht auf Schritt 2, da es bei Schritt 2 nur darum geht, das Serverzertifikat zu erhalten. In den Dokumenten wird dies überhaupt nicht deutlich. Wenn ssl_bump peek allSie es wie empfohlen verwenden, funktioniert es überhaupt nicht mehr.)

Führen Sie anschließend mit iptables die übliche Umleitung von Port 443 auf Port 3129 durch (oder lassen Sie Squid direkt auf Port 443 lauschen, wenn Sie das bevorzugen).

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

Sie können für das Dummy-Zertifikat jedes beliebige Zertifikat verwenden. Wir verwenden es eigentlich nie (weil wir den Datenverkehr nicht entschlüsseln).

So etwas funktioniert.

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

Quellen:

[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-certificates/

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

verwandte Informationen