Annahmen:
Server:
- Ich habe einen Debian Squeeze-Server, der im öffentlichen Internet routingfähig ist und eine statische IPv4-Adresse hat.
- Ich habe uneingeschränkten Zugriff, um die Software auf dem Server zu ändern.
- Der Server kann beliebige Ports abhören, Firewall-Regeln neu konfigurieren. Grundsätzlich gibt es keine Einschränkungen für die Funktionsweise des Servers.
Klient:
- Ich kann Firefox, Java-Programme, .NET-Programme und einige native ausführbare Dateien ausführen, für die auf meinem lokalen System kein Administratorzugriff erforderlich ist (ein gesperrter Windows-Desktop ohne Administratorrechte).
- Ich kann Addons in Firefox installieren.
- Ich kann jeden Port auf der loopback (
localhost
) - Schnittstelle abhören . Die oben genannten Programme können sich also an einen lokalen Port binden und beliebige Netzwerk-E / A ausführen, ohne einen Proxy zu durchlaufen. - Der gesamte öffentliche Internetzugang wird über einen restriktiven HTTP-Proxy geleitet, der viele Websites blockiert und eine sorgfältige Statusprüfung durchführt. An Port 80 ist ausschließlich HTTP (kein TLS / SSL) zulässig. An Port 443 können
CONNECT
Remote-Hosts, die nicht durch den Domänennamen / die IP-Adresse blockiert sind, SSL / TLS basierend verwenden. - Der restriktive HTTP-Proxy führt keine Deep Packet Inspection von TLS-Verbindungen durch, die über den Proxy zulässig sind, und führt keine Man in the Middle-Angriffe auf diese Verbindungen durch.
- Der oben genannte Server, auf den ich Zugriff habe, wird vom Proxy nicht blockiert.
Tor:
Ich möchte alle von Firefox über den oben genannten Server über SSL / TLS gesendeten HTTP- und HTTPS-Anforderungen weiterleiten.
Weitere Hinweise zum "Ziel":
- Auch wenn die Endpunktsite (zum Beispiel
http://superuser.com
) kein SSL / TLS für meinen Server verwendet, möchte ich dennoch SSL / TLS von meinem Client zu meinem Server verwenden und meinen Server die HTTP-Anforderung ausführen lassen - ob verschlüsselt oder nicht - - zu meinem gewünschten Ziel. - Es ist mir egal, ob mein Server den SSL-Verkehr "im Klartext" betrachtet. Mit anderen Worten, ich benötige keine vollständige End-to-End-SSL-Verschlüsselung von meinem lokalen Client bis zum Remote-Server, wenn auf den Remote-Server z
https://google.com
. Mit anderen Worten, ich vertraue darauf, dass der Server meine Daten vertraulich behandelt. - Ich bin bereit, Software oder Firefox-Addons zu installieren, für die keine Administratorrechte erforderlich sind und die unter 32-Bit-Windows 7 ausgeführt werden können.
- Open-Source-Software wird proprietärer Software vorgezogen, und Freeware wird Software vorgezogen, für die eine Lizenzgebühr erforderlich ist.
- Bestehende Software wird der Codierung neuer Software vorgezogen, obwohl ich bereit bin, Code zu schreiben, wenn dies der einzige Weg ist.
Ich suche eine lose beschriebene "Lösung", die beschreibt:
- Welche Software wäre auf dem Client erforderlich? Wenn Ihnen ein bestimmtes Softwarepaket bekannt ist, benennen Sie es. Andernfalls beschreiben Sie, was die Client-Software tun müsste .
- Welche Software wäre auf dem Server erforderlich? Wenn Ihnen ein bestimmtes Softwarepaket bekannt ist, benennen Sie es. Andernfalls beschreiben Sie, was die Serversoftware tun müsste .
- Wenn Sie oben bestimmte Softwarepakete benannt haben, beschreiben Sie, welche Konfigurationsparameter erforderlich sind, um sie so einzurichten, dass sie mein Ziel erreichen.
- Wenn Sie aus irgendeinem Grund glauben, dass dies nicht möglich ist , beschreiben Sie warum .
Dinge, die ich versucht habe, die nicht funktionieren
- Bei der Installation
squid
auf meinem Server habe ich versucht, einen eigenen Standard-HTTP-Proxy auf meinem Server einzurichten. Dies hat nicht geklappt, denn wenn ich Websites in Firefox über normales HTTP anfordere, versucht Firefox, auch über normales HTTP auf meinen Server zuzugreifen! Dies ist nicht akzeptabel, da der Proxy in meinem lokalen Netzwerk natürlich den regulären HTTP-Verkehr zwischen meinem Client und dem Server beobachten und / oder blockieren kann. - VPNs funktionieren nicht , nicht einmal OpenVPN über TLS, das Port 443 überwacht, da ich auf dem lokalen Computer nicht die Berechtigung habe, einen
tun
Netzwerkadapter zu installieren , der Layer-3-Routing ausführen kann, und auch kein Layer-2-Routing durchführen kann (zBtap
). Kurz gesagt: Ich benötige Administratorrechte, um OpenVPN zu installieren, und selbst wenn ich diese Administratorrechte vorübergehend hätte, wäre das Unternehmen nicht besonders erfreut, wenn es feststellen würde, dass es installiert ist. Ein Java- oder .NET-Programm fällt viel weniger auf, insbesondere wenn es nicht in Add / Remove Programs installiert ist und keine Kerneltreiberkomponente wie OpenVPN enthält.
socat
Administratorrechte für die Windows-Client-Box.