要求のフィルタリングを使用して WebDAV を構成する方法
作成者: Robert McMurray
はじめに
Microsoft は、Windows Server© 2008 上のインターネット インフォメーション サービス 7.0 (IIS 7.0) 用に完全に書き換えられた、新しい WebDAV 拡張機能モジュールを公開しました。 この新しい WebDAV 拡張機能モジュールには、Web 作成者が以前よりもコンテンツをうまく発行できる多くの新機能が組み込まれており、Web 管理者にセキュリティと構成の多くのオプションが提供されています。 Microsoft は、Windows Server® 2008 用の WebDAV 拡張モジュールの更新プログラムをリリースしました。この更新プログラムでは、上書きにより更新が失われることを防ぐ、共有ロックと排他ロックのサポートが提供されています。
IIS 7.0 には、IIS 7.0 の新しい要求のフィルタリングなど、いくつかの優れた新しいセキュリティ機能が用意されています。 以前のバージョンの IIS の UrlScan に慣れている IIS ユーザーの場合、IIS 7.0 の要求のフィルタリング機能は URLScan のビルトインと同じです。
新しい WebDAV モジュールと要求のフィルタリングは連携するように設計されており、このドキュメントでは、セキュリティで保護された発行環境を設定するために、WebDAV 関連の要求のフィルタリング設定と WebDAV 設定を構成する手順について説明します。 IIS マネージャー UI を使用して WebDAV を構成する場合、要求のフィルタリング設定は自動的に更新されるため、この記事の手順に従う必要はありません。
前提条件
この記事の手順を完了するには、次の項目が必要です。
IIS 7.0 をサーバーにインストールし、次のように構成する必要があります。
- IIS 7.0 のインストールによって作成される既定の Web サイトが、引き続き存在する必要があります。
- 要求のフィルタリング機能をインストールする必要があります。
新しい WebDAV 拡張モジュールをインストールする必要があります。 新しい WebDAV モジュールのインストールについては、次のドキュメントを参照してください。
AppCmd の使用方法に関するナレッジが役立ちます。 要求のフィルタリングの使用の詳細については、次のドキュメントを参照してください。
Note
このドキュメントの手順には、完全な管理アクセス許可を使用して従う必要があります。 そのためには、次の 2 つの方法のいずれかを使用します。
- ローカルの "Administrator" アカウントを使用してコンピューターにログインします。
- ローカル管理者アカウントではない管理アクセス許可を持つアカウントを使用してログオンしている場合は、[管理者として実行] オプションを使用して、IIS マネージャーとすべてのコマンド プロンプト セッションを開きます。
上記の条件が必要となるのは、Windows Server 2008 のユーザー アカウント制御 (UAC) セキュリティ コンポーネントによって、IIS 7.0 の構成設定への管理アクセスが禁止されるためです。 UAC の詳細については、次のドキュメントを参照してください。
基本的な要求のフィルタリングの概念
IIS 7.0 での要求のフィルタリングは、次のパラメーターに基づく要求のフィルタリングから成っています。
- ファイル拡張子
- 非表示セグメント
- HTTP 動詞
- 要求の制限
- URL シーケンス
これらの要求のフィルタリング機能はすべて、WebDAV 経由でアップロードまたはダウンロードされるコンテンツに影響を与える可能性がありますが、一部の機能は WebDAV と連携して動作するように構成できます。
次の一覧では、WebDAV で動作するように構成できるいくつかの機能について説明します。
次の機能は常に WebDAV 要求に影響します。
- 要求の制限
- URL シーケンス
次の機能は、既定では WebDAV 要求に影響しますが、WebDAV 要求をバイパスするように構成できます。
- ファイル拡張子
- 非表示セグメント
- HTTP 動詞
たとえば、".htm" ファイルと ".php" ファイルに対する WebDAV 以外の要求を許可し、".mdb" ファイルと "config" ファイルへのアクセスをブロックしながら、WebDAV 要求がそのブロックされたコンテンツにアクセスできるようにサーバーを構成できます。
Note
WebDAV 要求には認証が必要です。
要求のフィルタリング設定は、次のいずれかの方法で編集することができます。
- Administration Pack for IIS 7.0.0 の一部として提供されるユーザー インターフェイスの使用
- コマンド ラインからの AppCmd の使用
- applicationHost.config ファイルの編集
- .NET アプリケーションまたは Windows PowerShell からの Microsoft.Web.Administration の使用
このチュートリアルの残りの情報では、コマンド ラインから AppCmd を使用する方法を示しながら、applicationHost.config ファイル内の結果の構成設定がどのようになるかを示します。
Note
このドキュメントでは、要求のフィルタリングを使用して構成できるすべての機能について説明するわけではありません。 追加の要求のフィルタリング オプションの構成については、次のトピックを参照してください。
要求のフィルタリングと WebDAV の構成
ファイル拡張子のフィルタリング
".config" や ".asax" などの特定のファイル拡張子は、既定の要求のフィルタリング fileExtensions コレクションによって保護されます。 HTTP 要求に対してファイル拡張子を許可またはブロックするために、ファイル拡張子の一覧にエントリを追加できます。また、この一覧が WebDAV 要求に適用されるかどうかを制御できます。 この例では、AppCmd ブロック ".txt" ファイルに通常アクセスできる場合でも、アクセスをブロックし、WebDAV 要求がブロックされているすべてのファイル拡張子にアクセスできるように指定します。
完全な管理者権限でコマンド プロンプトを開き、ディレクトリを InetSrv フォルダーに変更します。
cd "%WinDir%\System32\InetSrv"
既存の要求のフィルタリング規則を表示するには、次の構文を使用します。
AppCmd list config "Default Web Site/" /section:system.webServer/security/requestFiltering
fileExtensions コレクションに特定のファイル拡張子を追加し、次の構文を使用して、許可された属性を false に指定することで、".txt" ファイルへのアクセスをブロックします。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+fileExtensions.[fileExtension='.txt',allowed='false'] /commit:apphost
次の構文を使用して fileExtensions コレクションの applyToWebDAV 属性を false に設定して、ブロックされているすべてのファイルの種類に WebDAV がアクセスできるようにします。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
上記の手順を完了すると、applicationHost.config ファイルの fileExtensions セクションの結果のコードは次の例のようになります。
<requestFiltering>
<fileExtensions applyToWebDAV="false">
<add fileExtension=".txt" allowed="false" />
</fileExtensions>
</requestFiltering>
注:
上記の手順を使用して、追加のファイル拡張子へのアクセスを fileExtensions コレクションに追加してブロックしたり、許可された属性に true を指定して特定のファイルを許可するように構文を変更したりできます。
次の構文を使用して、fileExtensions コレクションの allowUnlisted 属性を false に設定することで、不明なファイル拡張子をすべてブロックできます。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.allowUnlisted:false /commit:apphost
Note
このオプションを設定するには、WebDAV 以外の要求からアクセスする前に、各ファイル拡張子を明示的に追加する必要があります。
上記の手順を使用して、applyToWebDAV 属性に true を指定することで、WebDAV 要求のアクセスをブロックできます。
非表示セグメントのフィルタリング
"web.config" や "App_code" などの特定のファイル セグメントは、hiddenSegments コレクションをフィルタリングする既定の要求によって非表示になります。 ファイル セグメントの一覧に追加のエントリを追加して、HTTP 要求用に非表示にしたり、この一覧が WebDAV 要求に適用されるかどうかを制御したりできます。 この例では、AppCmd を使用して、"include" セグメントを HTTP 要求から非表示にします。通常は表示されますが、WebDAV 要求がすべての非表示ファイル セグメントにアクセスできるように指定します。
完全な管理者権限でコマンド プロンプトを開き、ディレクトリを InetSrv フォルダーに変更します。
cd "%WinDir%\System32\InetSrv"
次の構文を使用して hiddenSegments コレクションに特定のエントリを追加して、"include" セグメントへのアクセスをブロックします。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='include'] /commit:apphost
次の構文を使用して、hiddenSegments コレクションの applyToWebDAV 属性を false に設定して、ブロックされているすべての種類のファイルに WebDAV がアクセスできるようにします。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
上記の手順を完了すると、applicationHost.config ファイルの hiddenSegments セクションの結果のコードは次の例のようになります。
<requestFiltering>
<hiddenSegments applyToWebDAV="false">
<add segment="include" />
</hiddenSegments>
</requestFiltering>
注:
- 上記の手順を使用して、hiddenSegments コレクションに追加することで、追加のファイル セグメントを非表示にすることができます。
- 上記の手順を使用して、applyToWebDAV 属性に true を指定することで、WebDAV 要求のアクセスをブロックできます。
HTTP 動詞のフィルタリング
既定の要求のフィルタリング動詞コレクションでは、一部の動詞が特定の HTTP ハンドラーにマップされていない場合でも、一覧に含まれていないすべての HTTP 動詞を使用できます。 このリストにエントリを追加することで、許可またはブロックする HTTP 動詞を指定できます。また、この一覧が WebDAV 要求に適用されるかどうかを制御できます。 この例では、AppCmd を使用して HTTP 要求から "DELETE" 動詞と "PUT" 動詞をブロックし、WebDAV 要求でこれらの動詞を使用できるように指定します。
完全な管理者権限でコマンド プロンプトを開き、ディレクトリを InetSrv フォルダーに変更します。
cd "%WinDir%\System32\InetSrv"
次の構文を使用して、動詞コレクションに特定のエントリを追加し、許可された属性に false を指定して、"DELETE" 動詞へのアクセスをブロックします。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='DELETE',allowed='false'] /commit:appHost
動詞コレクションに別の特定のエントリを追加し、次の構文を使用して許可された属性に false を指定して、"PUT" 動詞へのアクセスをブロックします。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='PUT',allowed='false'] /commit:appHost
次の構文を使用して、動詞コレクションの applyToWebDAV 属性を false に設定することで、WebDAV がすべての HTTP 動詞にアクセスできるようにします。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
上記の手順を完了すると、applicationHost.config ファイルの verbs セクションの結果コードは次の例のようになります。
<requestFiltering>
<verbs applyToWebDAV="false">
<add verb="DELETE" allowed="false" />
<add verb="PUT" allowed="false" />
</verbs>
</requestFiltering>
注:
上記の手順を使用して、追加の HTTP 動詞を動詞コレクションに追加してブロックしたり、許可された属性に true を指定して特定の動詞を許可するように構文を変更したりできます。
次の構文を使用して、verbs コレクションの allowUnlisted 属性を false に設定することで、不明なすべての HTTP 動詞をブロックできます。
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.allowUnlisted:false /commit:appHost
Note
このオプションを設定するには、WebDAV 以外の要求からアクセスする前に、各 HTTP 動詞を明示的に追加する必要があります。
上記の手順を使用して、applyToWebDAV 属性に true を指定することで、WebDAV 要求のアクセスをブロックできます。
まとめ
このドキュメントでは、次の概念について説明します。
その他の情報
WebDAV を使用する方法の詳細については、次の記事を参照してください。