URLScan ツールの構成方法

文書翻訳 文書翻訳
文書番号: 326444 - 対象製品
マイクロソフトでは、Microsoft Windows Server 2003 で実行される Microsoft インターネット インフォメーション サービス (IIS) 6.0 にアップグレードすることを、すべてのユーザーに強く推奨します。IIS 6.0 により、Web インフラストラクチャのセキュリティが大幅に強化されます。IIS のセキュリティ関連のトピックについては、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/technet/security/prodtech/iis/default.mspx
すべて展開する | すべて折りたたむ

目次

概要

この資料では、URLScan ツールを構成して攻撃や悪用から Web サーバーを保護する方法について、手順を追って説明します。

URLScan のインストール

URLScan をインストールするには、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/jpdnsecure/guidance/secmod114.asp
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
307608 [INFO] IIS の URLScan を使用する

URLScan.ini ファイルの修正

URLScan の構成は、すべて URLScan.ini ファイルを使用して行います。URLScan.ini ファイルは、%WINDIR%\System32\Inetsrv\URLscan フォルダに置かれています。URLScan を構成するには、メモ帳などのテキスト エディタでこのファイルを開き、適切な変更を加えた後、ファイルを保存します。

: 変更を適用するには、インターネット インフォメーション サービス (IIS) を再起動する必要があります。コマンド プロンプトで IISRESET コマンドを実行すると、この操作を簡単に実行することができます。

URLScan.ini ファイルは、以下のセクションから構成されます。
  • [Options] : URLScan の全般的なオプションを指定します。
  • [AllowVerbs] および [DenyVerbs] : URLScan で許可する動詞 (HTTP メソッドとも呼ばれます) を指定します。
  • [DenyHeaders] : HTTP 要求で許可しない HTTP ヘッダーの一覧を指定します。このセクションで指定した HTTP ヘッダーのいずれかが HTTP 要求に含まれると、要求は拒否されます。
  • [AllowExtensions] および [DenyExtensions] : URLScan で許可するファイル名拡張子を指定します。
  • [DenyURLSequences] : HTTP 要求で許可しない文字列の一覧を指定します。このセクションに指定した文字列を含む HTTP 要求は拒否されます。
以下では、各セクションの詳細について説明します。

[Options] セクション

