ユーザ用ツール

サイト用ツール


urlscan

URLScan

URLScanツール

http://technet.microsoft.com/ja-jp/security/cc242650.aspx ~ 予防的にIISのWebDAV機能を停止したい~ http://itpro.nikkeibp.co.jp/article/COLUMN/20060420/235758/ ~ URLScan を構成して ASP.NET Web アプリケーションを保護する方法~ http://support.microsoft.com/kb/815155/ ~

インストール

URLScan 2.5 をインストールすると、URLScan 2.5 インストーラは次を行います。

%windir%\system32\inetsrv\urlscan ディレクトリの UrlScan.dll および UrlScan.ini ファイルをインストールします。URLScan が既にコンピュータにインストールされている場合、UrlScan.ini ファイルは現在の構成ファイルに存在しない新しい設定で更新されます。

URLScan を IIS にグローバル フィルタとして追加します。

URLScan を IIS 6.0 を実行しているサーバーにインストールすると、URLScan 2.5 インストーラはいくつかの追加の変更を行い、これにより、URLScan 2.5 が新しい IIS 6.0 プロセスモデルと動作できるようになります。これらの変更は次の通りです。

PerProcessLoggingが UrlScan.ini ファイルで 1 に設定されます。これにより、2 つの URLScan プロセスが同時にログ ファイルに書き込みを行わないようになります。

URLScan はメタベースでキャッシュ対応とマークされます。これにより、URLScan を実行する 2 つまたはそれ以上のワーカー プロセスが同時にログ ファイルに書き込みを行わないようになります。

新しいログ ディレクトリ (\inetsrv\urlscan ディレクトリの下のサブディレクトリ) が作成されます。これにより、URLScan ディレクトリが PerProcessLogging オプションが作成するすべてのログ ファイルで混乱しないようにします。

URLScan 2.5 を IIS にインストールすると、インストーラは UrlScan.dll、UrlScan.ini およびログファイルの許可を設定します。URLScan 2.5 を IIS にインストールすると、インストーラは同じファイルに追加のアクセス許可を設定し、URLScan 2.5 が IIS 6.0 のワーカープロセス分離モードと動作できるようにします。表 2 は、URLScan 2.5 がインストールされた場合設定される IIS のアクセス許可の一覧です。

表2 : URLScan 2.5 IIS 6.0のアクセス許可 ファイル/ディレクトリ アクセス許可 ..\inetsrv\urlscan\urlscan.dll 読み取りおよび実行 (IIS 6.0 のみに設定される) : LocalService、IIS_WPG および NetworkService フル : 管理者および LocalSystem

..\inetsrv\urlscan\urlscan.ini

読み取り (IIS 6.0 のみに設定される) : IIS_WPG、LocalService および NetworkService フル : 管理者、および LocalSystem

..\inetsrv\urlscan\logs

読み取りおよび書き込み (IIS 6.0 のみに設定される) : IIS_WPG、LocalService、および NetworkService フル : 管理者、および LocalSystem

,URLScan 2.5の機能,IIS 6.0の組み込みの機能 -DenyExtensions:この機能は、ファイル名の拡張子に基づき、特定のリクエストがサーバーで ISAPI または CGI コードを実行することを防ぐことにより、サーバーへの攻撃の側面を制限するために、URLScan に実装されました。 –IIS 6.0 は、管理者にサーバーで実行できる ISAPI および CGI コードを指定することを許可することにより、サーバーへの攻撃の側面を制限します。IIS 6.0 はコードを直接指定するため、URL のどのファイルがコードを呼び出すことができるかを知る必要はありません。

