ipotesi:
Server:
- Ho un server Debian Squeeze, instradabile su Internet pubblico, con un indirizzo IPv4 statico.
- Ho accesso illimitato per modificare il software sul server.
- Il server può ascoltare su porte arbitrarie, riconfigurare le regole del firewall, in pratica non ci sono restrizioni su ciò che il server può essere fatto per fare.
Cliente:
- Posso eseguire Firefox, programmi Java, programmi .NET e alcuni eseguibili nativi che non richiedono l'accesso dell'amministratore sul mio sistema locale (un desktop Windows bloccato senza diritti di amministratore).
- Posso installare componenti aggiuntivi in Firefox.
- Posso ascoltare su qualsiasi porta dell'interfaccia loopback (
localhost
). Pertanto, i suddetti programmi possono collegarsi a una porta locale ed eseguire I / O di rete arbitrari, senza passare attraverso un proxy. - Tutto l' accesso a Internet pubblico viene instradato attraverso un proxy HTTP restrittivo che blocca molti siti e esegue un'attenta ispezione con stato. Sulla porta 80, consente esclusivamente HTTP (no TLS / SSL). Sulla porta 443, consente
CONNECT
SSL / TLS basato su host remoti che non sono bloccati dal nome dominio / indirizzo IP. - Il proxy HTTP restrittivo non esegue l'ispezione approfondita dei pacchetti delle connessioni TLS consentite tramite il proxy e non esegue attacchi Man in the Middle su tali connessioni.
- Il server sopra menzionato a cui ho accesso non è bloccato dal proxy.
Obbiettivo:
Voglio indirizzare tutte le richieste HTTP e HTTPS emesse da Firefox, attraverso il server sopra, su SSL / TLS.
Altre note sull'obiettivo:
- Anche se il sito dell'endpoint (ad esempio
http://superuser.com
) non utilizza SSL / TLS sul mio server, desidero comunque utilizzare SSL / TLS dal mio client al mio server e fare in modo che il mio server esegua la richiesta HTTP, sia crittografata che no, - alla mia destinazione desiderata. - Non mi interessa se il mio server sta esaminando il traffico SSL "in chiaro". In altre parole, non ho bisogno della crittografia SSL end-to-end completa dal mio client locale, fino al server remoto, se si accede al server remoto ad es
https://google.com
. In altre parole, mi fido del server per mantenere riservati i miei dati. - Sono disposto a installare qualsiasi software o componente aggiuntivo di Firefox che non richiede diritti di amministratore e può essere eseguito su Windows 7 a 32 bit.
- Il software open source è preferito rispetto al proprietario e il freeware è preferito rispetto al software che richiede un canone.
- Il software esistente è preferito rispetto alla necessità di codificare un nuovo software, anche se sono disposto a scrivere codice se questo è l'unico modo.
Sto cercando una "soluzione" vagamente descritta che descriva:
- Quale software sarebbe richiesto sul client? Se esiste un pacchetto software specifico di cui sei a conoscenza, chiamalo; in caso contrario, descrivere cosa dovrebbe fare il software client .
- Quale software sarebbe richiesto sul server? Se esiste un pacchetto software specifico di cui sei a conoscenza, chiamalo; in caso contrario, descrivere cosa dovrebbe fare il software server .
- Se hai indicato i pacchetti software specifici sopra, descrivi quali parametri di configurazione sarebbero necessari per impostarlo per raggiungere il mio obiettivo.
- Se per qualche motivo ritieni che ciò non sia possibile , descrivi il perché .
Cose che ho provato che non funzionano
- Installando
squid
sul mio server, ho provato a configurare un mio proxy HTTP standard sul mio server. Questo non ha funzionato, perché quando richiedo siti Web in Firefox tramite HTTP normale, Firefox tenta di accedere anche al mio server tramite HTTP normale! Questo non è accettabile, perché il proxy sulla mia rete locale può ovviamente osservare e / o bloccare il traffico HTTP regolare tra il mio client e il server. - Le VPN non funzionano , nemmeno OpenVPN su TLS in ascolto sulla porta 443, perché non ho i permessi sul computer locale per installare una
tun
scheda di rete in grado di eseguire il routing di livello 3, né posso fare alcun tipo di routing di livello 2 (ad estap
.). In breve: avrei bisogno dei diritti di amministratore per installare OpenVPN, e anche se avessi temporaneamente quei diritti di amministratore, la società non sarebbe affatto contenta se scoprissero che era installato. Un programma Java o .NET è molto meno evidente, soprattutto quando non è installato in Installazione applicazioni e non ha componenti del driver del kernel come OpenVPN.
socat
privilegi di amministratore o sulla casella client di Windows.