印刷用ページ      送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Win32 および COM 開発
セキュリティ
セキュリティ (全般)
技術文書
 Web サーバーをセキュリティ保護する
セキュリティ ガイダンス
Web サーバーをセキュリティ保護する

 

公開日: 2004年9月7日 | 最終更新日: 2004年9月7日
トピック
モジュールの内容 モジュールの内容
目的 目的
適用対象 適用対象
モジュールの使用方法 モジュールの使用方法
概要 概要
脅威とその対策 脅威とその対策
Web サーバーをセキュリティ保護するための方法論 Web サーバーをセキュリティ保護するための方法論
IIS と .NET Framework のインストールに関する考慮事項 IIS と .NET Framework のインストールに関する考慮事項
インストールにおける推奨事項 インストールにおける推奨事項
Web サーバーをセキュリティ保護するための手順 Web サーバーをセキュリティ保護するための手順
手順 1: 修正プログラムと更新 手順 1: 修正プログラムと更新
手順 2: IIS Lockdown 手順 2: IIS Lockdown
手順 3: サービス 手順 3: サービス
手順 4: プロトコル 手順 4: プロトコル
手順 5: アカウント 手順 5: アカウント
手順 6: ファイルとディレクトリ 手順 6: ファイルとディレクトリ
手順 7: 共有 手順 7: 共有
手順 8: ポート 手順 8: ポート
手順 9: レジストリ 手順 9: レジストリ
手順 10: 監査とログ記録 手順 10: 監査とログ記録
手順 11: サイトと仮想ディレクトリ 手順 11: サイトと仮想ディレクトリ
手順 12: スクリプト マッピング 手順 12: スクリプト マッピング
手順 13: ISAPI フィルタ 手順 13: ISAPI フィルタ
手順 14: IIS メタベース 手順 14: IIS メタベース
手順 15: サーバー証明書 手順 15: サーバー証明書
手順 16: machine.config 手順 16: machine.config
手順 17: コード アクセス セキュリティ 手順 17: コード アクセス セキュリティ
セキュリティ保護された Web サーバーのスナップショット セキュリティ保護された Web サーバーのスナップショット
セキュリティを維持する セキュリティを維持する
リモート管理 リモート管理
セキュリティ設定作業の簡素化と自動化 セキュリティ設定作業の簡素化と自動化
要約 要約
その他のリソース その他のリソース

モジュールの内容

Web サーバーは、ホスティング基盤のフロントエンドに位置します。Web サーバーはインターネットに直接接続しており、クライアント要求の受信、動的 Web ページの作成、および、要求されたデータの送信による応答を行います。

Web サーバーをセキュリティ保護すれば、ホスティング環境の基盤が強固になります。つまり、Web サーバーをどのように構成するかは、Web アプリケーションの全体的なセキュリティにおいて重要な役割を果たします。ところで、Web サーバーをセキュリティ保護するとはどういうことでしょうか。Web サーバーをセキュリティ保護するうえでの課題の一つは、目的を明確にすることです。セキュリティ保護された Web サーバーとは何かを理解すれば、そのような Web サーバーを構築するために必要な構成設定を適用する方法をすぐに習得できます。

このモジュールでは、セキュリティ保護された Web サーバーを構築する際に使用できる、体系的かつ汎用的な方法論を示します。Web サーバーをセキュリティ保護するための方法論の中では、セキュリティの観点からサーバー構成を 12 の領域に分けています。これらの各セキュリティ領域について、手順 1 ~ 17 で説明します。これらの手順はそれぞれ独立しており、方法論を実装する手順を示しています。

目的

このモジュールの目的は次のとおりです。

セキュリティ保護された Web サーバーとは何かを理解する。

確立された方法論に基づいて、Web サーバーをセキュリティ保護する。

IIS と .NET Framework の完全インストールを実行したときに、Windows 2000 Server に既定で何がインストールされるかを理解する。

セキュリティ保護された Web サーバー上で無効にしても安全性に問題のないサービスについて、理解する。

Web サーバーをセキュリティ保護できるように構成する (例: オペレーティング システムにおけるプロトコル、アカウント、ファイル、ディレクトリ、共有、ポート、レジストリ、監査、ログ記録)。

Web サーバー アプリケーション (このモジュールでは IIS) のコンポーネント (例: Web サイト、仮想ディレクトリ、スクリプト マッピング、ISAPI フィルタ、メタベース、サーバー証明書) を、セキュリティ保護できるように構成する。

.NET Framework の設定情報 (例: machine.config、コード アクセス セキュリティ) を、セキュリティ保護できるように構成する。

リモート管理を行うため、セキュリティ保護された方法でターミナル サービスをインストールして使用する。

Web サーバーに対する主な脅威 (例: プロファイリング、サービス拒否、権限のないアクセス、任意コードの実行、特権の昇格、ウイルス、ワーム、トロイの木馬) に対抗するための対策について理解する。

適用対象

このモジュールは、次の製品およびテクノロジに適用されます。

Microsoft Windows 2000 Server および Microsoft Windows Server 2003

Microsoft .NET Framework 1.1 および ASP.NET 1.1

Microsoft インターネット インフォメーション サービス (Internet Information Services: IIS) 5.0 および 6.0

モジュールの使用方法

モジュールの効果的な使用方法

モジュール 2「脅威とその対策」を参照してください。このモジュールを読めば、Web アプリケーションに対する脅威について理解を深めることができます。

スナップショットを使用してください。「セキュリティ保護された Web サーバーのスナップショット」では、セキュリティ保護された Web サーバーの属性を一覧表形式で説明しています。この一覧表は、顧客、業界の専門家、Microsoft 社内の開発チームとサポート チームなど、さまざまな人々から収集した情報を基に作成したものです。サーバーを構成する際、このスナップショットを参照してください。

