(1/2)IEの自動構成ファイル中でDIRECTを使うと、外部のインターネット・サイトまでもが、デフォルトでは「イントラネット・ゾーン」になってしまう危険性がある。これを防ぐ方法を解説する。■SummaryIEには、JavaScriptを使ってProxyサーバの構成を自動的に行うという自動構成ファイル機能がある。"DIRECT"を使うと、インターネットをアクセスしているにもかかわらず、IEのセキュリティ・ゾーンがイントラネット・ゾーンになってしまう可能性がある。これはIE4以降のすべてで起こる。サーバーを使用しないサイトをすべて含める]のチェック・ボックスをオフにする。ゾーン」と呼ばれる機能がある。ゾーンごとに、Cookieの扱いやJavaScript、ActiveXコントロールなどを許可するかどうかを決めることにより、例えばインターネットへアクセスする場合はセキュリティを強固にしておき、イントラネットのサーバへアクセスする場合はActiveXなどの実行を許可して、社内アプリケーションを実行できるようにする、というふうに使い分ける。ゾーン」「信頼済みサイト」「制限付きサイト」の全部で4つがある。6のプライバシ管理機能—7.既存のCookieの削除」や「TIPS—IEのセキュリティ設定を変更してセキュリティ機能を強化する」などが詳しいので参考にしていただきたい。4つのゾーンのうち「信頼済みサイト」と「制限付きサイト」はユーザー自身が自分でサイトを登録するものであり、デフォルトではここに属するサイトはない。残りの2つが実際によく使われるゾーンである。ゾーン」のどちらに属するのかは、IE自身が判断して、自動的に使い分けることになっている。「イントラネット」とはファイアウォールの内側にある社内ネットワークのゾーンであり、具体的にはWindowsネットワークのUNCでアクセス可能な共有フォルダやファイル(例「\\computername\folder」)、インターネットのドメイン名(FQDN名)ではなく、ピリオド(「.」)を含まないURL(例「http://computername/」)で参照可能なホストなどが含まれる。ゾーン」に含まれることになる。ゾーン」に追加することも可能であり、社内に複数のドメインがあるような場合に利用することになる。ユーザーのIEが、現在どのゾーンで動作しているかは、IEのステータス・バーの右端に表示されているので、簡単に確認することができる。インターネット上のサイトを閲覧している場合は、「インターネット」になっていることを確認しておこう。これが「イントラネット」になっていたりすると、(デフォルトのセキュリティ設定では)いくらかセキュリティ的に望ましくない状態になっている可能性があるからだ。IEのゾーン情報IEが現在どのゾーンで動作しているかは、ステータス・バーの右端に常に表示されている。(1)ここにゾーン情報が表示される。インターネットをアクセスしている場合はこのように「インターネット」となる(インターネット・ゾーンのサイトであることを意味している)。話は変わるが、筆者の所属する会社ではインターネットにアクセスする場合、通常はWebのProxyサーバを経由するようにしている。そのため各クライアントのIEに対しては、Proxyサーバを使うように設定が行われている。具体的には「TIPS—WebブラウザのProxy設定を行うための4つの方法(WPADのススメ)」で述べた方法のうち、以下のようなJavaScriptファイル(IEでは「自動構成スクリプト」と呼ぶ)を使って、自動的にProxyサーバへ要求を振り向けるように設定している。WPADを使えば、デフォルト状態のIEでもそのまま利用できるので管理の手間がかからなくてよい。DIRECT";}Proxyサーバの自動構成スクリプト・ファイルの例これは、アクセスするホスト名が“.(ピリオド)”を含まない単純な名前の場合や、ローカル・ネットワークの場合には直接アクセスし、そうでないインターネット上のサイトの場合は192.168.0.10のProxyサーバを経由する、という指定である。このようなスクリプトを記述したテキスト・ファイル(ファイル名はproxy.pacなどが一般的)をイントラネットのWebサーバ上に置き、クライアントのProxy設定欄には「http://192.168.0.10/proxy.pac」というふうに記述しておけばよい。Navigatorのために作られたものである。Explorer管理者キット(IEAK)」に付属のドキュメントなどが詳しいので参照していただきたい。簡単に説明しておくと、このFindProxyForURLという関数は、Proxyサーバの名前やIPアドレス、ポート番号などを返すための関数である。引数には、アクセス先のURLと、URL中のホスト名の部分が渡される。JavaScriptで記述することにより、ネットワーク管理者は自社の構成に応じた柔軟なProxyの設定を行うことができる。"DIRECT"」)、そうでなければ192.168.0.10のProxyサーバを使え、という意味である。ところで最近弊社のProxyサーバマシンの調子が悪くなったので、一時的にProxyサーバを外し、代わりにNAT/NAPT経由で直接インターネットにアクセスできるようにネットワーク構成を変更した。このようなインターネットの利用形態は家庭だけでなく、SOHOや小規模な会社でも珍しくないだろう。最近ではブロードバンド回線の普及により、Proxyサーバでコンテンツをキャッシュしなくても、各クライアントが直接インターネットへアクセスしても十分な帯域が得られるからだ。この変更に伴い、先のproxy.pacファイルの内容も一時的に変更して、Proxyサーバをバイパスするようにした。サーバが復旧すればすぐに内容を戻す予定なので、ファイルそのものを削除するのではなく(削除するとファイルが見つからないというエラーなどが発生し、さらにトラブルになりそうだったから)、ファイルの内容を次のような非常に簡単なものに変更した。}Proxyサーバを使わないようにするための設定すべてのProxyサーバをバイパスして、直接相手のサーバへ接続させるための設定。"DIRECT"は、(Proxy経由ではなく)直接接続せよという意味。このスクリプトでは、単に“DIRECT”という文字列を返しているだけである。これによりクライアントからのWebアクセス要求は、Proxyサーバではなく、直接デフォルト・ゲートウェイへ送られることになるはずである。気が付けば世界中が「イントラネット」に......以上のように変更したproxy.pacファイルであるが、当然のごとく何の問題もなく動作しているようである。WebブラウザからのHTTPプロトコル・パケットはすべてデフォルト・ゲートウェイへと向かい、途中でアドレス/ポート変換が行われて、インターネットをアクセスすることができる。あるとき、ふとブラウザのステータス・バーを見ると、ゾーン情報が「インターネット」ではなく「イントラネット」になっていることに気が付いた。あれっと思っていろいろ試してみた結果、すべてのサイトがイントラネット・ゾーンとして扱われていることが分かった。原因はともかく、このような状態はセキュリティ的には非常にまずいであろう。ゾーン分けによるセキュリティ設定がまったく機能しないのであるから。本来ならばインターネット・ゾーンにならなければならないはずなのに、なぜかイントラネット・ゾーンとなっている。(1)アクセス先のURL。これは本来インターネット・ゾーンとなるべきサイトである。(2)イントラネット・ゾーンとしてアクセスしている。このような事態が発生する原因として考えられるのは、やはり変更したばかりのproxy.pacファイルであろう。"DIRECT"」を含むスクリプトを使うと、IEは(デフォルトでは)すべてのサイトがイントラネット・ゾーンになってしまうことが分かった。このファイルを使わないようにIEのProxyを設定すると(Proxyの設定画面をすべて空白のままにする)、正しくゾーンが機能するが、このスクリプトを読み込むようにすると、イントラネット・ゾーンになってしまうのだ。調べると、LAN上のほかのクライアントでも、すべてのサイトがイントラネット・ゾーンとして扱われているマシンが何台か見つかった。すべてのクライアントがそうなっているわけではなく、正しくインターネット・ゾーンとイントラネット・ゾーンが(期待された通りに)区別されているマシンも存在するようだ。これらも、やはり同じ理由によるものであった。proxy.pacファイルを自動的に読み込むように設定している場合は(デフォルトでは自動的に設定する状態になっている)、このような症状が発生していたのである。この自動設定を行うとIEの起動時間が少し長くなるので(スクリプト・ファイルを探すため)、スキルのあるユーザーなどではわざと使わないようにしている場合もある。いうユーザーの場合は、このような症状が出ていなかった、というわけである。詳細な原因と対策は後述するとして、ここでは実際にこの症状を再現させる方法を記しておこう。1.DIRECTのみを返すproxy.pacファイルを用意するまず、次のような内容を持つテキスト・ファイルを用意して、例えばproxy.pacというファイル名で保存する。}2.proxy.pacをイントラネットのWebサーバ上に配置するproxy.pacファイルはWebサーバから自動ダウンロードさせるものなので、このファイルをどこか適当なWebサーバ上に配置し、自由にダウンロードできる状態にしておく。3.新しいユーザー・アカウントを用意してログオンするこの症状はIE4以降ならどれでも再現するが、ユーザーの設定によっては症状が発生しないこともある。NT/2000/XP上で新しいユーザー・アカウントを作成し、デフォルト設定のままでIEが起動するように準備しておく。オプション]を選び、[接続]タブにある[LANの設定]で、先ほど用意したproxy.pacファイルを読み込むようにセットする。[設定を自動的に検出する]を選んでもよいし(WPADの設定を行っておくこと。詳細は先の「TIPS—WebブラウザのProxy設定を行うための4つの方法(WPADのススメ)」参照)、[自動構成スクリプト]で明示的に指定してもよい。自動構成スクリプト(ここではproxy.pacとしている)をIEに読み込ませるための方法はいくつかある。どの方法を使っても結果は同じである。(1)WPADメカニズムによって自動的に読み込ませるためには、これをチェックする。これはIEのデフォルト状態。(2)proxy.pacファイルを置いた場所(URL)を明示的に指定するには、こちらを使う。5.IEを起動する以上で準備は完了である。ゾーン」になっていることが分かるであろう。ゾーン」になることも確認しておく。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。