Припущення:
Сервер:
- У мене є сервер Debian Squeeze, маршрутизований у загальнодоступному Інтернеті, зі статичною IPv4 адресою.
- У мене є необмежений доступ для зміни програмного забезпечення на сервері.
- Сервер може слухати на довільних портах, перенастроювати правила брандмауера, в основному немає обмежень щодо того, що сервер може зробити.
Клієнт:
- Я можу запускати Firefox, Java програми, .NET програми та деякі вбудовані файли, які не потребують доступу адміністратора в моїй локальній системі (заблокований робочий стіл Windows без прав адміністратора).
- Я можу встановити Addons у Firefox.
- Я можу слухати будь-який порт
localhost
інтерфейсу loopback ( ). Отже, вищезгадані програми можуть прив'язуватися до локального порту та виконувати довільну мережу вводу-виводу, не проходячи через проксі. - Весь відкритий доступ до Інтернету здійснюється за допомогою обмежувального HTTP-проксі, який блокує багато сайтів, і ретельно перевіряє статтю. На порту 80 він дозволяє виключно HTTP (без TLS / SSL). На порту 443 він дозволяє
CONNECT
базувати SSL / TLS на віддалених хостах, не заблокованих іменем домену / IP-адресою. - Обмежуючий HTTP-проксі не здійснює глибокої перевірки пакетів TLS-з'єднань, дозволених через проксі, і він не здійснює атаки Людини в Середньому на ці з'єднання.
- Згаданий вище сервер, до якого я маю доступ, не блокується проксі.
Мета:
Я хочу маршрутизувати всі HTTP та HTTPS запити, що випромінюються Firefox, через вищевказаний сервер, через SSL / TLS.
Інші примітки про "Мета":
- Навіть якщо сайт кінцевої точки (наприклад,
http://superuser.com
) не використовує SSL / TLS для мого сервера, я все одно хочу використовувати SSL / TLS від свого клієнта до мого сервера , і змусити мій сервер виконувати запит HTTP - зашифрований чи ні - - до мого бажаного пункту призначення. - Мені байдуже, чи мій сервер дивиться на SSL-трафік "в чистоті". Іншими словами, я не вимагаю повного шифрування SSL від мого локального клієнта, аж до віддаленого сервера, якщо доступ до віддаленого сервера здійснюється, наприклад
https://google.com
. Іншими словами, я довіряю серверу, щоб зберегти мої дані конфіденційними. - Я готовий встановити будь-яке програмне забезпечення або додатки Firefox, які не потребують прав адміністратора і можуть працювати в 32-розрядної Windows 7.
- Програмне забезпечення з відкритим кодом надається перевагу над власним, а безкоштовне програмне забезпечення - переважним, ніж програмне забезпечення, яке вимагає ліцензійну плату.
- Існуюче програмне забезпечення надає перевагу кодуванню нового програмного забезпечення, хоча я готовий написати код, якщо це єдиний спосіб.
Я шукаю "описуваного рішення", що описує:
- Яке програмне забезпечення буде потрібно клієнту? Якщо є певний програмний пакет, про який ви знаєте, назвіть його; в іншому випадку опишіть, що потрібно робити клієнтському програмному забезпеченню .
- Яке програмне забезпечення буде потрібно на сервері? Якщо є певний програмний пакет, про який ви знаєте, назвіть його; в іншому випадку опишіть, що має робити серверне програмне забезпечення .
- Якщо ви назвали конкретні програмні пакети вище, опишіть, які параметри конфігурації знадобляться для встановлення моєї мети.
- Якщо ви чомусь вважаєте, що це неможливо , опишіть чому .
Те, що я намагався, не працює
- Встановлюючи
squid
на своєму сервері, я спробував встановити на своєму сервері стандартний власний проксі HTTP. Це не вийшло, тому що коли я запитую веб-сайти в Firefox через звичайний HTTP, Firefox намагається отримати доступ до мого сервера і через звичайний HTTP! Це не прийнятно, оскільки проксі в моїй локальній мережі, звичайно, може спостерігати та / або блокувати регулярний трафік HTTP між моїм клієнтом та сервером. - VPN не працюють , навіть не OpenVPN через прослуховування TLS на порту 443, тому що у мене немає дозволів на локальному комп’ютері встановити
tun
мережевий адаптер, який може виконувати маршрутизацію 3-го рівня, і я не можу робити будь-яку маршрутизацію рівня 2 (наприкладtap
). Коротше кажучи: мені потрібні права адміністратора для встановлення OpenVPN, і навіть якби у мене були ці права адміністратора тимчасово, компанія була б не надто задоволена, якби вони виявили, що вона встановлена. Програма Java або .NET набагато менш помітна, особливо якщо вона не встановлена в програмах Додати / Видалити і не має компонента драйвера ядра, як це робить OpenVPN.
socat
або адміністративних привілеїв у вікні клієнта Windows.