チェックリストを使用してください。このガイドの「チェックリスト」のセクションにある「チェックリスト: Web サーバーをセキュリティ保護する」を印刷し、早見表として利用することができます。このチェックリストは作業のカテゴリごとの構成になっているので、必要な手順の範囲を簡単に確認できます。また、このチェックリストに従って、個別の手順を順に実行することができます。

[HOWTO] のセクションを使用してください。このガイドの [HOWTO] のセクションに、次のモジュールがあります。

[HOWTO] URLScan を使用する方法

[HOWTO] Microsoft Baseline Security Analyzer を使用する方法

[HOWTO] IISLockdown.exe を使用する方法

概要

Web サーバーをセキュリティ保護するとはどういうことでしょうか。Web サーバーをセキュリティ保護するうえでの課題の一つは、目的を明確にすることです。セキュリティ保護された Web サーバーとは何かを理解すれば、そのような Web サーバーを構築するために必要な構成設定を適用する方法をすぐに習得できます。このモジュールでは、セキュリティ保護された Web サーバーを構築する際に使用できる、体系的かつ汎用的な方法論を示します。

このモジュールではまず、Web サーバーに悪影響を及ぼす主な脅威について説明します。次に、この脅威の観点から方法論を示します。その後、この方法論を実装する方法について説明します。また、Web サーバーのセキュリティを強化する手順について、順を追って説明します。基本的な方法論はどのテクノロジにも当てはまりますが、このモジュールでは、Microsoft Windows 2000 オペレーティング システム上で Microsoft .NET Framework をホスティングしている、Web サーバーを中心に説明します。

脅威とその対策

攻撃者はリモートで攻撃を仕掛けることができるので、Web サーバーは絶好の標的になります。Web サーバーへの脅威について理解し、適切な対策を明確化すれば、多くの攻撃に対して先手を打ち、増え続ける攻撃を阻止することができます。

Web サーバーに対する主な脅威は次のとおりです。

プロファイリング

サービス拒否

権限のないアクセス

任意コードの実行

特権の昇格

ウイルス、ワーム、およびトロイの木馬

図 16.1 は、主な攻撃と脆弱性をまとめたものです。

Web サーバーに対する主な攻撃と脆弱性

図 16.1
Web サーバーに対する主な攻撃と脆弱性

プロファイリング

プロファイリングとは、Web サイトに関する情報を収集する目的で使用される探索プロセスであり、ホスト列挙と呼ばれることもあります。攻撃者はこの情報を使用して、判明している脆弱性を攻撃します。

脆弱性

次のような脆弱性が存在する場合、プロファイリング攻撃を受けやすくなります。

不要なプロトコルを有効

不要なポートを開く

Web サーバーがバナー内に構成情報を格納

攻撃

主なプロファイリング攻撃は、次のとおりです。

ポート スキャン

ping スイープ

NetBIOS と Server Message Block (SMB) の列挙

対策

対策の例としては、(1) 不要なポートをすべて閉じる、(2) Internet Control Message Protocol (ICMP) トラフィックを阻止する、(3) NetBIOS や SMB などの不要なプロトコルを無効にする、などがあります。

サービス拒否

サービス拒否とは、サーバーがサービス要求を処理しきれなくなる状態を作り出すことです。この脅威が発生すると、Web サーバーは過負荷状態に陥り、本来のクライアント要求に応答できなくなります。

脆弱性

次のような脆弱性が存在する場合、サービス拒否攻撃を受けやすくなります。

脆弱な TCP/IP スタック構成

修正プログラムが適用されていないサーバー

攻撃

主なサービス拒否攻撃は、次のとおりです。

ネットワーク レベルでの SYN パケット大量送信

バッファ オーバーフロー

さまざまな場所から Web サーバーに大量の要求を一斉送信する攻撃

対策

対策の例としては、(1) TCP/IP スタックをセキュリティ強化する、(2) 最新の修正プログラムと更新をシステム ソフトウェアに定期的に適用する、などがあります。

権限のないアクセス

権限のないアクセスとは、正式なアクセス権限を持っていないユーザーが、非公開情報にアクセスしたり、禁止されている操作を実行したりすることです。

脆弱性

次のような脆弱性が存在する場合、権限のないアクセスが行われる原因となります。

IIS の Web アクセス制御 (例: Web アクセス許可設定) が不十分

NTFS のアクセス許可設定が不十分

対策

対策の例としては、(1) Web のアクセス許可設定におけるセキュリティを強化する、(2) NTFS のアクセス許可設定におけるセキュリティを強化する、(3) .NET Framework のアクセス制御機構 (URL 認証を含む) のセキュリティを強化する、などがあります。

任意コードの実行

コード実行攻撃とは、攻撃者がサーバー上で悪意のあるコードを実行し、サーバーのリソースを過剰に消費したり、そのサーバーの先にあるシステムに対してさらに攻撃を加えることです。

脆弱性

次のような脆弱性が存在する場合、任意コードの実行攻撃を受けやすくなります。

脆弱な IIS 構成

サーバーへの修正プログラムの非適用

攻撃

主な任意コードの実行攻撃は、次のとおりです。

パス トラバーサル

バッファ オーバーフローを発生させることによるコード埋め込み

対策

対策の例としては、(1) "../" という文字列を含む URL を拒否するように IIS を構成し、パス トラバーサルを防ぐ、(2) アクセス制御リスト (Access Control List: ACL) を使用して、システム コマンドとシステム ユーティリティを実行できないように制限する、(3) 新たに公開された修正プログラムと更新をインストールする、などがあります。