[Options] セクションでは、URLScan のさまざまなオプションを構成できます。このセクション内の各行は、次の形式で記述します。
OptionName=OptionValue
使用可能なオプションとそのデフォルト値は次のとおりです。
  • UseAllowVerbs=1

    このオプションはデフォルトで 1 に設定されています。このオプションを 1 に設定すると、[AllowVerbs] セクションに指定した動詞を使用する HTTP 要求のみが許可され、それらの動詞を使用しない要求はすべて拒否されます。このオプションを 0 に設定すると、[AllowVerbs] セクションは無視され、[DenyVerbs] セクションに指定した動詞を使用する要求のみが拒否されます。
  • UseAllowExtensions=0

    このオプションは、デフォルトで 0 に設定されています。このオプションを 0 に設定すると、[DenyExtensions] セクションに指定したファイル名拡張子に対する要求が拒否され、その他のファイル名拡張子に対する要求はすべて許可されます。このオプションを 1 に設定すると、[AllowExtensions] セクションに指定した拡張子を持つファイルへの要求のみが許可され、その他のファイルへの要求はすべて拒否されます。
  • NormalizeUrlBeforeScan=1

    IIS は URL エンコードされた要求を受け取ります。つまり、一部の文字は、パーセント記号 (%) の後に特定の数字が付いた文字列に置き換えられている場合があります。たとえば、%20 はスペースに対応します。したがって、http://myserver/My%20Dir/My%20File.htm への要求は http://myserver/My Dir/My File.htm への要求と同じです。URL エンコードされた要求をデコードする処理は、正規化 (Normalization) と呼ばれます。このオプションは、デフォルトで 1 に設定されています。NormalizeUrlBeforeScan を 1 に設定すると、URLScan はデコード済みの要求を解析します。このオプションを 0 に設定すると、URLScan はデコードされてない要求を解析します。このオプションを 0 に設定すると、URLScan で特定の種類の攻撃を拒否できなくなります。
  • VerifyNormalization=1

    パーセント記号 (%) 自体の URL エンコードが可能であるため、攻撃者が巧妙に作成した要求 (基本的には二重にエンコードされた要求) をサーバーに送信できます。IIS は、この攻撃を受けると、通常は無効であるとして拒否する要求を受け入れることがあります。このオプションはデフォルトで 1 に設定されています。VerifyNormalization を 1 に設定すると、URL の正規化が 2 回行われ、1 回目の正規化後の URL と 2 回目の正規化後の URL が異なる場合、要求は拒否されます。これにより、二重にエンコードされた要求を使用する攻撃を防止できます。
  • AllowHighBitCharacters=0

    このオプションはデフォルトで 0 に設定されています。このオプションを 0 に設定すると、ASCII 文字以外の文字を含む要求がすべて拒否されます。これにより特定の種類の攻撃を防止できます。一方、正当なファイル (ファイル名が英語以外のファイルなど) への要求も拒否されることがあります。
  • AllowDotInPath=0

    このオプションは、デフォルトで 0 に設定されています。このオプションを 0 に設定すると、複数のピリオド (.) を含む要求がすべて拒否されます。これにより、URL のパス情報 (PATH_INFO) またはクエリ文字列の部分に安全なファイル名拡張子を含めることによって偽装された危険なファイル名拡張子の要求を防止します。たとえば、このオプションを 1 に設定すると、http://servername/BadFile.exe/SafeFile.htm のような URL を使用した要求が許可されます。この URL が HTML ページへの要求と見なされるためです。しかし実際には、この URL は PATH_INFO の部分に HTML ページの名前を含む実行可能 (.exe) ファイルへの要求です。このオプションを 0 に設定すると、ピリオドを含むディレクトリへの要求も拒否されることがあります。
  • RemoveServerHeader=0

    Web サーバーのデフォルトの動作では、すべての応答で、実行中の Web サーバー ソフトウェアを特定できるヘッダーが返されます。この動作はサーバーの脆弱性を高めるおそれがあります。これは、攻撃者がこの動作を利用してサーバーで IIS が実行されていることを特定し、(他の種類の Web サーバー用に作成した悪質なデータを使用するのではなく) 既知の IIS の問題を攻撃できるためです。このオプションは、デフォルトで 0 に設定されています。RemoveServerHeader を 1 に設定すると、IIS サーバーであることを特定できるヘッダーがサーバーから送信されません。RemoveServerHeader を 0 に設定すると、このヘッダーは従来どおり送信されます。
  • AlternateServerName=(デフォルトでは未指定)

    RemoveServerHeader を 0 に設定すると、Server ヘッダーで返される文字列を AlternateServerName で指定できます。RemoveServerHeader を 1 に設定すると、AlternateServerName は無視されます。
  • EnableLogging=1

    デフォルトでは、拒否したすべての要求のログは、URLScan によって %WINDIR%\System32\Inetsrv\URLScan に出力されます。このログを出力しない場合は、EnableLogging を 0 に設定します。
  • PerProcessLogging=0

    このオプションは、デフォルトで 0 に設定されています。このオプションを 1 に設定すると、URLScan.dll をホストするそれぞれのプロセスに関して個別のログが作成されます。0 に設定すると、プロセスのログはすべて同じファイルに出力されます。
  • PerDayLogging=1

    このオプションはデフォルトで 1 に設定されています。このオプションを 1 に設定すると、毎日新しいログ ファイルが作成されます。各ログ ファイルには Urlscan.MMDDYY.log という名前が付けられます (MMDDYY はログ ファイルの日付です)。このオプションを 0 に設定すると、すべてのログが日付にかかわらず同じファイルに保存されます。
  • AllowLateScanning=0

    このオプションは、デフォルトで 0 に設定されています。このオプションを 0 に設定すると、URLScan は優先度の高いフィルタとして実行されます。つまり、URLScan は、サーバーにインストールされているその他すべての ISAPI (Internet Server Application Programming Interface) フィルタより前に実行されます。このオプションを 1 に設定すると、URLScan は優先度の低いフィルタとして実行されます。そのため、URLScan が解析を実行する前に、他のフィルタによって URL が修正されることがあります。FPSE (FrontPage Server Extensions) を使用する場合は、このオプションを 1 に設定する必要があります。
  • RejectResponseUrl=(デフォルトでは未指定)

    このオプションには、URLScan が要求を拒否したときに実行するファイルの仮想パスを指定します。これにより、拒否した要求に関してクライアントに送信する応答をカスタマイズできます。RejectResponseUrl には、該当するファイルの仮想パス (/Path/To/RejectResponseHandler.asp など) を指定する必要があります。ASP (Active Server Pages) ページなど、通常 URLScan が拒否するファイルも指定できます。また、そのページでは、以下のサーバー変数を使用することもできます。
    • HTTP_URLSCAN_STATUS_HEADER : 要求が拒否された理由を示します。
    • HTTP_URLSCAN_ORIGINAL_VERB : 拒否した要求の元の動詞 (GET、POST、HEAD、DEBUG など) を示します。
    • HTTP_URLSCAN_ORIGINAL_URL : 拒否した要求の元の URL を示します。
    RejectResponseUrl を /~* という特殊な値に設定すると、URLScan はログ専用モードで動作します。このとき、IIS はすべての要求を受け付けますが、通常のモードで拒否するすべての要求に関して URLScan ログにエントリを追加します。このモードは、URLScan.ini ファイルをテストする場合に役立ちます。

    RejectResponseUrl に値を指定しない場合は、デフォルト値 /<Rejected-By-UrlScan> が使用されます。

  • UseFastPathReject=0

    このオプションは、デフォルトで 0 に設定されています。このオプションを 1 に設定すると、RejectResponseUrl の設定が無視され、直ちに 404 エラー メッセージがブラウザに返されます。この処理は RejectResponseUrl の処理よりも高速ですが、使用できるログ オプションが限られます。このオプションを 0 に設定すると、要求を処理するときに RejectResponseUrl の設定が使用されます。