-DenyExtensions:この機能は、ファイル名の拡張子に基づき、特定のリクエストがサーバーで ISAPI または CGI コードを実行することを防ぐことにより、サーバーへの攻撃の側面を制限するために、URLScan に実装されました。 –IIS 6.0 は、管理者にサーバーで実行できる ISAPI および CGI コードを指定することを許可することにより、サーバーへの攻撃の側面を制限します。IIS 6.0 はコードを直接指定するため、URL のどのファイルがコードを呼び出すことができるかを知る必要はありません。 -DenyVerbs : WebDAV コードは特定の HTTP 動詞の使用に基づき Web サーバーで呼び出されます。この機能は WebDAV を呼び出すリクエストを防ぐことにより、サーバーへの攻撃の側面を制限するために URLScan に実装されました。 –IIS 6.0 は、管理者が明示的に WebDAV を有効または無効にすることを許可します。このアクションは WebDAV の実行可能コードに直接影響を与えるため、各リクエストに関連する HTTP 動詞を検査する必要がありません。 -DenyHeaders : WebDAV コードは、特定の HTTP ヘッダの存在に基づき Web サーバーで呼び出されることができます。この機能は WebDAV を呼び出すリクエストを防ぐことにより、サーバーへの攻撃の側面を制限するために実装されました。 –IIS 6.0 は、管理者が明示的に WebDAV を有効または無効にすることを許可します。このアクションは WebDAV 実行可能コードに直接影響を与えるため、各リクエストに関連する HTTP ヘッダを検査する必要がありません。 -NormalizeUrlBeforeScan : この機能により、管理者はクライアントまたはサーバーで処理される正規化された URL により送信される未処理の URL を IIS が処理するかどうかを指定することができます。 注: 運用サーバーでこの値を 0 に設定することは現実的ではありません。この値が 0 に設定されている場合、すべてのファイル名の拡張子および UrlScan.ini ファイルのそのほかの URL チェックは各文字の可能なエンコードを指定する必要があります。結果の順列の数は運用サーバーで管理することはほとんど不可能です。 –IIS 6.0 に組み込まれているロックダウン メカニズムは、実行が許可されている実行可能コードに基づいており、クライアントがリクエストした URL に基づくものではありません。この理由のため、NormalizeUrlBeforeScanは IIS 6.0 で必要ありません。 -VerifyNormalization : URLScan は IISの多くのバージョンで実行されるようデザインされました。URL の正規化を処理するコードは、後のリリースおよび IIS のサービス パックで改善されました。この機能により、URLScan は修正プログラム未適用のコンピュータでの URL 正規化に関する潜在的な問題を検出することができます。 –IIS 6.0 により使用される HTTP.SYS コンポーネントは、URL の正規化の攻撃に対し保護する手助けとなるよう特別に書かれた正規化コードを向上させました。 -DenyUrlSequences : この機能は、URLScan が Web サーバーでの URLをベースとした攻撃で悪用されるシーケンスを検出できるように URLScan に実装されました。 –IIS 6.0 が URL シーケンスを拒否することは必要ではありません。仕様上、IIS 6.0 は、マイクロソフトにより提供された UrlScan.ini ファイルの既定の DenyUrlSequences セクションに一覧表示されている文字シーケンスを悪用する URL をベースとした攻撃の影響を受けません。 -AllowDotInPath : URLScan ロックダウン メカニズムは、リクエストの処理の非常に初期段階で発生するフィルタ通知に依存します。この時点で、URLScan には IIS が PATH_INFO について URL を解析するかどうかは分かりません。PATH_INFO が URL のファイル名の拡張子に影響を与える可能性があります。AllowDotInPathを 0に設定すると、URLScan は、「パスでドット文字を使用した」状態のため、ファイル拡張子があいまいな、いかなるリクエストも拒否します。 –AllowDotInPath機能は IIS 6.0 では必要ありません。この理由は IIS 6.0 はそのロックダウンメカニズムで、フィルタ通知に依存しないためです。 -RemoveServerHeader : この機能により、URLScan が、クライアントへの応答で「サーバー」応答ヘッダからのサーバーの識別を削除または変更することができます。 –IIS 6.0 には RemoveServerHeader機 能が含まれません。この理由は、この機能は実際のセキュリティ上の利点を提供しないためです。ほとんどのサーバー攻撃はオペレーティング システム特有ではありません。また、サーバー ヘッダに依存しないメカニズムにより、サーバーの識別およびオペレーティング システムに関する情報を検出することができます。 -EnableLogging、PerProcessLogging および PerDayLogging : URLScan は中核となる IIS サーバーの一部ではありません。むしろ、URLScan はそれ自体のログ ファイルを作成するアドオン ユーティリティです。これらの設定は URLScan の作成方法およびそのログ ファイルに名前をつける方法を制御します。 –IIS 6.0 はそのロックダウン アクティビティのすべてを W3SVC に記録します。ロックダウンまたは実行可能コードのため拒否されたリクエストが 404 エラーおよびサブ エラー 2 (404.2) により識別されます。未知の種類であるため、拒否された静的ファイルはログで 404 およびサブ エラー 3 (404.3) により識別されます。 -AllowLateScanning : この機能により、管理者は URLScan がそのほかのフィルタの前または後の URL をテストするかどうかを指定することができます。URL を変更する多くのフィルタがあります。また、URL が変更された後、URLScan がその URL をテストすることが望ましい場合もあります。FrontPage Server Extensions フィルタはこのようなフィルタの一例です。 –AllowLateScanning機 能は IIS 6.0 で必要ありません。この理由は IIS 6.0 はそのロックダウンメカニズムについてフィルタ通知に依存しないためです。IIS 6.0 に組み込まれたロックダウンメカニズムは、クライアントがリクエストした URL ではなく、実行を許可される実行可能コードに基づいています。 -RejectResponseUrl : この機能は UseFastPathReject と関連して動作します。UseFastPathReject が 0 に設定されている場合、拒否されたリクエストは RejectResponseUrl に より指定された URL に再マップされます。指定された URL が存在しない場合、クライアントが存在しないページをリクエストしたように、クライアントは通常の 404 応答を受け取ります。指定された URL が存在する場合、サーバーはクライアントに送信される応答をカスタマイズすることができます。 –IIS 6.0 では、実行可能コードのロックダウンのため拒否されたリクエストは 404.2 カスタム エラーを生成します。未知の MIME の種類のため拒否された静的ファイルは 404.3 カスタム エラーを生成します。管理者は IIS カスタム エラー メカニズムを使用して、これらの応,答を制御することができます。 -UseFastPathReject : URLScan ロックダウン メカニズムはリクエスト処理の非常に早い段階で発生するフィルタ通知に依存しています。このため、URLScan はこの通知から直接リクエストを拒否する場合、通常の 404 応答が生成されません。むしろ、クライアントは、通常発生するカスタム エラーではなく、簡潔な 404 応答を受け取ります。UseFastPathReject が 0 に設定されている場合、URLScan は RejectResponseUrl により指定された URL にリクエストを再マップします。 –IIS 6.0 はそのロックダウン メカニズムについて、フィルタ通知に依存しません。IIS 6.0 では、実行可能コードのロックダウンのため拒否されたリクエストは 404.2 カスタム エラーを生成します。未知のファイルの種類のため拒否された静的ファイルは 404.3 カスタム エラーを生成します。管理者は IIS カスタム エラー メカニズムを使用してこれらの応答を制御することができます。 -AllowHighBitCharacters:この機能により、URLScan は URLASCII 以外の文字列を検出することができます。 –許可されている文字範囲は HTTP.SYS により処理されます。この値は次のレジストリ キーを変更することにより、変更することができます。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters\EnableNonUTF8 警告: レジストリを不正確に編集すると、コンピュータに深刻な損害がもたらされる可能性があります。レジストリへの変更を行う前に、コンピュータのすべての貴重なデータをバック アップして下さい。 -MaxAllowedContentLength:この機能により、URLScan はサーバーに掲載されるリクエストのサイズに制限を設けることができます。 –IIS 6.0 はリクエストのサイズを制限するための組み込みの機能があり、これは MaxRequestEntityAllowed および ASPMaxRequestEntityAllowed メタベース プロパティにより構成することができます。 -MaxUrl、MaxQueryString、およびMaxHeader:これらの設定により、URLScan は URL、クエリ文字列、およびサーバーに送られた特定のヘッダのサイズに制限を設けることができます。 –IIS 6.0 により使用される HTTP.SYS コンポーネントは、リクエストの様々な部分に設定されるサイズの制限を許可します。値は、次のレジストリ キーの下のレジストリの AllowRestrictedChars、MaxFieldLength、 UrlSegmentMaxLength および UrlSegmentMaxCount を変更することにより、変更することができます。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\HTTP\Parameters\AllowRestrictedChars HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\HTTP\Parameters\MaxFieldLength HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\HTTP\Parameters\UrlSegmentMaxLength HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\HTTP\Parameters\UrlSegmentMaxCount 警告: レジストリを不正確に編集すると、コンピュータに深刻な損害がもたらされる可能性があります。レジストリへの変更を行う前に、コンピュータのすべての貴重なデータをバック アップして下さい。

