Asumsi:
Server:
- Saya memiliki server Debian Squeeze, dapat dialihkan di Internet publik, dengan alamat IPv4 statis.
- Saya memiliki akses tidak terbatas untuk memodifikasi perangkat lunak di server.
- Server dapat mendengarkan pada port arbitrer, mengkonfigurasi ulang aturan firewall, pada dasarnya tidak ada batasan pada apa yang dapat dilakukan server.
Klien:
- Saya dapat menjalankan Firefox, program Java, .NET program, dan beberapa executable asli yang tidak memerlukan akses admin pada sistem lokal saya (desktop Windows yang terkunci tanpa hak admin).
- Saya dapat menginstal Addons ke Firefox.
- Saya dapat mendengarkan port apa saja di
localhost
antarmuka loopback ( ). Jadi, program - program tersebut dapat mengikat ke port lokal dan melakukan I / O jaringan sewenang-wenang, tanpa melalui proxy. - Semua akses Internet publik disalurkan melalui proksi HTTP terbatas yang memblokir banyak situs, dan melakukan pemeriksaan stateful yang cermat. Pada port 80, ini memungkinkan HTTP eksklusif (tidak ada TLS / SSL). Pada port 443, ini memungkinkan
CONNECT
SSL / TLS berbasis ke host jarak jauh yang tidak diblokir oleh nama domain / alamat IP. - Proxy HTTP restriktif tidak melakukan pemeriksaan paket mendalam terhadap koneksi TLS yang diizinkan melalui proxy, dan tidak melakukan serangan Man in the Middle pada koneksi tersebut.
- Saya memiliki akses ke server yang disebutkan di atas, tidak diblokir oleh proxy.
Tujuan:
Saya ingin merutekan semua permintaan HTTP dan HTTPS yang dipancarkan oleh Firefox, melalui server di atas, melalui SSL / TLS.
Catatan lain tentang "Sasaran":
- Bahkan jika situs titik akhir (misalnya,
http://superuser.com
) tidak menggunakan SSL / TLS ke server saya, saya masih ingin menggunakan SSL / TLS dari klien saya ke server saya , dan meminta server saya melakukan permintaan HTTP - apakah dienkripsi atau tidak - - ke tujuan yang saya inginkan. - Saya tidak peduli jika server saya melihat lalu lintas SSL "di tempat kosong". Dengan kata lain, saya tidak memerlukan enkripsi SSL end-to-end penuh dari klien lokal saya, sampai ke server jarak jauh, jika server jarak jauh diakses oleh mis
https://google.com
. Dengan kata lain, saya percaya server menjaga kerahasiaan data saya. - Saya bersedia menginstal perangkat lunak apa pun atau add-on Firefox yang tidak memerlukan hak admin dan dapat berjalan di Windows 7 32-bit.
- Perangkat lunak open source lebih disukai daripada hak milik, dan freeware lebih disukai daripada perangkat lunak yang membutuhkan biaya lisensi.
- Perangkat lunak yang ada lebih disukai daripada harus membuat kode perangkat lunak baru, meskipun saya bersedia untuk menulis kode jika itu satu-satunya cara.
Saya mencari "solusi" yang dijelaskan secara longgar yang menjelaskan:
- Perangkat lunak apa yang diperlukan pada klien? Jika ada paket perangkat lunak spesifik yang Anda ketahui, beri nama; jika tidak, jelaskan apa yang harus dilakukan oleh perangkat lunak klien .
- Perangkat lunak apa yang diperlukan di server? Jika ada paket perangkat lunak spesifik yang Anda ketahui, beri nama; jika tidak, jelaskan apa yang harus dilakukan oleh perangkat lunak server .
- Jika Anda memberi nama paket perangkat lunak tertentu di atas, jelaskan parameter konfigurasi apa yang diperlukan untuk mengaturnya agar memenuhi tujuan saya.
- Jika karena alasan tertentu Anda yakin ini tidak mungkin , jelaskan alasannya .
Hal-hal yang Saya Sudah Mencoba Itu Tidak Bekerja
- Menginstal
squid
di server saya, saya mencoba mengatur proxy HTTP standar sendiri di server saya. Ini tidak berhasil, karena ketika saya meminta situs web di Firefox melalui HTTP biasa, Firefox juga mencoba mengakses server saya melalui HTTP biasa! Ini tidak dapat diterima, karena proxy di jaringan lokal saya tentu saja dapat mengamati dan / atau memblokir lalu lintas HTTP reguler antara klien saya dan server. - VPN tidak berfungsi , bahkan OpenVPN over TLS tidak mendengarkan pada port 443, karena saya tidak memiliki izin pada komputer lokal untuk menginstal
tun
adapter jaringan yang dapat melakukan routing layer 3, saya juga tidak bisa melakukan routing layer 2 (misalnyatap
). Singkatnya: Saya memerlukan hak admin untuk menginstal OpenVPN, dan bahkan jika saya memiliki hak admin sementara, perusahaan tidak akan terlalu senang jika mereka menemukan itu diinstal. Program Java atau .NET jauh kurang terlihat, terutama ketika tidak diinstal pada Tambah / Hapus Program dan tidak memiliki komponen driver kernel seperti OpenVPN.
socat
atau hak administratif di kotak klien Windows.