MS Proxy Server 2.0 + NTLM + httptunnel
私の
大学の建物の一部は学生に公開されている無線LANのAPがあり、誰でもが自由に使える要になっており、頑固にセグメントを分けられている。
学内のネットワーク図を書くとすれば以下のようになる。
学内Network -- WinNT 4.0 Server (172.31.200.2) ---------------| (MS ProxyServer2.0) +- WinNT4.0 (DHCP Server) | (172.31.200.3) | +- WinNT4.0 (FileServer) | (172.31.200.1) | +- Melco AirStation (教室**-401 * 5) +- Melco AirStation (教室**-402 * 5) +- Melco AirStation (教室**-403 * 5) +- Melco AirStation (教室**-404 * 5)
インターネットに接続するには、172.31.200.2 のプロキシサーバを経由しなければならない。 このプロキシサーバは Microsoft Proxy Server 2.0というのを使用しており、MS独自の認証方法になっている。

そのため、IE(IEコンポーネントを利用したブラウザはOK)以外のブラウザではこのプロキシを経由することができないのだ。(実質IEの為だけのProxyServerとなる)
実際にNetscape 6 などで ProxyServer を設定して、接続をしてみると以下のようにエラーが出ます。
HTTP エラー 407 407 プロキシ認証が必要です
Error 407を調べてみると以下のようになる。
Proxy Authentication Required プロクシー認証リクエスト HTTP 1.1
このErrorコードは 401(Unauthorized)と似ているが、クライアントは最初にプロキシに対する認証を行なわなければならないことを示している。しかし、Netscape6.2ではHTTP 1.1に対応しているので、これの可能性は否定出来る。
そこで、色々と調べていると、IRCNetの #うにっくす にて uno さんが、 NTLM Authorization Proxy Serverというのを見つけていただき、早々見てみることにする。
ダウンロード解凍すると、server.cfg があるので、デフォルトのサンプルを次のように参考に書き換えた。これは、編集する項目は少ないため、すぐに作業は終わるはずである。
[GENERAL] LISTEN_PORT:8080 PARENT_PROXY:172.31.200.2 PARENT_PROXY_PORT:80 ALLOW_EXTERNAL_CLIENTS:0 FRIENDLY_IPS: [NTLM_AUTH] NT_HOSTNAME: NT_DOMAIN:***** USER:**** PASSWORD:*******
しかし、これだけでは、起動出来ないのである。 NTLM Authorization Proxy Server は Pythonで記述された NTLM 認証の出来るProxyサーバである。そのため,python をインストールしないと起動することが出来ない。
インストールが終わると, NTLM Authorization Proxy Server に添付されている起動用のバッチファイルを起動するだけである。NTLM Authorization Proxy Server を使用すると以下のようなネットワーク構成になる
>-- 学内LAN -- MS ProxyServer2.0 -- NTLM -- ブラウザ等 (代理認証を行うためのローカルProxy)
ブラウザ等の設定は 127.0.0.1:port や localhost:port などで良い。
予め NTLM Authorization Proxy Server が認証を行っているため、ブラウザ等のクライアント側は認証不要のただのプレーンなProxyとして動作する。これによってProxyを経由するソフトウェアは殆ど使用可能となった。
また、それを利用することで,tunnel を掘れるのではないかと考えた。で、次のような実験を試みた。
NTLM Authorization Proxy Server で MS ProxyServer2.0 の認証部分をパスさせ、 httptunnelで自鯖とssh通信を行おうと試みたのだ。しかし、httptunnel のサイトを見ていると squidを前提としているようで、今回の NTLM Authorization Proxy Server を使用したケースは想定されていないようだ。
2003.12.12 追記、編集:
httptunnel では トンネルを掘ることが出来なかったが、stoneを利用することにより、トンネルを掘ることが可能です。 ただし、SSL(443)を利用する必要が有ります。特別な設定をしなくても、proxyサーバに NTLM Authorization Proxy Server のproxyサーバを指定してあげると簡単にトンネルを掘ることが出来るでしょう。 ただし、すっごく不安定で、SSH で接続した場合でも、 PuTTy の KeepAlive を短く設定した場合もよく切れますので、使い物になるtunnelを掘ることが出来るかと言う意味では分かりません。 ただ、私の大学では、Proxyが何段も噛まされているため、そのような現象が起こったのか、それとも、もともと、そういう物なのかが判断するすべは持ち合わせていません。 あくまでも出来ると言うことであり、何ら保証する物ではありません。
2003.12.12 追記、編集:
私は、Mozilla Firebird 0.7 (win32版) がリリースされてからInternet Explorer と 両方使用しているが、 Mozilla Firebird 0.7 では NTLM 認証が可能になっているようだ。 すなわち、NTLM Authorization Proxy Server を利用しなくても、直接 NTLM認証の必要なプロキシサーバを指定しても認証が可能になっている。ただし注意が必要なのは、ドメイン情報を送信出来ないため、厳しい認証を必要とするところでは利用が出来ないかもしれない。 後日、認証部分をスクリーンショットを取り、掲載する。