特権の昇格

特権昇格攻撃とは、攻撃者が、特権を持つプロセス アカウントを使用して、コードを実行することです。

脆弱性

次のような脆弱性が存在する場合、特権昇格攻撃を受けやすくなります。

プロセス アカウントに対する必要以上の特権の付与

サービス アカウントに対する必要以上の特権の付与

対策

対策の例としては、(1) プロセスを実行する際に、必要最小限の特権しか持たないアカウントを使用する、(2) 必要最小限の特権しか持たないサービス アカウントとユーザー アカウントを使用する、などがあります。

ウイルス、ワーム、およびトロイの木馬

悪意のあるコードには、次の種類があります。

ウイルス: 悪意のある動作を実行してオペレーティング システムまたはアプリケーションに障害を発生させることを目的とした、プログラム

ワーム: 自己複製と自己維持を行うプログラム

トロイの木馬: 外見上は便利なソフトウェアの姿をしているが、実際には損害を与えるプログラム

多くの場合、悪意のあるコードの存在に気付くのは、システム リソースが消費され、他のプログラムの実行速度が低下したり実行自体が停止したときです。たとえば CodeRed は、IIS に被害を及ぼした悪名高いワームであり、ISAPI フィルタに内在していたバッファ オーバーフローの脆弱性を悪用したものです。

脆弱性

次のような脆弱性が存在する場合、ウイルス、ワーム、およびトロイの木馬による攻撃を受けやすくなります。

サーバーへの修正プログラムの非適用

不要なサービスの実行

不要な ISAPI フィルタおよび ISAPI 拡張プログラムの使用

対策

対策の例としては、(1) 新しい修正プログラムが公開されたらすぐに適用する、(2) 使用していない機能 (使用していない ISAPI フィルタや ISAPI 拡張プログラムなど) を無効にする、(3) プロセスを実行する際に必要最低限の特権しか持たないアカウントを使用し、攻撃を受けたときの被害の範囲を最小限に抑える、などがあります。

Web サーバーをセキュリティ保護するための方法論

Web サーバーをセキュリティ保護するには、数多くの構成設定を適用し、攻撃に対するサーバーの脆弱性を改善する必要があります。では、何から始めればよいでしょうか。また、脆弱性が改善されたかどうかは、どのようにすればわかるのでしょうか。最善の方法は、実行する必要のある対策、および構成する必要のある設定情報を、いくつかのカテゴリにまとめることです。カテゴリにまとめることにより、セキュリティ強化プロセス全体を体系的に把握したり、特定のカテゴリを選んでそのカテゴリ中の手順を実行することができます。

構成のカテゴリ

このモジュールでは、セキュリティ強化に関する方法論を図 16.2 のカテゴリに分類しています。

Web サーバー構成のカテゴリ

図 16.2
Web サーバー構成のカテゴリ

各カテゴリについて以下に説明します。

修正プログラムと更新
セキュリティ上の脅威の多くは、広く知れ渡っている脆弱性が原因で発生します。新たな脆弱性が見つかると、その脆弱性を悪用するコードが、攻撃に初めて成功してから数時間以内にインターネット上の掲示板に投稿されます。サーバーに修正プログラムや更新を適用していない場合、攻撃を受けたり悪意のあるコードを実行される可能性があります。サーバー ソフトウェアに修正プログラムや更新を適用することは、Web サーバーをセキュリティ保護するうえで最初に実行すべき必須の作業です。

サービス
サービスは、サービスの特権と機能を悪用する能力を備えた攻撃者にとって、絶好の脆弱性です。攻撃者はそのサービスを悪用して、ローカルの Web サーバーやその先のサーバーにアクセスします。 Web サーバーの運用において必要でないサービスは、サーバー上で実行しないでください。必要なサービスは、セキュリティ保護し、そのセキュリティを維持します。また、サービスを監視して可用性を確保することを検討してください。セキュリティ保護されていないサービス ソフトウェアを使用する必要がある場合、セキュリティ保護された代替策が他にないか調べてください。

プロトコル
もともと安全性の低いプロトコルは、使用しないでください。安全性の低いプロトコルをやむを得ず使用しなければならない場合は、適切な対策を講じ、認証と通信のセキュリティを確保してください。たとえば、IPSec ポリシーを利用します。安全性の低いクリア テキスト プロトコルの例としては、Telnet、Post Office Protocol (POP3)、Simple Mail Transfer Protocol (SMTP)、File Transfer Protocol (FTP) などがあります。

アカウント
アカウントは、コンピュータへのアクセスを認証するしくみなので、監査の対象にする必要があります。使用するアカウントごとに、そのアカウントの用途は何か、どの程度のアクセス権限を持っているか、攻撃の標的になり得る一般的なアカウントか、攻撃を受ける可能性のあるサービス アカウントなので監査対象に含める必要があるか、といったことを調査検討する必要があります。特権の昇格を防止するため、必要最小限の特権しか持たないアカウントを構成します。不要なアカウントは削除します。また、ブルート フォース攻撃や辞書攻撃によるパスワード解析処理に時間がかかるようにするため、強力なパスワード ポリシーを使用します。さらに、ログオン失敗イベントを監査して警告を通知します。

ファイルとディレクトリ
すべてのファイルとディレクトリをセキュリティ保護するため、NTFS のアクセス許可設定において、必要な Windows サービスとユーザー アカウントへのアクセスだけを許可します。また、Windows の監査機能を使用して、疑わしい動作や権限のない動作を検出します。

