Premissas:
Servidor:
- Eu tenho um servidor Debian Squeeze, roteável na Internet pública, com um endereço IPv4 estático.
- Eu tenho acesso irrestrito para modificar o software no servidor.
- O servidor pode escutar em portas arbitrárias, reconfigurar regras de firewall, basicamente não há restrições sobre o que o servidor pode fazer.
Cliente:
- Posso executar o Firefox, programas Java, programas .NET e alguns executáveis nativos que não exigem acesso de administrador no meu sistema local (uma área de trabalho bloqueada do Windows sem direitos de administrador).
- Eu posso instalar Addons no Firefox.
- Eu posso ouvir em qualquer porta na interface loopback (
localhost
). Portanto, os programas mencionados acima podem se conectar a uma porta local e executar E / S de rede arbitrária, sem passar por um proxy. - Todo o acesso público à Internet é roteado através de um proxy HTTP restritivo que bloqueia muitos sites e faz uma inspeção cuidadosa e estável. Na porta 80, permite exclusivamente HTTP (sem TLS / SSL). Na porta 443, permite
CONNECT
SSL / TLS baseado em hosts remotos que não são bloqueados pelo nome de domínio / endereço IP. - O proxy HTTP restritivo não executa inspeção profunda de pacotes das conexões TLS permitidas através do proxy e não executa ataques do tipo Man in the Middle nessas conexões.
- O servidor acima mencionado ao qual tenho acesso não é bloqueado pelo proxy.
Objetivo:
Desejo rotear todas as solicitações HTTP e HTTPS emitidas pelo Firefox, através do servidor acima, por SSL / TLS.
Outras notas sobre o "objetivo":
- Mesmo que o site do terminal (por exemplo
http://superuser.com
) não esteja usando SSL / TLS no meu servidor, ainda quero usar o SSL / TLS do meu cliente para o meu servidor e fazer com que meu servidor execute a solicitação HTTP - criptografada ou não - - para o meu destino desejado. - Não me importo se meu servidor estiver olhando para o tráfego SSL "de forma clara". Em outras palavras, eu não exijo criptografia SSL completa de ponta a ponta do meu cliente local, até o servidor remoto, se o servidor remoto estiver sendo acessado, por exemplo
https://google.com
. Em outras palavras, confio no servidor para manter meus dados confidenciais. - Estou disposto a instalar qualquer software ou complemento do Firefox que não exija direitos de administrador e possa ser executado no Windows 7 de 32 bits.
- O software de código aberto é preferido sobre o proprietário, e o freeware é preferido sobre o software que exige uma taxa de licença.
- O software existente é preferível a ter que codificar um novo software, embora eu esteja disposto a escrever código, se esse for o único caminho.
Estou procurando uma "solução" pouco descrita que descreva:
- Qual software seria necessário no cliente? Se você conhece um pacote de software específico, nomeie-o; caso contrário, descreva o que o software cliente teria que fazer .
- Qual software seria necessário no servidor? Se você conhece um pacote de software específico, nomeie-o; caso contrário, descreva o que o software do servidor teria que fazer .
- Se você citou pacotes de software específicos acima, descreva quais parâmetros de configuração seriam necessários para configurá-lo para atingir meu objetivo.
- Se, por algum motivo, você acredita que isso não é possível , descreva o motivo .
Coisas que eu tentei que não funcionam
- Instalando
squid
no meu servidor, tentei configurar um proxy HTTP padrão próprio no meu servidor. Isso não deu certo, porque quando solicito sites no Firefox através de HTTP normal, o Firefox tenta acessar meu servidor também através de HTTP normal! Isso não é aceitável, porque o proxy na minha rede local pode, é claro, observar e / ou bloquear o tráfego HTTP regular entre meu cliente e o servidor. - As VPNs não funcionam , nem mesmo o OpenVPN sobre TLS escutando na porta 443, porque não tenho permissões no computador local para instalar um
tun
adaptador de rede que pode executar o roteamento da camada 3, nem qualquer tipo de roteamento da camada 2 (por exemplotap
). Em resumo: eu precisaria de direitos de administrador para instalar o OpenVPN e, mesmo que eu tivesse esses direitos temporariamente, a empresa não ficaria muito satisfeita se descobrisse que ele estava instalado. Um programa Java ou .NET é muito menos perceptível, especialmente quando não está instalado em Adicionar / Remover Programas e não possui nenhum componente de driver de kernel como o OpenVPN.
socat
privilégios administrativos na caixa do cliente Windows.