仮定:
サーバ:
- 私は、静的IPv4アドレスを使用して、公衆インターネット上でルーティング可能なDebian Squeezeサーバーを持っています。
- サーバー上のソフトウェアを変更するための無制限のアクセス権があります。
- サーバーは任意のポートでリッスンし、ファイアウォールルールを再構成できます。基本的に、サーバーに実行できる操作に制限はありません。
クライアント:
- Firefox、Javaプログラム、.NETプログラム、およびローカルシステム(管理者権限のないロックダウンされたWindowsデスクトップ)での管理者アクセスを必要としないいくつかのネイティブ実行可能ファイルを実行できます。
- Firefoxにアドオンをインストールできます。
- ループバック(
localhost
)インターフェイスのどのポートでもリッスンできます。したがって、前述のプログラムは、プロキシを経由せずにローカルポートにバインドして任意のネットワークI / Oを実行できます。 - すべてのパブリックインターネットアクセスは、多くのサイトをブロックする制限付きのHTTPプロキシを介してルーティングされ、慎重にステートフルな検査を行います。ポート80では、HTTPのみを許可します(TLS / SSLは不可)。ポート443では、
CONNECT
ドメイン名/ IPアドレスによってブロックされていないリモートホストへのベースSSL / TLSを許可します。 - 制限付きHTTPプロキシは、プロキシ経由で許可されているTLS接続の詳細なパケット検査を実行せず、それらの接続に対して中間者攻撃を実行しません。
- 私がアクセスできる上記のサーバーは、プロキシによってブロックされていません。
ゴール:
上記のサーバーを介して、Firefoxによって発行されたすべての HTTPおよびHTTPSリクエストをSSL / TLS経由でルーティングしたいと思います。
「目標」に関するその他の注意事項:
- エンドポイントサイト(など
http://superuser.com
)がサーバーにSSL / TLSを使用していない場合でも、クライアントからサーバーにSSL / TLSを使用し、暗号化されているかどうかにかかわらず、サーバーにHTTPリクエストを実行させます- -私の希望の目的地へ。 - 私のサーバーがSSLトラフィックを「平文で」見ているかどうかは気にしません。言い換えると、リモートサーバーにがアクセスしている場合は、ローカルクライアントからリモートサーバーまでの完全なエンドツーエンドSSL暗号化は必要ありません
https://google.com
。つまり、サーバーを信頼してデータの機密を保持します。 - 私は、管理者権限を必要とせず、32ビットWindows 7で実行できるソフトウェアまたはFirefoxアドオンをインストールしてもかまいません。
- オープンソースソフトウェアはプロプライエタリよりも優先され、フリーウェアはライセンス料が必要なソフトウェアよりも優先されます。
- 新しいソフトウェアをコード化する必要があるよりも、既存のソフトウェアを使用することをお勧めしますが、それが唯一の方法である場合は、コードを記述してもかまいません。
私は大まかに説明された「解決策」を探しています:
- クライアントで必要なソフトウェアは何ですか?知っている特定のソフトウェアパッケージがある場合は、それに名前を付けます。それ以外の場合は、クライアントソフトウェアが何をする必要があるかを説明します。
- サーバーにはどのソフトウェアが必要ですか?知っている特定のソフトウェアパッケージがある場合は、それに名前を付けます。それ以外の場合は、サーバーソフトウェアが何をする必要があるかを説明します。
- 上記の特定のソフトウェアパッケージに名前を付けた場合、私の目標を達成するために設定するために必要な構成パラメーターを説明してください。
- 何らかの理由でこれが不可能であると思われる場合は、その理由を説明してください。
試してみたが機能しないもの
squid
サーバーにインストールして、自分のサーバーに標準のHTTPプロキシを設定しようとしました。通常のHTTP経由でFirefoxのWebサイトを要求すると、Firefoxも通常のHTTP 経由でサーバーにアクセスしようとするため、これはうまくいきませんでした。私のローカルネットワーク上のプロキシはもちろん、クライアントとサーバー間の通常のHTTPトラフィックを監視および/またはブロックできるため、これは受け入れられません。- VPNは動作しません、私がインストールするには、ローカルコンピュータ上の権限を持っていないので、ポート443上のTLSリスニングオーバーではなく、さらにOpenVPNのを
tun
レイヤ3ルーティングを実行することができ、ネットワークアダプタを、また私は、レイヤ2ルーティングの任意の並べ替えを行うことができます(例tap
)。つまり、OpenVPNをインストールするには管理者権限が必要です。一時的にそれらの管理者権限を持っていたとしても、会社がインストールされていることに気づいたとしても、会社はあまり喜ばないでしょう。Javaまたは.NETプログラムは、特に[プログラムの追加と削除]にインストールされておらず、OpenVPNのようなカーネルドライバーコンポーネントがない場合は、それほど目立ちません。
socat