共有
既定の管理共有など、不要なファイル共有をすべて解除します。その他の必要な共有については、NTFS のアクセス許可設定を使用してセキュリティ保護します。共有がインターネットに対して直接公開されることはないかもしれませんが、共有の利用を限定し、かつ、共有をセキュリティ保護すれば、サーバーが攻撃を受けたときのリスクを軽減できます。

ポート
サーバー上で実行されるサービスは、特定のポートをリッスンします。これは、クライアントから送信されてきた要求に応答できるようにするためです。したがって、サーバー上のポートを定期的に監査し、セキュリティ保護されていないサービスや不要なサービスが Web サーバー上で有効になっていないことを確認してください。管理者が開いていないのに有効になっているポートが見つかった場合、権限のないアクセスが行われ、セキュリティが侵害されたことを意味します。

レジストリ
セキュリティに関する設定情報の多くは、レジストリに保存されているので、レジストリをセキュリティ保護する必要があります。レジストリをセキュリティ保護するには、Windows の ACL を適用してアクセスを制限するとともに、リモートでのレジストリ管理を阻止します。

監査とログ記録
監査は、侵入者、現在行われている攻撃、および過去に行われた攻撃を特定するうえで、特に重要な機能です。Windows と IIS の監査機能を組み合わせて使用し、Web サーバーの監査処理を構成します。イベント ログとシステム ログも、セキュリティ問題のトラブルシューティングに役立ちます。

サイトと仮想ディレクトリ
サイトと仮想ディレクトリは、インターネットに対して直接公開されます。ファイアウォール構成をセキュリティ保護し、かつ、URLScan (IIS Lockdown ツールに付属) などの ISAPI フィルタを使用して防御すれば、非公開の構成ファイルやプログラム実行ファイルに対する要求を阻止できますが、さらに防御を強化することをお勧めします。また、サイトと仮想ディレクトリをシステム用パーティション以外のパーティションに移動し、IIS の Web アクセス許可設定を使用してアクセス制限を強化します。

スクリプト マッピング
オプションのファイル拡張子に対する不要な IIS スクリプト マッピングをすべて削除します。これにより、これらの種類のファイルを扱う ISAPI 拡張プログラムにバグがあったとしても、攻撃者に悪用されることがなくなります。未使用の拡張子に対するスクリプト マッピングは見落とされることがよくあるので、セキュリティ上の大きな脆弱性になります。

ISAPI フィルタ
ISAPI フィルタの脆弱性は、攻撃者によって悪用されてきました。したがって、Web サーバー上の不要な ISAPI フィルタを無効にします。

IIS メタベース
IIS メタベースには、IIS の構成設定が格納されています。セキュリティに関する設定が正しく構成されていること、および、NTFS のアクセス許可設定によってメタベース ファイルに対するアクセスが制限されていることを、確認してください。

machine.config
machine.config ファイルには、ASP.NET Web アプリケーションなどの .NET Framework アプリケーションに適用される、マシン レベルの構成設定情報が格納されています。machine.config 内の設定情報を修正し、サーバー上にインストールされている ASP.NET アプリケーションに対して安全な既定値が適用されるようにします。

コード アクセス セキュリティ
コード アクセス セキュリティ ポリシーの設定を厳しくし、インターネットまたはイントラネットからダウンロードされたコードにアクセス権限を付与しないようにします。これにより、ダウンロードされたコードが実行されることはなくなります。

IIS と .NET Framework のインストールに関する考慮事項

Web サーバーをセキュリティ保護するには、IIS と .NET Framework のインストール後に Windows 2000 サーバー上に存在するコンポーネントを、事前に把握しておく必要があります。ここでは、インストールされるこれらのコンポーネントについて説明します。

IIS のインストールの内容

IIS をインストールすると、サービス、アカウント、フォルダ、および Web サイトが多数作成されます。IIS のインストール作業によって作成されるコンポーネントの中には、Web アプリケーションで使用されないものがあります。また、そのようなコンポーネントをサーバー上に残しておくと、サーバーが攻撃に対して脆弱になるおそれがあります。表 16.1 は、Windows 2000 Server に IIS を完全インストールしたとき (つまり、すべてのコンポーネントを選択したとき) に作成される、サービス、アカウント、およびフォルダの一覧です。

表 16.1: IIS をインストールしたときに既定で作成されるコンポーネント

項目 詳細 既定の設定

サービス

IIS Admin Service (Web サービスと FTP サービスの管理用)
World Wide Web Publishing Service
FTP Publishing Service
Simple Mail Transport Protocol (SMTP)
Network News Transport Protocol (NNTP)

インストールされる

インストールされる
インストールされる
インストールされる
インストールされる

アカウントとグループ

IUSR_MACHINE (匿名のインターネット ユーザー)

IWAM_MACHINE (プロセス分離モードで動作する ASP Web アプリケーション。ドメイン コントローラ上で実行される場合を除き、ASP.NET アプリケーションでは使用されません。Web サーバーをドメイン コントローラにしてはいけません。)

Guests グループに追加される

Guests グループに追加される

フォルダ

%windir%\system32\inetsrv (IIS プログラム ファイル)
%windir%\system32\inetsrv\iisadmin (IIS のリモート管理に使用されるファイル)
%windir%\help\iishelp (IIS ヘルプ ファイル)
%systemdrive%\inetpub (Web、FTP、SMTP の各サービス用のルート フォルダ)

 

Web サイト

既定の Web サイト – ポート 80: %SystemDrive%\inetpub\wwwroot
管理用 Web Site – ポート 3693: %SystemDrive%\System32\inetsrv\iisadmin

匿名アクセス可能

ローカル マシンと Administrators グループのみアクセス可能

.NET Framework のインストールの内容

