Como criar um proxy https transparente com firehol e tinyproxy?

8

Eu tenho uma configuração de proxy transparente no Ubuntu 10.04.4 com firefox e tinyproxy que funciona bem para http, mas não consigo fazê-lo funcionar para https.

A conexão direta com tinyproxy funciona bem, pois os seguintes comandos são concluídos ok:

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

O proxy transparente HTTP também funciona bem:

curl  http://www.google.com

mas ao acessar o google diretamente usando https, o comando simplesmente trava:

curl  https://www.google.com

Aqui estão os arquivos de configuração completos para firehol e tinyproxy. Observe que não tenho interesse em usar o firehol para nada além de proxy transparente.

firehol.conf:

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

tinyproxy.conf (todos os padrões, exceto proxy upstream):

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
fonte

Respostas:

11

Tanto quanto posso dizer, tinyproxy simplesmente não suporta conexões HTTPS de entrada. Ele permitirá que você acesse sites HTTPS usando o método CONNECT , mas, para que isso seja usado, o navegador / cliente deve saber que está falando com um servidor proxy e usar os métodos de conexão corretos.

As ConnectPortdiretivas simplesmente definem em quais portas é permitido fazer conexões.

O único produto FOSS que suporta a conexão HTTPS com proxy de forma transparente é o Squid , e o suporte para isso é relativamente recente. Também apresenta algumas preocupações importantes de segurança, uma vez que um proxy HTTPS transparente precisa executar um ataque intermediário e descriptografar a conexão para que ele saiba com o que se conectar.

Zoredache
fonte
Isso faz sentido. Depois de investigar, parece que você está correto e a lula é o caminho a percorrer. Não há um backport 3.1 com suporte a ssl / https disponível para o Ubuntu 10.04 (lucid), portanto, a compilação personalizada é necessária. Eu vou tentar isso. Obrigado!
11133 Stefan Farestam
Com o Squid versão 3.5, agora é possível usar o recurso "peek and splice" para implementar o proxy HTTPS sem fazer man-in-the-middle ( wiki.squid-cache.org/Features/SslPeekAndSplice ).
Rafał Krypa 14/02