URLSCAN.INI

;;;;2006/09/06 watanabe create

[options]

UseAllowVerbs=1 ; If 1, use [AllowVerbs] section, else use the DenyVerbs] section. UseAllowExtensions=0 ; If 1, use [AllowExtensions] section, else use the [DenyExtensions] section. NormalizeUrlBeforeScan=0 ;1 ; If 1, canonicalize URL before processing. VerifyNormalization=0 ;1 ; If 1, canonicalize URL twice and reject request if a change occurs. AllowHighBitCharacters=1 ;0 ; If 1, allow high bit (ie. UTF8 or MBCS) characters in URL. AllowDotInPath=1 ;0 ; If 1, allow dots that are not file extensions. RemoveServerHeader=0 ; If 1, remove the 'Server' header from response. EnableLogging=1 ; If 1, log UrlScan activity. PerProcessLogging=0 ; If 1, the UrlScan.log filename will contain a PID (ie. UrlScan.123.log). AllowLateScanning=0 ; If 1, then UrlScan will load as a low priority filter. PerDayLogging=1 ; If 1, UrlScan will produce a new log each day with activity in the form 'UrlScan.010101.log'. UseFastPathReject=0 ; If 1, then UrlScan will not use the RejectResponseUrl or allow IIS to log the request. LogLongUrls=0 ; If 1, then up to 128K per request can be logged. If 0, then only 1k is allowed.

; ; If UseFastPathReject is 0, then UrlScan will send ; rejected requests to the URL specified by RejectResponseUrl. ; If not specified, '/<Rejected-by-UrlScan>' will be used. ;