IIS をホスティングするサーバー上に .NET Framework をインストールすると、ASP.NET が登録されます。その際、必要最低限の特権しか持たない、ASPNET という名前のローカル アカウントが作成されます。このアカウントが、ASP.NET ワーカー プロセス (aspnet_wp.exe) とセッション状態サービス (aspnet_state.exe) を実行します。セッション状態サービスは、ユーザー セッション状態の管理に使用できます。

注: Windows 2000 と IIS 5.0 を実行しているサーバー コンピュータ上では、ASP.NET Web アプリケーションは ASP.NET ワーカー プロセスの 1 つのインスタンスとして実行され、アプリケーション ドメインで分離が行われます。一方、Windows Server 2003 上では、IIS 6.0 はアプリケーション プールを使用して、プロセス レベルで分離を行います。

表 16.2 は、.NET Framework 1.1 を既定の設定でインストールしたときに作成される、サービス、アカウント、およびフォルダの一覧です。

表 16.2: .NET Framework をインストールしたときに既定で作成されるコンポーネント

項目 詳細 既定の設定

サービス

ASP.NET State Service: ASP.NET におけるプロセス分離モードのセッション状態をサポートします。

手動で起動する

アカウントとグループ

ASPNET: ASP.NET ワーカー プロセス (Aspnet_wp.exe) とセッション状態サービス (Aspnet_state.exe) の実行に使用されるアカウント。

Users グループに追加される

フォルダ

%windir%\Microsoft.NET\Framework\{version}
\1033
\ASP.NETClientFiles
\CONFIG
\MUI
\Temporary ASP.NET Files

 

ISAPI 拡張プログラム

Aspnet_isapi.dll: ASP.NET のファイル タイプに対する要求を処理します。要求を ASP.NET ワーカー プロセス (Aspnet_wp.exe) に転送します。

 

ISAPI フィルタ

Aspnet_filter.dll: クッキーを使用しないセッション状態をサポートする目的でのみ使用されます。Inetinfo.exe (IIS) プロセスの内部で実行されます。

 

アプリケーション マッピング

ASAX、ASCX、ASHX、ASPX、AXD、VDISCO、REM、SOAP、CONFIG、CS、CSPROJ、VB、VBPROJ、WEBINFO、LICX、RESX、RESOURCES

\WINNT\Microsoft.NET\Framework\{version} Aspnet_isapi.dll

インストールにおける推奨事項

既定では、Windows 2000 Server セットアップ プログラムを実行すると IIS がインストールされます。ただし、オペレーティング システムのインストール時に IIS を一緒にインストールするのではなく、オペレーティング システムに修正プログラムと更新を適用した後に IIS をインストールすることをお勧めします。IIS をインストールしたら、IIS の修正プログラムを再度適用し、IIS 構成のセキュリティを万全にする必要があります。これでようやく、サーバーをネットワークに安全に接続できるようになります。

IIS のインストールにおける推奨事項

Web サーバーを新規に構築する場合、次の手順を実行します。

新しい Web サーバーを構築するには

1.

Windows 2000 Server をインストールします。ただし、オペレーティング システムのインストール時には IIS をインストールしないでください。

2.

最新の Service Pack と修正プログラムをオペレーティング システムに適用します。複数のサーバーを構成する場合は、後述の「Service Pack を Windows インストール元ファイルに組み込む」を参照してください。

3.

[コントロール パネル] の [アプリケーションの追加と削除] を使用して、IIS を別途インストールします。

次のサービスの中で不要なものがある場合は、IIS のインストール時にそのサービスを選択しないでください。

[FTP (File Transfer Protocol) サーバー]

[FrontPage 2000 Server Extensions]

[インターネット サービス マネージャ (HTML)]

[NNTP Service]

[SMTP Service]

[Visual InterDev RAD Remote Deployment Support]

注: 修正プログラムと更新がすべて適用されているオペレーティング システムに IIS をインストールすることにより、修正プログラム適用済みの既知の脆弱性を悪用する攻撃 (例: NIMDA) を防ぐことができます。

.NET Framework のインストールにおける推奨事項

.NET Framework Software Development Kit (SDK) は、実運用サーバーにインストールしないでください。SDK には、サーバーにとって不要なユーティリティが含まれています。攻撃者がそのサーバーにアクセスできる場合、これらのユーティリティの一部を使用してその他の攻撃を補助するおそれがあります。

代わりに、再配布可能パッケージをインストールしてください。このパッケージは、Microsoft.com の .NET Framework サイト http://www.microsoft.com/japan/net/default.asp のダウンロード情報のリンクから入手できます。

Service Pack を Windows インストール元ファイルに組み込む

サーバーを複数台構成する必要がある場合、Windows インストール元ファイルに Service Pack を直接組み込むことができます。Service Pack の中には、Service Pack を Windows インストール元ファイルに組み込むための update.exe というプログラムが含まれています。

Service Pack を Windows インストール ファイルに組み込むには

1.

最新の Service Pack をダウンロードします。

2.

Service Pack から update.exe を抽出するため、Service Pack セットアップ プログラムを起動します。その際、次のように -x というオプションを指定します。

w3ksp3.exe -x

3.

Service Pack を Windows インストール元ファイルに組み込むため、update.exe を実行します。その際、-s オプションで Windows インストール元ファイルへのパスを指定します。

update.exe -s c:\YourWindowsInstallationSource

詳細については、http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/custominstall.asp にあるMSDN の記事「Customizing Unattended Win2K Installations」(英語) を参照してください。

Web サーバーをセキュリティ保護するための手順

