Administration Pack
投稿者: Walter Oliver
はじめに
Administration Pack には、ホストとその顧客が次の操作を行うのに役立つ、IIS マネージャー モジュールのセットが備わっています。
- サーバー構成設定を編集する (管理者のみ)。
- FastCGI の設定を管理する。
- ASP.NET の認可を管理する。
- カスタム エラーを管理する。
- HTTP 要求のフィルタリング規則を編集する。
この記事は、ホスティング環境に Administration Pack を展開する方法について学習するために必要な情報を、ホスト側に提供することを目的としています。 次の図では、Administration Pack のインストール後に IIS マネージャーで見つかる新しいモジュール アイコンが強調表示されています。
Administration Pack を展開する
共有ホスティング環境に Administration Pack を展開する場合は (<リンク: 共有ホスティングの構成に関する記事へ>)、ファーム内の各 Web サーバーにインストールする必要があります。 事前構築済みのイメージを使用する場合、Administration Pack はファーム サーバーの構築に使用されるイメージの一部である必要があります。 こちらの記事で説明されている手順に従って、Administration Pack をダウンロードしてインストールします。
Administration Pack について
Configuration Editor
構成エディター モジュールは、構成ファイルの管理に役立ちます。 このツールは、サーバー管理者のみが使用できます。 これにより、system.webServer などの IIS の構成設定や system.web などの ASP.NET の設定など、構成ファイル内の任意のセクション、属性、要素、コレクションを編集できます。 これらの値を編集するだけでなく、ロックやロックの解除も行うことができます。 他にも構成エディターを使用して、実行するアクションに基づいてスクリプトを生成できるほか、ファイルを検索して値が使用されている場所を確認することもできます。
設定の値を入力すると、構成エディターによってデータ型が検証され、互換性が確保されます。 ブール値 (True/False) や列挙型などの特定の値オプションの場合は、コンボ ボックスを使用して使用可能なオプションのみを表示します。 他にも構成エディターを使用して、実行するアクションに基づいてスクリプトを生成できるほか、ファイルを検索して値が使用されている場所を確認することもできます。 次のビデオ (<リンク: https://blogs.msdn.com/carlosag/archive/2008/03/31/IISAdminPackConfigurationEditor.aspx>) では、構成エディターのさまざまな機能を実演しています。
- スキーマ駆動 — 構成エディターは完全に \windows\system32\inetsrv\config\schema にある構成スキーマによって動作します。 つまり、セクションを作成する構成システムを拡張した場合は、それらを構成エディター内で管理できるようになります。 これらのセクション用に追加の UI を構築する必要はありません。
- 追加情報 — 構成エディターによって、セクションが使用されている場所、コレクション内の特定の要素の継承元などの情報が公開されます。
- スクリプト生成 — 構成エディターを使用してコードに変更を加えたりコードを生成したりすることで、タスクを自動化できます。 構成エディターでは、Microsoft.Web.Administration を使用してマネージド コードを、AHADMIN を使用して JavaScript を、AppCmd.exe ツールを使用してコマンド ラインを生成できます。
- 検索 — 構成エディターでは、すべてのセクションとそれらが使用されている場所について、スコープを指定して構成システムの検索を簡単に実行できます。 これにより、サーバーの全体像を明らかにしたり、構成ロックの違反を防いだりすることに加え、それ以外の多くの検索機能にとっても役立ちます。
- ロック — 構成エディターでは、特定の属性をロックしてより深いところで使用できないようにしたり、コレクション内の個々のアイテムをロックしたり、セクション全体をロックしたりなど、高度なロックを実行できます。
構成エディターの使用
スクリプト生成
こちらの記事 (<リンク: https://www.iis.net/learn/manage/managing-your-configuration-settings/using-configuration-editor-generate-scripts>) では、構成エディターを利用してスクリプトを生成し、構成タスクを自動化する方法について説明しています。 C#、Jscript、AppCmd.exe ツールの 3 種類のスクリプトに対応しています。
構成コレクション
IIS の一部の構成設定は、コレクションの形式になっています。 こちらの記事 (<リンク: https://www.iis.net/learn/manage/managing-your-configuration-settings/editing-collections-with-configuration-editor>) では、出力キャッシュ プロファイル コレクションを編集する方法について説明しています。 こちらの記事 (<リンク: https://www.iis.net/learn/manage/managing-your-configuration-settings/editing-collections-using-configuration-editor-complex-sections>) では、状態コード 401 を返す、応答に 1 分以上かかる、またはこの状態コードを返して 1 分後に応答する .aspx 要求に対して、失敗した新しい要求をトレースするルールを追加する方法について説明しています。
FastCGI の設定
FastCGI モジュールを使用すると、サーバー上の Web サイトで使用される FastCGI の設定を構成できます。 これにより、ユーザーは FastCGI アプリケーションの追加や削除を行ったり、これらの設定を変更したりできます。 次の図は、[FastCGI アプリケーションの追加] ダイアログ ボックスを示します。
.NET 認可規則モジュール
.NET 認可規則モジュールは、Administration Pack に入っている 2 つの ASP.NET モジュールのうちの 1 つです。 このモジュールを使用すると、サイト管理者はユーザーに Web サイトやアプリケーションへのアクセスを認可するための規則を指定できます。 具体的には、.NET 認可規則モジュールには、Web コンテンツへのユーザー アクセスを管理するための許可および拒否規則作成用のグラフィカル ユーザー インターフェイスが備わっています。 次の図は、[許可の承認規則の追加] ダイアログ ボックスを示します。
ASP.NET の認可規則をロックする方法の手順については、こちらのガイド (<リンク: https://msdn.microsoft.com/library/ms178693.aspx>) を参照してください。
こちらの記事 (<リンク: https://learn.iis.net/page.aspx/142/understanding-iis-7-url-authorization/#Differences>) では、ASP.NET での URL の認可と IIS での URL の認可の違いについて説明しています。
.NET のエラー ページ
.NET エラー ページには、HTTP エラー応答を構成するためのグラフィカル ユーザー インターフェイスがあります。 カスタム エラー ページの構成と既定の設定を有効にします。 以下の図は、[カスタム エラー ページの追加] ダイアログ ボックスを示します。
HTTP 要求のフィルタリング
HTTP 要求のフィルタリング モジュールは、Web サーバーを悪意のある要求から保護するゲートキーパー コンポーネントです。 次のようなフィルタリング規則があります。
- 特定のファイル名拡張子を持つファイルの要求をブロックまたはブロックを解除する。
- 構成セグメントを [非表示セグメント] リストに追加するか、リストから削除する。
- [拒否する URL シーケンス] リストに特定の URL シーケンスを追加するか、リストから削除する。
- HTTP 動詞をブロックまたはブロックを解除する。
- ヘッダーを具体的なサイズ制限付きで追加する。
この機能は IIS 7.0 が Windows Server 2008 の一部としてリリースされたときにはありましたが、この機能の管理に使用できる IIS マネージャー モジュールは付属していませんでした。 そのため、要求のフィルタリングの構成を容易にするグラフィカル ユーザー インターフェイスは使用できませんでした。 Web.config ファイルに新しい構成を追加するだけで要求のフィルタリングを使用する例については、こちらの記事 (<リンク: https://learn.iis.net/page.aspx/143/how-to-use-request-filtering/>) を参照してください。
こちらのブログ記事 (<リンク: https://blogs.iis.net/bills/archive/2008/03/23/how-to-un-block-directories-with-iis7-web-config.aspx>) では、要求のフィルタリングを使用してサイトのセクションへのアクセスをブロックまたはブロックを解除する方法について説明しています。 このブログ記事 (<リンク: https://blogs.msdn.com/carlosag/archive/2008/03/24/IISAdminPackRequestFiltering.aspx>) では、Administration Pack に付属する IIS マネージャー モジュールを使用して同じタスクを実行しています。
次のセクションでは、HTTP 要求のフィルタリングの最新の機能について説明します。
要求の一部で文字列パターンを禁止する規則の作成
この新機能を使用すると、規則のリストを作成できます。 HTTP 要求の特定の部分と突き合わせたパターンに基づいて要求を拒否する規則を指定できます。 この機能の主な構成は、ApplicationHost.config ファイルまたは Web.config ファイルの system.webServer/security/requestFiltering セクションの下にある filteringRules セクションです。 この規則により要求が拒否された場合、HTTP 状態 404.19 が IIS ログに記録されます。
URL またはクエリ文字列のセーフ リストの作成
この新機能を使用すると、定義されているすべての拒否規則をバイパスできる安全な URL またはクエリ文字列を指定できます。 たとえば、定義された拒否規則がこの URL によってトリガーされる場合でも、URL "/my.login.page.asp" を常に許可できます。 この機能の基本構成には、alwaysAllowedUrls 属性と alwaysAllowedQueryStrings 属性が含まれます。 これらの属性は、ApplicationHost.config ファイルまたは Web.config ファイルの system.webServer/security/requestFiltering セクションの下にあります。
クエリ文字列の拒否リストの作成
最も一般的な SQL インジェクション攻撃は、クエリ文字列を操ることによって実行されます。 この新機能を使用すると、クエリ文字列を調べることで、悪意のある要求を除外できます。
すべての要求の URL シーケンスのリストを拒否するには、ApplicationHost.config ファイルまたは Web.config ファイルに denyQueryStringSequences セクションを作成してから、要求の URL で禁止する文字列のリストを追加します。 この規則により要求が拒否された場合、HTTP 状態 404.18 が IIS ログに記録されます。
エスケープされたクエリ文字列とエスケープされていないクエリ文字列の両方の確認
この新機能を使用すると、ApplicationHost.config ファイルまたは Web.config ファイルの system.webServer/security/requestFiltering セクションにある unescapeQueryString 属性を使用して、エスケープされたクエリ文字列とエスケープされていないクエリ文字列の両方をスキャンできます。 この規則により要求が拒否された場合、HTTP 状態 404.18 が IIS ログに記録されます。
次の図は、ブロックされているファイル名拡張子のリストを示します。
HTTP 要求のフィルタリングはセキュリティ シナリオのみに合わせて設計および最適化されていますが、URL 書き換え (<リンク: https://learn.iis.net/page.aspx/531/url-rewrite-for-hosters/>) はさまざまなシナリオに適用できます。セキュリティ シナリオはこれらのサブセットです。 これら 2 つのモジュールの違いの詳細については、こちらの記事 (<リンク: https://learn.iis.net/page.aspx/501/iis-70-request-filtering-and-url-rewriting/>) を参照してください。
まとめ
この記事では、Administration Pack の概要と、ホスト側が共有ホスティング環境で展開および構成するために使用できるリソースへのマップについて説明しました。