IIS7 セキュリティの向上点
はじめに
この記事には次のような内容が含まれています。
- 縮小された攻撃対象領域
- 簡略化されたセキュリティ管理
- 新しいセキュリティの拡張機能
縮小された攻撃対象領域
IIS 6.0 では既定で「ロックダウンする」アプローチを導入しました。これはそれ以前の IIS のバージョンと大きく異なるものでした。それ以前は、ほぼすべての機能が標準でインストールされ、有効化されていました。そのため、既定でフル機能を利用できたのですが、Web サーバーに最大の攻撃対象領域がありました。IIS 6.0 では、既定のインストールからいくつかの機能が除かれました。また、インストールされても既定のインストールでは無効化されている機能も多数ありました。
IIS 7.0 では、さらに一歩進んで「既定で最小限のインストール」というアプローチが導入されています。IIS 7.0 には、完全なモジュール式 Web サーバーが含まれており、IIS の以前のバージョンでインストールできたコンポーネントの数の 4 ~ 5 倍以上のコンポーネントに分かれています。IIS 7.0 では、最小限のコンポーネントのみがインストールされ、有効化されます。これには、次のようないくつかの大きな利点があります。
- インストール済みのコンポーネントが少ないほど、外部から攻撃を受ける潜在的な領域が減少する
- インストール済みのコンポーネントが少ないほど、管理、修正プログラムの適用、および保守の必要性が低下する
- メモリに保持されるコンポーネントが少ないほど、パフォーマンス、スケーラビリティ、および信頼性が向上する
簡略化されたセキュリティ管理
IIS 7.0 では、セキュリティ管理の重要な簡略化がいくつか導入され、安全性の確保と保持が容易になりました。こうした管理の向上点は、以下のとおりです。
- 優れた管理の委任サポート。範囲が定義された構成と管理のタスクを、簡単かつ安全な方法で管理者以外のユーザーに委任できます。
- 統合された認証および承認の管理。フォーム認証や URL 承認など、あらゆるタイプの認証と承認をあらゆる種類のコンテンツに対して一元的に管理できます。
- コンピューター間で共通のセキュリティ識別子 (SID) を使用できるようにする Web サーバー専用のビルトイン ユーザーおよびグループ アカウント。これによって NTFS ACL の管理、およびアプリケーション プールのサンドボックス化と ID 管理が簡略化されます。
新しいセキュリティの拡張機能
IIS 7.0 には、要求のフィルタリングなどの新しいセキュリティ機能もいくつか導入され、Web サーバーのセキュリティ性能が強化されています。IIS 7.0 にビルトインされた新しい要求のフィルタリングでは、動詞、ファイル拡張子、サイズ、名前空間、およびシーケンスに基づいて即座に要求をフィルタリングできます。この機能のほとんどは、以前は URLScan (Web 経由でダウンロードして入手できる ISAPI フィルター) で提供されていましたが、IIS 7.0 のビルトイン モジュールとして使用できるようになりました。
優れた委任インフラストラクチャ
以前、IIS では管理者以外のユーザーに対して管理タスクの委任を設定することは極めて困難でした。
IIS 5.0 では管理ツールを使用して Web オペレーター を指定でき、IIS 6.0 ではメタベース の ACL の変更を導入してこのシナリオに対処していました。
これらのソリューションはそれぞれにメリットとデメリットがあることが判明しました。IIS チームではお客様のフィードバックを参考に IIS 7.0 の優れた委任モデルを開発しました。この新しいアーキテクチャでは、管理者は以下を行うことができます。
- Windows のプリンシパルと Windows 以外のプリンシパルの両方を使って管理の委任インフラストラクチャをセットアップする。
- サーバー、サイト、およびアプリケーションのスコープで設定を構成する。サイト管理者とアプリケーション管理者は、ボックスの管理者にならなくてもサイトとアプリケーションを管理できます。
特別な設定をしなくても IIS 7.0 のセキュリティが確保されるように、委任は既定でロックダウンされています。この意味をより明確にするために、このセクションでは以下について説明します。
- セキュリティが確保された IIS 7.0 のロックに関する既定
- IIS 7.0 の既定のアクセス許可が標準で安全な委任を実現する仕組み
当初から、旧バージョンである IIS 6.0 と同等のセキュリティを IIS 7.0 でも確保することが目標とされていました。IIS 6.0 には、メタベースと呼ばれる主要な構成ファイルが存在しましたが、メタベース の ACL を使用した委任シナリオのセットアップは、それほど一般的でも簡単でもありませんでした。
IIS 7.0 の新しい委任モデルを開発するにあたって、製品チームは applicationHost.config (メタベースの代わり) をできるだけ緊密にロックダウンする必要がありました。同時に、委任のセットアップを必要とする管理者が難なく簡単に使用できるようにしました。
セクションが "ロック" されると、アプリケーション管理者またはサイト管理者はそのセクションを再定義できなくなります。また、セクションが "ロック解除" されると、そのセクションを変更できます。環境の要件に応じて、セクションをロック解除することも、またはさらにロックダウンすることも選択できます。
IIS 7.0 の既定のアクセス許可が標準で安全な委任を実現する仕組み
以下のセクションでは、IIS 7.0 Vista および Server 上で委任とアクセス許可が互いに関連する仕組みを概説します。また、既定のアクセス許可をまったく変更せずに、管理者以外のユーザー (Windows ID と Windows 以外の ID の両方) がサイトとアプリケーションの両方を管理するように簡単にセットアップする方法についても説明します。
まず、Vista クライアントについて説明し、その後で Server について見ていきます。何が起きるかを明確に把握するために、要点を押さえた詳細なチュートリアルが用意されています。
Vista クライアント
Vista クライアントは、主に次の 2 つの目標に基づいて設計されました。
- UI を介したクライアントでの委任は、Windows Vista でサポートしない。
- LUA が有効な管理者以外の Windows ユーザー アカウントに対して、構成ファイルを介した委任をフルサポートする。管理者アカウントを使用するには、正しく機能するために LUA をオフに切り替える必要があるため、これはお勧めしません。
ここでは、2 つ目の点について説明し、管理者以外の Windows アカウントを使用して簡単に委任をセットアップする方法について示します。
管理者以外の Windows アカウントを使用した委任
ユーザーの条件が以下の場合、管理者が自身のシステムに委任モデルを実装するときに、一般的に用いられるシナリオです。
ローカル アカウント データベースまたは Active Directory に常駐する Windows アカウントを持つ。
- 管理者グループのメンバーではない
- ユーザー グループのメンバーである
Windows Server® 2008
Windows Server 2008 では、以下を提供することで次のレベルの委任を可能にします。
- サーバーへのすべてのクライアント委任シナリオに対するフル サポート
- Windows 以外のプリンシパルの使用を含む、UI を介した委任に対するフル サポート
セキュリティが確保されたアクセス許可、および Windows 以外のプリンシパルの使用によって、UI で委任をサポートする仕組みを理解するために、以下のチュートリアルでは次について概説します。
- 管理者以外の Windows アカウントと UI を使用した委任
- Windows 以外のアカウントと UI を使用した委任
統合されたセキュリティ アーキテクチャ
ASP.NET アプリケーションをサポートしていた以前の IIS のバージョンには、アプリケーション開発者にエンド ツー エンドのソリューションを提供する 2 つの優れたセキュリティ アーキテクチャがありました。最初のモデルは、IIS によって提供され、2 つ目のモデルは ASP.NET によって提供されました。
IIS チームは IIS 7.0 の再設計時に、これらの 2 つのモデルを結合することが可能であると知り、これを実行しました。今回の IIS 7.0 では、1 つのパイプラインで以下を実現します。
- ローカル アカウント データベースまたは Active Directory に常駐する Windows プリンシパルを (以前そうであったように) 完全にサポートする
- Windows 以外のプリンシパルを完全にサポートする
- 1 か所ですべての認証と承認を実行する
この新しいアーキテクチャには、これ以外にも ASP.NET 2.0 が提供する豊富なメンバーシップ システムを IIS 7.0 で利用できるといったメリットがあります。この新しいメンバーシップ システムを使用することで、ASP.NET 2.0 がサポートする (SQL など) ものすべてをサポートしたり、カスタム プロバイダーを作成してこれらを IIS 7.0 と連動させたりできるようになりました。
Windows プリンシパルの完全サポート
IIS の旧バージョンと同様に、次のようなこれまでの認証スキーマはすべて IIS 7.0 でも有効です。
- Windows 認証
- 匿名認証
- 基本認証
- ダイジェスト認証
- 証明書認証
これらのいずれかの認証タイプからトークンを作成した場合、このトークンは追加の構成を行わなくても IIS アプリケーションや ASP.NET アプリケーションで使用できます。
Windows 以外のプリンシパルの完全サポート
フォーム認証は IIS 7.0 の新しい認証機能です。これまで、フォーム認証は ASP.NET アプリケーションのみに使用できましたが、IIS 7.0 の新しいアーキテクチャにより、前述のセクションで説明した他の認証スキーマと同様に、Windows 以外の ID の認証に使用できるようになりました。
1 か所ですべての認証と承認を実行する
新しい IIS 7.0 管理ツールと構成ファイルのいずれかを使用する場合、ASP.NET と IIS 7.0 両方に対するすべての認証ポリシーおよび承認ポリシーを、<system.webServer> グループの <authentication> セクションおよび <authorization> のセクションにそれぞれ構成できます。
これによって、管理者はルールを簡単に定義し、サーバーに何が起きているかを簡単に確認できるようになりました。
学習を開始する
- Security Changes in IIS 7.0
- IIS 7.0 での組み込みユーザーとグループ アカウントとは(英語)
- 暗号化を使用したパスワードの保護(英語)
- IIS 7.0 の URL 認証とは
IIS 7.0 セキュリティ機能の使用を開始する