IIS が HTTP ヘッダー (Content-Location) で IP アドレスを返す


すべてのユーザーは、Microsoft Windows Server 2008 で実行されるインターネット インフォメーション サービス (IIS) 7.0 にアップグレードすることを強く推奨します。 IIS 7.0 は、Web インフラストラクチャのセキュリティを大幅に強化します。 IIS のセキュリティ関連トピックの詳細については、次のマイクロソフト Web サイトを参照してください。IIS 7.0 の関連情報については、次のマイクロソフト Web サイトを参照してください。

現象


静的な HTML ページ (たとえば Default.htm) を使用する場合、Content-Location ヘッダーが応答に含まれます。 インターネット インフォメーション サービス (または Internet Information Server、以下 IIS) のデフォルトでは、Content-Location は完全修飾ドメイン名 (FQDN) やホスト名ではなく、サーバーの IP アドレスを参照します。

通常は非公開または NAT (Network Address Translation) ファイアウォールやプロキシ サーバーで隠蔽される内部の IP アドレス情報が、このヘッダーが原因で外部から参照される場合があります。

例:
HTTP/1.1 200 OK
サーバー: Microsoft-IIS/4.0
Content-Location: http://10.1.1.1/Default.htm
日付: Thu, 18 Feb 1999 14:03:52 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Wed, 06 Jan 1999 18:56:06 GMT
ETag: "067d136a639be1:15b6"
Content-Length: 4325
この例では、ヘッダー内の Content-Location によって、IIS コンピュータの内部のプライベート アドレスが特定されています。 このヘッダーは、ファイアウォールやプロキシ サーバーを経由しても、変更されずに通過します。 そのため、使用されているネットワーク アドレスが外部から参照されることで、内部ネットワークのセキュリティ レベルが下がる場合があります。

解決方法


使用している IIS のバージョンに応じて、2 つの解決方法があります。 このため、バージョンに基づいて正しい手順を実行してください。

IIS 4.0、5.0、または 5.1 を使用している場合

例:

HTTP/1.1 200 OK
サーバー: Microsoft-IIS/4.0 or Microsoft-IIS/5.0
Content-Location: http://www.domain.com/Default.htm
日付: Thu, 18 Feb 1999 15:08:44 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Mon, 30 Nov 1998 15:40:15 GMT
ETag: "f07f84b9771cbe1:3068"
Content-Length: 4739
警告: Adsutil.vbs ファイルの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、Internet Information Server 4.0 の再インストールが必要になることがあります。 マイクロソフトは Adsutil.vbs ファイルの誤用により発生した問題に関しては、一切責任を負わないものとします。 Adsutil.vbs ファイルは、自己の責任においてご使用ください。

IIS 4.0 サーバーの値を設定する

  1. コマンド ウィンドウ (cmd) を開きます。
  2. winnt\system32\inetsrv\adminsamples ディレクトリに移動します。

    注: このディレクトリの場所は、使用中の IIS のインストール状態によっては異なる場合があります。
  3. 次の構文を入力します。


    adsutil set w3svc/UseHostName True
    デフォルトでは、この値は False に設定されています。 このため、IIS コンピュータの IP アドレスのみが返されます。 この値を True に設定すると、IIS コンピュータの完全修飾ドメイン名 (FQDN) が返されます。
  4. この変更を行った後で、Inetinfo サービスを再起動することをお勧めします。 Inetinfo プロセスを停止するには、次のコマンド ラインを入力します。


    net stop iisadmin /y
    注: 後で再起動できるように、どのサービスを停止したのかをメモしておいてください。
  5. 次のように入力します。
    Net start w3svc
    注: これは、Web サーバーを再度動作させるのに最低限必要な操作です。 その他のサービスは、手順 4. でメモを取った IIS または SiteServer に対してインストールされているソフトウェアによって異なります。

IIS 5.0 サーバーの値を設定する

  1. コマンド ウィンドウ (cmd) を開きます。
  2. inetpub\adminscripts ディレクトリに移動します。

    注: このディレクトリの場所は、使用中の IIS のインストール状態によっては異なる場合があります。
  3. 次の構文を入力します。
    adsutil set w3svc/UseHostName True



    デフォルトでは、この値は False に設定されています。 このため、IIS コンピュータの IP アドレスのみが返されます。 この値を True に設定すると、IIS コンピュータの完全修飾ドメイン名 (FQDN) が返されます。
  4. この変更を行った後で、Inetinfo サービスを再起動するか、コンピュータを再起動することをお勧めします。 Inetinfo プロセスを停止するには、次のコマンド ラインを入力します。
    net stop iisadmin /y
    注: 後で再起動できるように、どのサービスを停止したのかをメモしておいてください。
  5. 次のように入力します。
    Net start w3svc
    注: これは、Web サーバーを再度動作させるのに最低限必要な操作です。 その他のサービスは、手順 4. でメモを取った IIS または SiteServer に対してインストールされているソフトウェアによって異なります。

Windows Server 2003 の IIS 6.0 の場合

Windows Server 2003 の IIS 6.0 用の修正の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

834141 [FIX]: IIS 6.0 で、TCP ヘッダーの Content-Location フィールドに IP アドレスが表示される

回避策


この問題の別の回避策としては、静的な HTML ページ (.htm または .html) の代わりに Active Server Pages (ASP) を使用して、特定の Content-Location を返すカスタム ヘッダーを作成します。 ASP エンジンは、応答を作成する際に Content-Location を返しません。 このため、カスタム ヘッダーを追加する機能があります。

IIS 4、5、5.1、および 6.0 では、コンテンツのリクエストにホスト ヘッダーで応答するように Web サイトを設定できます。 ホスト ヘッダーを使用するように IIS を構成する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

190008 [HOW TO] ホスト ヘッダー名を使用して複数サイトを 1 つの IP アドレスからホストする