[AllowVerbs] セクションおよび [DenyVerbs] セクション

[AllowVerbs] セクションと [DenyVerbs] セクションでは、URLScan で許可する HTTP 動詞 (メソッドとも呼ばれます) を指定します。一般的な HTTP 動詞には、GET、POST、HEAD、PUT などがあります。FPSE や WebDAV (Web Distributed Authoring and Versioning) などの他のアプリケーションでは、その他の動詞も使用されます。

[AllowVerbs] セクションと [DenyVerbs] セクションの構文は同じです。HTTP 動詞の一覧を指定し、1 行につき 1 つの動詞を記述します。

[Options] セクションの UseAllowVerbs オプションの値に基づいて、[AllowVerbs] セクションと [DenyVerbs] セクションのどちらを使用するかが決定されます。デフォルトでは、このオプションは 1 に設定されています。UseAllowVerbs が 1 に設定されている場合、[AllowVerbs] セクションに指定した動詞を使用する要求のみが許可され、それらの動詞を使用しない要求は拒否されます。この場合、[DenyVerbs] セクションは無視されます。

UseAllowVerbs が 0 に設定されている場合、[DenyVerbs] セクションに明示的に指定された動詞を使用する要求が拒否されます。このセクションに指定されていない動詞を使用する要求は、すべて許可されます。この場合、[AllowVerbs] セクションは無視されます。

[DenyHeaders] セクション

クライアントから Web サーバーのページが要求されるときには、通常、要求に関する詳細情報を含む HTTP ヘッダーが送信されます。以下に、一般的な HTTP ヘッダーを示します。
  • Host:

    Web サーバーの名前が含まれます。
  • Accept:

    クライアントが処理できるファイルの種類が指定されます。
  • User-Agent:

    ページを要求したブラウザの名前が含まれます。
  • Authorization:

    クライアントで使用できる認証方法が指定されます。
クライアントは、その他の情報を示すために他のヘッダーをサーバーに送信することもあります。

[DenyHeaders] セクションでは、URLScan で拒否する HTTP ヘッダーを指定します。このセクションに指定されているヘッダーを含む要求を受信した場合、その要求は拒否されます。このセクションには HTTP ヘッダーの一覧を指定し、1 行につき 1 つのヘッダーを記述します。ヘッダー名の後にはコロン (:) を付ける必要があります (Header-Name: など)。