RejectResponseUrl=

; ; LoggingDirectory can be used to specify the directory where the ; log file will be created. This value should be the absolute path ; (ie. c:\some\path). If not specified, then UrlScan will create ; the log in the same directory where the UrlScan.dll file is located. ;

LoggingDirectory=C:\WINNT\system32\inetsrv\urlscan\logs

; ; If RemoveServerHeader is 0, then AlternateServerName can be ; used to specify a replacement for IIS's built in 'Server' header ;

AlternateServerName=

[RequestLimits]

; ; The entries in this section impose limits on the length ; of allowed parts of requests reaching the server. ; ; It is possible to impose a limit on the length of the ; value of a specific request header by prepending “Max-” to the ; name of the header. For example, the following entry would ; impose a limit of 100 bytes to the value of the ; 'Content-Type' header: ; ; Max-Content-Type=100 ; ; To list a header and not specify a maximum value, use 0 ; (ie. 'Max-User-Agent=0'). Also, any headers not listed ; in this section will not be checked for length limits. ; ; There are 3 special case limits: ; ; - MaxAllowedContentLength specifies the maximum allowed ; numeric value of the Content-Length request header. For ; example, setting this to 1000 would cause any request ; with a content length that exceeds 1000 to be rejected. ; The default is 30000000. ; ; - MaxUrl specifies the maximum length of the request URL, ; not including the query string. The default is 260 (which ; is equivalent to MAX_PATH). ; ; - MaxQueryString specifies the maximum length of the query ; string. The default is 2048. ;

MaxAllowedContentLength=30000000 ;;;;MaxUrl=260 MaxUrl=1024 ;;;;MaxQueryString=2048 MaxQueryString=4096

[AllowVerbs]

; ; The verbs (aka HTTP methods) listed here are those commonly ; processed by a typical IIS server. ; ; Note that these entries are effective if “UseAllowVerbs=1” ; is set in the [Options] section above. ;

GET HEAD POST

[DenyVerbs]

; ; The verbs (aka HTTP methods) listed here are used for publishing ; content to an IIS server via WebDAV. ; ; Note that these entries are effective if “UseAllowVerbs=0” ; is set in the [Options] section above. ;

PROPFIND PROPPATCH MKCOL DELETE PUT COPY MOVE LOCK UNLOCK OPTIONS SEARCH

[DenyHeaders]

; ; The following request headers alter processing of a ; request by causing the server to process the request ; as if it were intended to be a WebDAV request, instead ; of a request to retrieve a resource. ;

Translate: If: Lock-Token: Transfer-Encoding:

[AllowExtensions]

; ; Extensions listed here are commonly used on a typical IIS server. ; ; Note that these entries are effective if “UseAllowExtensions=1” ; is set in the [Options] section above. ;

.htm .html .txt .jpg .jpeg .gif

[DenyExtensions]

; ; Extensions listed here either run code directly on the server, ; are processed as scripts, or are static files that are ; generally not intended to be served out. ; ; Note that these entries are effective if “UseAllowExtensions=0” ; is set in the [Options] section above. ; ; Also note that ASP scripts are denied with the below ; settings. If you wish to enable ASP, remove the ; following extensions from this list: ; .asp ; .cer ; .cdx ; .asa ;

; Deny ASP requests ;;;;.asp ;;;;.cer ;;;;.cdx ;;;;.asa

; Deny executables that could run on the server ;;;;.exe ;;;;.bat ;;;;.cmd ;;;;.com

; Deny infrequently used scripts ;;;;.htw ; Maps to webhits.dll, part of Index Server ;;;;.ida ; Maps to idq.dll, part of Index Server ;;;;.idq ; Maps to idq.dll, part of Index Server ;;;;.htr ; Maps to ism.dll, a legacy administrative tool ;;;;.idc ; Maps to httpodbc.dll, a legacy database access tool ;;;;.shtm ; Maps to ssinc.dll, for Server Side Includes ;;;;.shtml ; Maps to ssinc.dll, for Server Side Includes ;;;;.stm ; Maps to ssinc.dll, for Server Side Includes ;;;;.printer ; Maps to msw3prt.dll, for Internet Printing Services

; Deny various static files ;;;;.ini ; Configuration files ;;;;.log ; Log files ;;;;.pol ; Policy files ;;;;.dat ; Configuration files

[DenyUrlSequences] ;;;;.. ; Don't allow directory traversals ;;;;./ ; Don't allow trailing dot on a directory name ;;;;\ ; Don't allow backslashes in URL ;;;;: ; Don't allow alternate stream access ;;;;% ; Don't allow escaping after normalization ;;;;& ; Don't allow multiple CGI processes to run on a single request

urlscan.txt · 最終更新: 2019/06/30 12:22 by 127.0.0.1