以降のセクションでは、Web サーバーをセキュリティ保護するためのプロセスについて説明します。これらのセクションでは「Web サーバーをセキュリティ保護するための方法論」で示した構成カテゴリを使用します。それぞれの手順には、特定の領域または機能をセキュリティ保護するための手順が 1 つ以上含まれています。

手順 1

修正プログラムと更新

手順 10

監査とログ記録

手順 2

IIS Lockdown

手順 11

サイトと仮想ディレクトリ

手順 3

サービス

手順 12

スクリプト マッピング

手順 4

プロトコル

手順 13

ISAPI フィルタ

手順 5

アカウント

手順 14

IIS メタベース

手順 6

ファイルとディレクトリ

手順 15

サーバー証明書

手順 7

共有

手順 16

machine.config

手順 8

ポート

手順 17

コード アクセス セキュリティ

手順 9

レジストリ

 

 

手順 1: 修正プログラムと更新

最新の Service Pack と修正プログラムを適用して、サーバーを更新します。Windows 2000 (IIS を含む)、.NET Framework、Microsoft Data Access Components (MDAC) など、Web サーバーを構成するすべてのソフトウェアに対して、修正プログラムと更新を適用する必要があります。

この手順では、次の手順を実行します。

必要な修正プログラムおよび更新を調べてインストールします。

.NET Framework を更新します。

修正プログラムと更新を調べてインストールする

Microsoft Baseline Security Analyzer (MBSA) を使用して、まだ適用されていない可能性のある修正プログラムと更新を調べます。MBSA では、インストールされている Windows と、XML ファイルに格納されている最新の更新の一覧が照合されます。この XML ファイルは、MBSA によってサーバーがスキャンされるときに自動ダウンロードされます。また、ユーザーは、このファイルを手動で Web サーバーにダウンロードしたり、ネットワーク上のサーバーに置いてネットワーク上で共有することもできます。

必要な修正プログラムおよび更新を検出してインストールするには

1.

MBSA をダウンロードしてインストールします。

MBSA は、MBSA のホーム ページ http://www.microsoft.com/japan/technet/security/tools/mbsahome.asp からダウンロードできます。

MBSA の実行時にインターネットにアクセスしていない場合、最新のセキュリティ設定情報が格納された XML ファイルを Microsoft から取得できません。ただし、別のコンピュータを使用して XML ファイルをダウンロードすることができます。その場合、ダウンロードした XML ファイルを MBSA プログラム ディレクトリにコピーします。この XML ファイルは、http://go.microsoft.com/fwlink/?LinkId=18120 に格納されています。

2.

デスクトップ アイコンをダブルクリックするか、または [スタート] メニューの [プログラム] から選択して MBSA を実行します。

3.

[単一のコンピュータをスキャンする] をクリックします。MBSA は既定でローカル コンピュータをスキャンします。

4.

[セキュリティの更新をチェックする] 以外のチェック ボックスをすべてオフにします。[セキュリティの更新をチェックする] チェック ボックスをオンにすると、不足している修正プログラムと更新が検出されます。

5.

[スキャンを開始する] をクリックします。サーバーが分析されます。スキャンが完了すると、セキュリティ レポートが表示されます。このセキュリティ レポートは、%userprofile%\SecurityScans ディレクトリに書き出されます。

6.

不足している更新のダウンロードおよびインストールを行います。
問題のある各検査の横にある [結果の詳細情報] をクリックし、不足している修正プログラムと更新の一覧を表示します。検出結果を示すダイアログ ボックスが開き、Microsoft セキュリティ情報の参照番号が表示されます。参照番号をクリックして情報に関する詳細を参照し、更新をダウンロードします。

MBSA の使用方法の詳細については、このガイドの [HOWTO] にある「[HOWTO] Microsoft Baseline Security Analyzer を使用する方法」を参照してください。

.NET Framework を更新する

このガイドの作成時点 (2003 年 5 月) では、MBSA は .NET Framework の修正プログラムと更新を検出できません。したがって、.NET Framework の修正プログラムと更新を手動で検出する必要があります。

.NET Framework 1.0 を手動で更新するには

1.

Web サーバーにインストールされている、.NET Framework の Service Pack を調べます。
Service Pack を調べる方法については、マイクロソフト サポート技術情報の 318785「[INFO] .NET Framework に Service Pack がインストールされているかどうかを確認する方法」を参照してください。

2.

インストールされている .NET Framework のバージョンと最新の Service Pack を比較します。
比較するには、マイクロソフト サポート技術情報の 318836「[INFO] 最新の .NET Framework Service Pack の入手方法」に記載されている .NET Framework のバージョンを確認します。

手順 2: IIS Lockdown

IIS Lockdown は、一部のセキュリティ強化手順を自動化するためのツールです。IIS Lockdown を実行すれば、Windows 2000 Web サーバーの脆弱性を大幅に低下させることができます。IIS Lockdown を使用することにより、特定の種類のサーバー役割を選択し、独自のテンプレートを使用してその特定のサーバーに対するセキュリティを強化することができます。これらのテンプレートは、各種の機能を無効にするか、または各種の機能のセキュリティを強化するものです。また、IIS Lockdown を実行すると、URLScan という ISAPI フィルタがインストールされます。Web サイト管理者はこの URLScan を使用することにより、自ら管理する規則に基づいて、サーバーが処理できる HTTP 要求の種類を制限できます。URLScan フィルタは、特定の HTTP 要求をブロックすることによって、有害である可能性のある要求がサーバーに到達して被害を発生させるのを防ぎます。

この手順では、次の手順を実行します。

IIS Lockdown をインストールして実行します。

URLScan をインストールして構成します。

IIS Lockdown をインストールして実行する

