Suposiciones
Servidor:
- Tengo un servidor Debian Squeeze, enrutable en Internet público, con una dirección IPv4 estática.
- Tengo acceso sin restricciones para modificar el software en el servidor.
- El servidor puede escuchar en puertos arbitrarios, reconfigurar las reglas del cortafuegos, básicamente no hay restricciones sobre lo que el servidor puede hacer.
Cliente:
- Puedo ejecutar Firefox, programas Java, programas .NET y algunos ejecutables nativos que no requieren acceso de administrador en mi sistema local (un escritorio de Windows bloqueado sin derechos de administrador).
- Puedo instalar complementos en Firefox.
- Puedo escuchar en cualquier puerto de la
localhost
interfaz loopback ( ). Por lo tanto, los programas antes mencionados pueden unirse a un puerto local y realizar E / S de red arbitrarias, sin pasar por un proxy. - Todo el acceso público a Internet se enruta a través de un proxy HTTP restrictivo que bloquea muchos sitios y realiza una cuidadosa inspección de estado. En el puerto 80, permite exclusivamente HTTP (sin TLS / SSL). En el puerto 443, permite
CONNECT
SSL / TLS basado en hosts remotos que no están bloqueados por nombre de dominio / dirección IP. - El proxy HTTP restrictivo no realiza una inspección profunda de paquetes de conexiones TLS que están permitidas a través del proxy, y no realiza ataques Man in the Middle en esas conexiones.
- El servidor al que tengo acceso no está bloqueado por el proxy.
Gol:
Quiero enrutar todas las solicitudes HTTP y HTTPS emitidas por Firefox, a través del servidor anterior, a través de SSL / TLS.
Otras notas sobre el "Objetivo":
- Incluso si el sitio de punto final (por ejemplo
http://superuser.com
) no está usando SSL / TLS en mi servidor, todavía quiero usar SSL / TLS de mi cliente a mi servidor y hacer que mi servidor realice la solicitud HTTP, ya sea encriptada o no, - a mi destino deseado. - No me importa si mi servidor está mirando el tráfico SSL "en claro". En otras palabras, no necesito un cifrado SSL completo de extremo a extremo desde mi cliente local, hasta el servidor remoto, si se accede al servidor remoto, por ejemplo
https://google.com
. En otras palabras, confío en el servidor para mantener mis datos confidenciales. - Estoy dispuesto a instalar cualquier software o complemento de Firefox que no requiera derechos de administrador y pueda ejecutarse en Windows 7 de 32 bits.
- Se prefiere el software de código abierto al propietario, y el software gratuito se prefiere al software que requiere una tarifa de licencia.
- Se prefiere el software existente a tener que codificar un nuevo software, aunque estoy dispuesto a escribir código si esa es la única forma.
Estoy buscando una "solución" descrita libremente que describe:
- ¿Qué software se requeriría en el cliente? Si conoce un paquete de software específico, asígnele un nombre; de lo contrario, describa lo que el software del cliente tendría que hacer .
- ¿Qué software se requeriría en el servidor? Si conoce un paquete de software específico, asígnele un nombre; de lo contrario, describa lo que el software del servidor tendría que hacer .
- Si mencionó paquetes de software específicos arriba, describa qué parámetros de configuración serían necesarios para configurarlo para cumplir mi objetivo.
- Si por alguna razón cree que esto no es posible , describa por qué .
Cosas que he probado que no funcionan
- Instalando
squid
en mi servidor, intenté configurar un proxy HTTP estándar propio en mi servidor. Esto no funcionó, porque cuando solicito sitios web en Firefox a través de HTTP normal, ¡ Firefox también intenta acceder a mi servidor a través de HTTP normal! Esto no es aceptable, porque el proxy en mi red local puede, por supuesto, observar y / o bloquear el tráfico HTTP normal entre mi cliente y el servidor. - Las VPN no funcionan , ni siquiera OpenVPN sobre TLS escucha en el puerto 443, porque no tengo los permisos en la computadora local para instalar un
tun
adaptador de red que pueda realizar el enrutamiento de capa 3, ni puedo hacer ningún tipo de enrutamiento de capa 2 (por ejemplotap
) En resumen: necesitaría derechos de administrador para instalar OpenVPN, e incluso si tuviera esos derechos de administrador temporalmente, la compañía no estaría muy contenta si descubrieran que está instalada. Un programa Java o .NET es mucho menos notable, especialmente cuando no está instalado en Agregar o quitar programas y no tiene un componente de controlador de kernel como OpenVPN.
socat
ni privilegios administrativos en el cuadro de cliente de Windows.