Wie erstelle ich einen transparenten https-Proxy mit firehol und tinyproxy?

8

Ich habe ein transparentes Proxy-Setup in Ubuntu 10.04.4 mit Firehol und Tinyproxy, das für http gut funktioniert, aber ich kann es nicht für https zum Laufen bringen.

Die direkte Verbindung mit tinyproxy funktioniert einwandfrei, da die folgenden Befehle in Ordnung sind:

env  http_proxy=localhost:8888 curl  http://www.google.com
env https_proxy=localhost:8888 curl https://www.google.com

HTTP transparent Proxy funktioniert auch gut:

curl  http://www.google.com

Beim direkten Zugriff auf Google über https bleibt der Befehl jedoch hängen:

curl  https://www.google.com

Hier sind die vollständigen Konfigurationsdateien für firehol und tinyproxy. Beachten Sie, dass ich kein Interesse daran habe, firehol für etwas anderes als transparentes Proxy zu verwenden.

firehol.conf:

transparent_proxy "80 443" 8888 proxy
interface any world
   client all accept
   server all accept

tinyproxy.conf (alle Standardeinstellungen außer Upstream-Proxy):

User    nobody
Group   nogroup
Port    8888
Timeout 600
DefaultErrorFile  "/usr/share/tinyproxy/default.html"
StatFile          "/usr/share/tinyproxy/stats.html"
Logfile           "/var/log/tinyproxy/tinyproxy.log"
LogLevel Info
PidFile           "/var/run/tinyproxy/tinyproxy.pid"
MaxClients     100
MinSpareServers  5
MaxSpareServers 20
StartServers    10
MaxRequestsPerChild 0
ViaProxyName "tinyproxy"
ConnectPort 443
ConnectPort 563
upstream corporate.fire.wall:8080
Stefan Farestam
quelle

Antworten:

11

Soweit ich das beurteilen kann, unterstützt tinyproxy eingehende HTTPS-Verbindungen einfach nicht. Sie können mit der CONNECT- Methode auf HTTPS-Sites zugreifen. Damit dies jedoch verwendet werden kann, muss der Browser / Client wissen, dass er mit einem Proxyserver kommuniziert, und die richtigen Verbindungsmethoden verwenden.

Die ConnectPortDirektiven definieren einfach, zu welchen Ports Verbindungen hergestellt werden dürfen.

Das einzige FOSS-Produkt, das die transparente Proxy-HTTPS-Verbindung unterstützt, ist Squid , und die Unterstützung dafür ist relativ neu. In werden auch einige ziemlich wichtige Sicherheitsbedenken eingeführt, da ein transparenter HTTPS-Proxy einen Man-in-the-Middle-Angriff ausführen und die Verbindung entschlüsseln muss, damit er weiß, mit was er sich verbinden soll.

Zoredache
quelle
Das macht Sinn. Nach der Untersuchung scheint es, dass Sie richtig sind und Tintenfisch der richtige Weg ist. Für Ubuntu 10.04 (lucid) ist kein Backport von 3.1 mit SSL / https-Unterstützung verfügbar, daher ist eine benutzerdefinierte Kompilierung erforderlich. Ich werde das ausprobieren. Vielen Dank!
Stefan Farestam
Mit Squid Version 3.5 ist es jetzt möglich, die Funktion "Peek and Splice" zu verwenden, um den HTTPS-Proxy zu implementieren, ohne Man-in-the-Middle auszuführen ( wiki.squid-cache.org/Features/SslPeekAndSplice ).
Rafał Krypa