IIS Lockdown は、Microsoft の Web サイト http://www.microsoft.com/japan/technet/security/tools/locktool.asp からダウンロードできます。

iislockd.exe をローカル フォルダに保存します。この iislockd.exe は IIS Lockdown ウィザードであり、インストール プログラムではありません。IIS Lockdown によって変更された内容を元に戻すには、iislockd.exe をもう一度実行します。

ASP.NET ページをホスティングしている Windows 2000 コンピュータのセキュリティを強化する場合、テンプレートを選択するよう要求されたときに Dynamic Web server テンプレートを選択します。Dynamic Web server テンプレートを選択した場合、IIS Lockdown によって次の処理が実行されます。

安全性の低い次のインターネット サービスが無効になります。

File Transfer Protocol (FTP)

電子メール サービス (SMTP)

ニュース サービス (NNTP)

次のファイル拡張子が 404.dll にマッピングされ、スクリプト マッピングが無効になります。

Index Server

Web インターフェイス (.idq、.htw、.ida)

server side include (SSI) ファイル (.shtml、.shtm、.stm)

インターネット データ コネクタ (.idc)

.HTR スクリプティング (.htr)、インターネット印刷 (.printer)

IIS Samples、MSADC、IISHelp、Scripts、IISAdmin の各仮想ディレクトリが削除されます。

システム ユーティリティを匿名で利用すること、および、Web アクセス権限を使用して Web コンテンツ用ディレクトリに書き込みを行うことが、制限されます。

Web Distributed Authoring and Versioning (WebDAV) が無効になります。

URLScan ISAPI フィルタがインストールされます。

注: 従来型 ASP (つまり ASP.NET でない ASP) を使用していない場合は、Static Web server テンプレートを選択しないでください。このテンプレートを選択すると、ASP.NET ページに必要な基本機能 (例: POST コマンドのサポート) が無効になります。

ログ ファイル

IIS Lockdown を実行すると、変更内容を記録したレポート ファイル (ログ ファイル) が 2 つ生成されます。

%windir%\system32\inetsrv\oblt-rep.log。このログ ファイルには、概要情報が記録されます。

%windir%\system32\inetsrv\oblt-log.log。このログ ファイルには、詳細情報が記録されます。たとえば、匿名のインターネット ユーザー アカウントによるアクセスを禁止する目的で、"アクセス拒否" アクセス制御エントリ (Access Control Entry: ACE) を使用して構成された、プログラム ファイルなどが記録されます。また、このログ ファイルは、IIS Lockdown の Undo Change 機能に使用されます。

Web Anonymous Users グループと Web Application グループ

IIS Lockdown を実行すると、Web Anonymous Users グループと Web Application グループが作成されます。Web Anonymous Users グループには、IUSR_MACHINE アカウントが属しています。Web Application グループには、IWAM_MACHINE アカウントが属しています。アクセス権限は、IUSR_MACHINE アカウントや IWAM_MACHINE アカウントに直接付与されるのではなく、これらのグループに基づくシステム ツールとコンテンツ ディレクトリに付与されます。個別のアクセス権限を確認するには、IIS Lockdown ログ (%windir%\system32\inetsrv\oblt-log.log) を表示します。

404.dll

IIS Lockdown を実行すると、404.dll がインストールされます。クライアントによる実行を禁止したいファイルの拡張子を、この 404.dll にマッピングできます。詳細については、「手順 12: スクリプト マッピング」を参照してください。

URLScan

IIS Lockdown の実行時に URLScan ISAPI フィルタをインストールした場合、URLScan の設定情報が、IIS Lockdown の実行時に選択した Server Roles に組み込まれます。たとえば、Static Web server テンプレートを選択した場合、URLScan によって POST コマンドが阻止されます。

IIS Lockdown による変更内容を元に戻す

IIS Lockdown によって変更された設定情報を元に戻すには、iislockd.exe をもう一度実行します。ただし、URLScan ISAPI フィルタは無効になりません。詳細については、URLScan の削除に関するセクションを参照してください。

関連情報

IIS Lockdown ツールの詳細については、次の記事を参照してください。

IIS Lockdown の実行方法の詳細については、このガイドの [HOWTO] にある「[HOWTO] IISLockdown.exe を使用する方法」を参照してください。

IIS Lockdown のトラブルシューティングについては、マイクロソフト サポート技術情報の 325864 「[HOWTO] IIS Lockdown Wizard のインストール方法および使用方法」を参照してください。最もよく発生する問題は、IIS Lockdown の実行後に "404 File Not Found" という予期しないエラー メッセージが通知される、というものです。

IIS Lockdown の自動化については、マイクロソフト サポート技術情報の 310725「[HOWTO] IIS で IIS Lockdown Wizard を無人で実行する方法」を参照してください。

URLScan をインストールして構成する

URLScan は、IIS Lockdown の実行時に自動インストールされますが、IIS Lockdown を実行せずに、手動でダウンロードしてインストールすることもできます。

IIS Lockdown を実行せずに URLScan をインストールするには

1.

iislockd.exe を http://www.microsoft.com/japan/technet/security/tools/locktool.asp からダウンロードします。

2.

次のコマンドを実行し、URLScan セットアップ プログラムを抽出します。

iislockd.exe /q /c

URLScan は、安全性の低い文字列が含まれている要求を阻止するフィルタです。安全性の低い文字列としては、脆弱性を悪用する目的で使用されたことのある文字列 (例: ディレクトリ トラバーサルに使用される "..") などが挙げられます。このような文字列が含まれている要求は、%windir%\system32\inetsrv\urlscan ディレクトリに記録されます。