[AllowExtensions] セクションおよび [DenyExtensions] セクション

ほとんどのファイルにはファイル名拡張子があり、これによってファイルの種類が特定されます。たとえば、Word 文書のファイル名は、通常、.doc で終わります。また、HTML ファイルの名前は .htm または .html、プレーン テキストのファイル名は .txt で終わります。[AllowExtensions] セクションおよび [DenyExtensions] セクションには、URLScan で拒否する拡張子を指定できます。たとえば、.exe ファイルへの要求を拒否するように URLScan を構成すれば、使用中のシステムで Web ユーザーがアプリケーションを実行するのを防止できます。

[AllowExtensions] セクションと [DenyExtensions] セクションでは同じ構文を使用します。どちらのセクションにもファイル名拡張子の一覧を記述し、1 行につき 1 つの拡張子を指定します。拡張子の先頭にはピリオド (.) を付けます (.ext など)。

[Options] セクションの UseAllowExtensions の値に基づいて、[AllowExtensions] セクションと [DenyExtensions] セクションのどちらを使用するかが決定されます。デフォルトでは、このオプションは 0 に設定されています。UseAllowExtensions を 0 に設定すると、[DenyExtensions] セクションの一覧で指定されているファイル名拡張子への要求のみが拒否され、このセクションの一覧に指定されていないファイル名拡張子はすべて許可されます。[AllowExtensions] セクションは無視されます。

UseAllowExtensions を 1 に設定すると、[AllowExtensions] セクションの一覧に明示的に指定されていないファイル名拡張子への要求はすべて拒否され、このセクションの一覧に指定されているファイル名拡張子への要求のみが許可されます。[DenyExtensions] セクションは無視されます。

拡張子のないファイルへの要求を許可するように URLScan を構成する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
312376 [HOWTO] IIS で拡張子を含まない要求を許可するように URLScan を構成する方法

[DenyUrlSequences] セクション

URLScan は、URL 内に特定の文字列を含む要求を拒否するように構成できます。たとえば、連続する 2 つのピリオド (..) を含む要求を拒否することができます。連続する 2 つのピリオドは、ディレクトリ移動の脆弱性を利用する攻撃でよく使用されます。拒否する文字列を指定するには、[DenyUrlSequences] セクション内の行にその文字列を記述します。

このセクションに追加する文字列によって Microsoft Exchange の OWA (Outlook Web Access) の動作に影響が生じる場合があります。OWA でメッセージを開くとき、サーバーから要求される URL 内にメッセージの件名が含まれます。URLScan.ini ファイルはパーセント (%) およびアンパサンド (&) を含む要求を拒否する構成になっているため、"Sales increase by 100%" または "Bob & Sue are coming to town" などの件名を持つメッセージを開こうとすると、404 エラー メッセージが表示されます。この問題を解決するには、[DenyUrlSequences] セクションからこれらの文字列を削除します。ただし、これらの文字列を削除すると、有害な要求がサーバーに着信し、セキュリティは低下します。

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
325965 URLScan ツールにより Outlook Web Access で問題が発生することがある

IIS に依存するアプリケーションが機能するように URLScan を構成する

Exchange、FPSE、Microsoft Visual Studio .NET などのアプリケーションが正常に機能するためには IIS が必要です。URLScan を正しく構成しないと、これらのアプリケーションが正常に動作しなくなる可能性があります。

これらのアプリケーションが機能するように URLScan を構成する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
309508 [XCCC] Exchange 環境での IIS Lockdown と URLscan の構成
309394 [HOWTO] FrontPage 2000 で URLScan を使用する方法
318290 [HOWTO] FrontPage 2002 で URLScan を使用する方法
310588 [PRB] セキュリティ ツール キットによって Visual Studio .NET での ASP.NET デバッグが中断される

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
325864 [HOWTO] IIS Lockdown Wizard のインストール方法および使用方法

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 326444 (最終更新日 2005-06-23) を基に作成したものです。

プロパティ

文書番号: 326444 - 最終更新日: 2005年9月20日 - リビジョン: 5.1
この資料は以下の製品について記述したものです。
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
キーワード:?
kbhowto kbhowtomaster KB326444
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com