Założenia:
Serwer:
- Mam serwer Debian Squeeze, który można routować w publicznym Internecie, ze statycznym adresem IPv4.
- Mam nieograniczony dostęp do modyfikowania oprogramowania na serwerze.
- Serwer może nasłuchiwać na dowolnych portach, rekonfigurować reguły zapory, w zasadzie nie ma ograniczeń co do tego, co serwer może zrobić.
Klient:
- Mogę uruchamiać Firefox, programy Java, programy .NET i niektóre natywne pliki wykonywalne, które nie wymagają dostępu administratora w moim systemie lokalnym (zablokowany pulpit systemu Windows bez uprawnień administratora).
- Mogę zainstalować dodatki w przeglądarce Firefox.
- Mogę nasłuchiwać na dowolnym porcie
localhost
interfejsu loopback ( ). Tak więc wspomniane programy mogą łączyć się z portem lokalnym i wykonywać dowolne sieciowe operacje we / wy, bez przechodzenia przez serwer proxy. - Cały publiczny dostęp do Internetu jest kierowany przez restrykcyjny serwer proxy HTTP, który blokuje wiele witryn i dokładnie kontroluje stan. Na porcie 80 pozwala wyłącznie na HTTP (bez TLS / SSL). Na porcie 443 umożliwia
CONNECT
oparte na SSL / TLS zdalne hosty, które nie są blokowane przez nazwę domeny / adres IP. - Ograniczający serwer proxy HTTP nie przeprowadza głębokiej kontroli pakietów połączeń TLS, które są dozwolone przez serwer proxy, i nie wykonuje ataków typu Man in the Middle na te połączenia.
- Wyżej wymieniony serwer, do którego mam dostęp, nie jest blokowany przez proxy.
Cel:
Chcę kierować wszystkie żądania HTTP i HTTPS wysyłane przez Firefox przez powyższy serwer przez SSL / TLS.
Inne uwagi na temat „celu”:
- Nawet jeśli witryna punktu końcowego (na przykład
http://superuser.com
) nie korzysta z SSL / TLS na moim serwerze, nadal chcę używać SSL / TLS od mojego klienta do mojego serwera i zlecić serwerowi wykonanie żądania HTTP - zaszyfrowanego lub nie - - do mojego pożądanego celu. - Nie dbam o to, czy mój serwer patrzy na ruch SSL „w sposób oczywisty”. Innymi słowy, nie wymagam pełnego szyfrowania SSL od mojego lokalnego klienta, aż do zdalnego serwera, jeśli dostęp do zdalnego serwera uzyskuje się np
https://google.com
. Innymi słowy, ufam serwerowi, że zachowa poufność moich danych. - Jestem skłonny zainstalować dowolne oprogramowanie lub dodatki do Firefoksa, które nie wymagają uprawnień administratora i mogą działać w 32-bitowym systemie Windows 7.
- Oprogramowanie typu open source jest lepsze od praw własności, a freeware jest lepsze od oprogramowania wymagającego opłaty licencyjnej.
- Istniejące oprogramowanie jest lepsze niż konieczność kodowania nowego oprogramowania, chociaż jestem gotów napisać kod, jeśli jest to jedyny sposób.
Szukam luźno opisanego „rozwiązania”, które opisuje:
- Jakie oprogramowanie będzie wymagane na kliencie? Jeśli znasz konkretny pakiet oprogramowania, nazwij go; w przeciwnym razie opisz, co musiałoby zrobić oprogramowanie klienckie .
- Jakie oprogramowanie będzie wymagane na serwerze? Jeśli znasz konkretny pakiet oprogramowania, nazwij go; w przeciwnym razie opisz, co musiałoby zrobić oprogramowanie serwera .
- Jeśli wyżej wymieniono konkretne pakiety oprogramowania, opisz, jakie parametry konfiguracji byłyby konieczne, aby skonfigurować je, aby osiągnąć mój cel.
- Jeśli z jakiegoś powodu uważasz, że nie jest to możliwe , opisz dlaczego .
Rzeczy, które próbowałem, które nie działają
- Instalując
squid
na moim serwerze, próbowałem skonfigurować własne własne proxy HTTP na moim serwerze. To nie zadziałało, ponieważ kiedy żądam stron internetowych w Firefoksie przez zwykły HTTP, Firefox próbuje również uzyskać dostęp do mojego serwera przez zwykły HTTP! Jest to niedopuszczalne, ponieważ serwer proxy w mojej sieci lokalnej może oczywiście obserwować i / lub blokować regularny ruch HTTP między moim klientem a serwerem. - Sieci VPN nie działają , nawet OpenVPN przez nasłuchiwanie TLS na porcie 443, ponieważ nie mam uprawnień na komputerze lokalnym do zainstalowania
tun
karty sieciowej, która może wykonywać routing w warstwie 3, ani nie mogę wykonywać żadnego rodzaju routingu w warstwie 2 (nptap
.). Krótko mówiąc: potrzebuję uprawnień administratora, aby zainstalować OpenVPN, a nawet gdybym miał te uprawnienia tymczasowo, firma nie byłaby zbyt zadowolona, gdyby dowiedziała się, że został zainstalowany. Program Java lub .NET jest znacznie mniej zauważalny, szczególnie gdy nie jest zainstalowany w Dodaj / Usuń programy i nie ma komponentu sterownika jądra, jak robi to OpenVPN.
socat
uprawnień ani uprawnień administracyjnych do skrzynki klienta Windows.