URLScan を構成するには、%windir%\system32\inetsrv\urlscan\urlscan.ini ファイル内の設定情報を使用します。

URLScan を使用した場合、悪意のある要求を阻止できるだけでなく、サービス拒否攻撃からサーバーを守り、要求が ASP.NET に到達するのを未然に防ぐことができます。このような機能を有効にするには、urlscan.ini ファイル内で、MaxAllowedContentLength、MaxUrl、MaxQueryString の各引数に制限を加えます。詳細については、このガイドの [HOWTO] にある「[HOWTO] URLScan を使用する方法」を参照してください。

URLScan による変更内容を元に戻す

URLScan を自動的に削除する方法はありません。URLScan に何か問題が発生した場合、URLScan を IIS から削除するか、または、拒否された要求をログに記録して問題点を解析することができます。拒否された要求をログに記録するには、urlscan.ini ファイル内で RejectResponseUrl=/~* オプションを使用します。

ISAPI フィルタを削除する手順の詳細については、後述の「手順 13: ISAPI フィルタ」を参照してください。

関連情報

URLScan ツールの詳細については、次の記事を参照してください。

URLScan の実行方法については、このガイドの [HOWTO] にある「[HOWTO] URLScan を使用する方法」を参照してください。

URLScan の構成作業と urlscan.ini ファイル内の設定情報については、マイクロソフト サポート技術情報の 326444「[HOWTO] URLScan ツールの構成方法」を参照してください。

手順 3: サービス

クライアントを認証しないサービス、安全性の低いプロトコルを使用するサービス、および高い特権を必要とするサービスには、リスクがあります。このようなサービスは、必要がなければ実行しないでください。不要なサービスを無効にすることにより、攻撃にさらされる部分を簡単に減らすことができます。また、修正プログラムの適用やサービス アカウントの管理など、保守作業の負担も軽減できます。

サービスを実行する場合は、そのサービスをセキュリティ保護し、また適切に保守する必要があります。具体的には、サービスを実行する際に必要最低限の特権しか持たないアカウントを使用したり、修正プログラムを適用してサービスを最新の状態に維持します。

この手順では、次の手順を実行します。

不要なサービスを無効にします。

FTP、SMTP、および NNTP が不要であれば無効にします。

ASP.NET State Service が不要であれば無効にします。

不要なサービスを無効にする

Windows サービスは、そのサービスの特権と機能を悪用してローカルとリモートのシステム リソースにアクセスする攻撃者に対して、脆弱です。このような攻撃を防ぐには、システムやアプリケーションで必要としない Windows サービスを無効にします。Windows サービスを無効にするには、[管理ツール] の [サービス] MMC スナップインを使用します。

注: サービスを無効にする前に、テスト環境または導入準備環境で、サービスを無効にした場合の影響を調べる必要があります。

Alerter、Computer Browser、Messenger、Netlogon、Simple TCP/IP Services、Print Spooler の各 Windows サービスは、Web サーバー上では一般に不要です。特に Netlogon は、ドメイン コントローラでのみ必要なサービスです。

Telnet サービスは Windows のインストール時に一緒にインストールされますが、既定では有効になりません。IIS 管理者は、Telnet を有効にすることがあります。ただし、Telnet は安全性の低いプロトコルなので、悪用されやすいという性質があります。ターミナル サービスは、より安全なリモート管理オプションを備えています。リモート管理の詳細については、後述の「リモート管理」を参照してください。

FTP、SMTP、および NNTP が不要であれば無効にする

FTP、SMTP、NNTP の各サービスは、安全性が低く悪用されやすいプロトコルの代表例です。これらのサービスは、必要がなければ使用しないでください。現在これらのサービスを実行している場合は、安全性の高い他のサービスで代用することを検討してください。どうしてもこれらのサービスを使用しなければならない場合は、セキュリティ保護する必要があります。

注: IIS Lockdown では、FTP、SMTP、および NNTP を無効にすることができます。

FTP サービスを使用していない場合は、悪用される危険を減らすため、無効にしてください。FTP サービスを有効にしていて、かつ、送信接続に利用できるようになっている場合、攻撃者は FTP を使用して、自分のシステム (リモート システム) から Web サーバーにファイルやツールをアップロードできます。ツールやファイルが Web サーバー上に配置されると、攻撃者は、その Web サーバー、およびそのサーバーに接続しているその他のシステムを攻撃できるようになります。

FTP プロトコルを使用している場合、FTP サイトにアクセスする際に使用するユーザー名とパスワード、および転送データは、エンコードも暗号化もされません。また、IIS では、FTP に対して Secure Sockets Layer (SSL) を使用することはできません。通信のセキュリティを確保することが重要であり、かつ、転送プロトコルとして WebDAV over SSL ではなく FTP を使用する場合、暗号化チャネル上で FTP を使用することを検討してください。暗号化チャネルの例としては、Point-to-Point Tunneling Protocol (PPTP) や Internet Protocol Security (IPSec) でセキュリティ保護された Virtual Private Network (VPN) などがあります。

ASP.NET State Service が不要であれば無効にする

.NET Framework をインストールすると、ASP.NET State Service (aspnet_state.exe) がインストールされます。このサービスは、ASP.NET 対応の Web アプリケーションと Web サービスに関する、プロセス分離モードにおけるユーザー セッション状態を管理するものです。既定では、このサービスは手動で開始するように構成されます。また、必要最低限の特権しか持たないローカルの ASPNET アカウントで実行されます。このサービスを使用してセッション状態を保持するアプリケーションがない場合、このサービスを無効にします。ASP.NET セッション状態をセキュリティ保護する手順の詳細については、モジュール 19「ASP.NET