特集
Windowsセキュリティセミナー・レポート

Windows環境におけるセキュリティ強化のポイント(後編)

3.IISのセキュリティ・ポイント

デジタルアドバンテージ
2003/02/28

 今回は、前回に引き続き、Windowsシステムのセキュリティ対策のうち、IISとSQL Server 2000における具体的なセキュリティ対策について解説する。

IIS 5.0のセキュリティ:5つのセキュリティ・ポイント

 Code RedやNimdaの影響で、いまなおネットワーク管理者の中には、「イントラネット向けはともかく、だれが攻撃を仕掛けてくるか分からないインターネット向けに公開するWebサーバとしては、IISは使いたくない」と考えている人が少なくない。これはあながち、根拠のない偏見ともいえないかもしれない。実際のところWindows 2000に組み込まれたIIS 5.0のデフォルト設定では、インターネット向けにサービスを提供するという観点ではあまりにも無用心すぎる部分が見受けられる。標準設定が「機能優先」で、「可能なことはできるだけデフォルトで有効化しておき、不要であれば管理者が無効化すればよい」という思想に基づいているためだ。従ってIISを使ってインターネット向けにサービスを提供するという今回の想定では、管理者が必要な機能とそうでない機能を選択し、不要な機能は停止したり削除したりする必要がある。

 Windows 2000の発表後、マイクロソフトは、機能性よりも安全性を重視する方針に転換し、IISの多くの機能(あるいはIISのサービス自体)を停止するツールを追加提供している(Lockdownツールなど。詳細は後述)。また2003年4月発売予定のWindows Server 2003では、管理者が明示的にインストールしないかぎり、IIS(IIS 6.0)はインストールされない設定に変更された(Windows Server 2003のIIS 6.0の詳細については、「Windows Server 2003完全ガイド:IIS 6.0の概要」を参照)。

 今回想定するシステムにおけるIIS 5.0のセキュリティ・ポイントとしては、次の5つが挙げられる。

ポイント 内容
IISのアクセス権 NTFSの機能を使ってアクセス権を適切に管理する。通常のページは「読み取り権」のみに設定。実行アクセス権は「スクリプトのみ」に設定、CGIはほかのコテンツと分離して管理する
不要な機能の停止 脆弱性を含むIIS付属のサンプルを削除、WebDAVの停止、スクリプト・マッピングの削除
Lockdown/URLScan Lockdownは、上記「不要な機能の停止」などを自動的に行うツール。URLScanは、外部からのWebアクセスをフィルタリングし、IISに対する不正なアクセスを阻止する
Webアプリケーション クロスサイト・スクリプティングの防衛、Cookieの安易な利用を行わない
ログの記録 不正アクセスの調査に必要。情報の取得項目を正しく設定する

IIS 5.0のセキュリティ・ポイント(その1):IISのアクセス権制御

 IISを利用して公開されたWebサーバへのアクセスは、IISのレベルと、OS(Windows)レベルの2段階で制御される。これを図にすると次のようになる。

IISにおけるWebのアクセス制御
IISによって公開されたWebへのアクセスは、IISのレベル、OSレベルという2段階で制御される。Webサーバを安全に運用するには、それぞれのレベルで必要最低限のアクセス権を許すように設定する。

■IISレベルのアクセス制御
 IISは、Webページの表示要求によるファイルの読み出し、ファイルの書き込みといった、外部から何らかのリクエストにより、その要求を受け入れるか、拒否するかというチェックを最初に行う。これが図のIIS(ピンク色)の「アクセス権」の部分である。クライアント側でWebページを表示するには、そのユーザーに対し、IISの側で「読み込み」のアクセスが許可されている必要がある。以下、クライアント側からサーバ側に書き込みを行うには「書き込み」の権限が、サーバのディレクトリ内部にあるファイル一覧を表示するには「ディレクトリ参照」の権限が、プログラムを実行するには「実行アクセス権」の権限がそれぞれ必要だ。逆に、ユーザーに対して「読み込み」のアクセス権すら与えられていない場合には、Webページを表示することもできない(内部的に使用するデータなどの場合は、このようなアクセス権を設定することがある)。

IISのアクセス権設定
セキュリティを守るためには、必要にして最小限のアクセス権だけを設定するようにしておく必要がある。不必要なアクセス権を許可していると、外部から攻撃される可能性がある。
  Webサイトごとのアクセス権は、サイトの[プロパティ]の「ホーム ディレクトリ」タブで設定し、サイト内の各ディレクトリのアクセス権は、それぞれのディレクトリの[プロパティ]−[ディレクトリ]タブで設定する。
  アクセス権の設定。
  スクリプトと実行ファイルのアクセス権の設定。

 通常のWebサーバでは、.html(.htm)や.gif、.jpeg(jpg)など、Webページを構成するファイルに対してだけ、読み取りのみの権限を与えればよい。ディレクトリ参照や書き込み権限を与える必要はない。

 JScript(JavaScript)やVB Scriptなどのスクリプト実行を許可する場合、またCGIの実行を許可する場合には、IISのアクセス権として「実行アクセス権」を許可することになる。実行アクセス権には2種類があり、CGI以外のスクリプト実行では実行アクセス権として「スクリプトのみ」を設定する。一方、CGIの実行を許可するには、「スクリプトと実行」の設定が必要になる。

■NTFS(OS)レベルのアクセス制御
 IISレベルのアクセス権チェックの次は、NTFS(OS)レベルのユーザー認証が行われる。ユーザー認証の方法には、「匿名(不特定多数にアクセスを許す)」「基本認証(パスワード入力を要求。パスワードはプレーン・テキストで送信)」「ダイジェスト認証(パスワード入力を要求。パスワードのハッシュ値を送信)」「統合Windows認証(通常のWindowsドメイン認証のメカニズムを利用)」「証明書」の5種類がある。

 このうち不特定多数のユーザーに対してアクセスを許可する一般的なWebサーバでは、「匿名」ユーザーでのアクセスを許可する。この場合、OSレベルでは、「IUSR_〜」「IWAM_〜」というユーザーとしてアクセス要求が処理される。従ってIISのレベルでアクセスが許可されていても、OSレベルで「IUSR_〜」「IWAM_〜」といったユーザーに対してアクセス権限が与えられていない場合には、Webアクセス(およびスクリプト実行)は失敗する。

 IISレベルのアクセス権設定と同様に、重要なことは、Webサーバでの各種サービスを提供するうえで、必要最小限のアクセス権限だけを許可することである。静的なWebページだけを公開するなら、「読み取り」権限だけがあればよい。またCGI以外のスクリプト実行も、「読み取り」権限だけで利用可能である。JScriptやVB Scriptなどは、スクリプトといっても、IISのレベルでコードが実行されるだけで、OSから見れば通常のデータ・ファイルの読み込みでしかないためだ。

 しかしCGIについては、OS側で実行されるため、「実行」権限を与える必要がある。これらをまとめると次のようになる。

コンテンツの種別
読み取り
実行
書き込み
静的コンテンツ
必要
不要
不要
スクリプト
必要
不要
不要
CGI
必要
必要
不要
コンテンツのタイプとNTFSの設定

 コンテンツ・タイプが何にせよ、「書き込み」権限は許可する必要がない。外部に向けて匿名アクセスを許すサーバでは、絶対に「書き込み」権限を許可してはいけない。これを許可してしまうと、FrontPageをインストールしているユーザーが、うっかりIEの編集ボタンをクリックすると、サーバのコンテンツが書き換えられてしまう。実際、このような設定のサーバに対し、うっかりコンテンツを書き換えてしまい、不正アクセスだとして逮捕されてしまった例があるほどだ(ユーザーからすれば災難である)。もちろん、悪意を持って書き換えることも簡単である。

 いま述べたように、CGIに対しては実行権限を与える必要がある。しかしこの場合でもCGI関連ファイルは通常の静的なWebページやスクリプトとは別のディレクトリに格納し、そのディレクトリに限り実行権限を許可する。実行権限が与えられていなければ、万一ワームが侵入したとしても、プログラムは実行できないので、ほかへの感染活動は行えない(Nimdaワームは、多くのサーバで実行権限が不用意に与えられていたため、感染が広がった)。

IIS 5.0のセキュリティ・ポイント(その2):不要な機能の停止/削除

 残念ながらデフォルトの状態では、IIS 5.0には余分な機能が提供されている。具体的には、IISのサンプル・アプリケーションやWebDAV、スクリプト・マッピングなどである。

 IISのサンプルは、IISのさまざまな活用法を具体的に例示する目的で提供されているものだ。しかしこれらはあくまでサンプルであって、外部にサービスを公開するWebサーバではインストールすべきでない。これらのサンプルは、\IISSamplesディレクトリ(IISサンプル)や\IISHelp(IISドキュメント)、\MSADC(データ・アクセス・サンプル)に置かれる。これらのサンプルがインストールされている場合は削除する。

 またIIS 5.0には、イントラネットでの利用を想定して、OSのパスワード・リセットを可能にするIISADMPWD仮想ディレクトリがある。このディレクトリは、IIS 5.0を新規インストールしたときには作成されないが、IIS 4からIIS 5にアップグレードした場合には削除されずに残る。IISADMPWD仮想ディレクトリが存在する場合は削除する。

 WebクライアントからWebサーバへのドキュメント発行を可能にする機能として、WebDAVがある。しかしこの機能もイントラネット向けのものなので、今回のように外部に向けて公開するサーバでは不要である。

 IIS 5.0では、幾つかのファイルの拡張子に応じて、それを処理するDLLがあらかじめマッピングされている。これにより、要求されたファイルの拡張子に応じた処理が可能になるのだが、使う予定のない不要なマッピングを残したままにしておくと、それらに含まれる(未対策の)脆弱性やアクセス権設定の不備などから、システムに侵入される可能性がある。これらについては、マッピングを削除しておく。削除すべきマッピングとしては次のようなものがある。インターネット・サービス・マネージャの[WWWサーバー]のプロパティから削除することができる。

エントリ 機能
.htr Webベースのパスワード・リセット
.idc インターネット・データベース・コネクタ
.stm/.shtm/.shtml サーバサイド・インクルード
.printer インターネット印刷
.htw/.ida/.idq インデックス(検索)サービス

IIS 5.0のセキュリティ・ポイント(その3):IIS Lockdown/URLScanツール

 以上、IIS 5.0で制限すべきポイントについてまとめた。万一の場合に迅速かつ的確に対処するには、こうしたIISの成り立ちについて理解しておく必要があるが、IISをセットアップするたびに、これらを手作業で設定するのは面倒だし、何より設定もれや設定ミスが起こらないとも限らない。このためマイクロソフトは、一連のセキュリティ設定を自動的に行う「IIS Lockdown」ツールを提供している。

 IIS Lockdownツールは、匿名ユーザーのアクセス制限(システム・ファイルへのアクセス拒否など)、サンプルや不要な機能の削除と無効化、ログ・ファイルの保護(ログについては後述)などを行うためのツールである。ただし、IIS Lockdownツールも万能ではない。用途や状況によっては、IIS Lockdownツールによって、必要な機能まで制限されてしまうことがある。具体的には、.NET Enterprise Servers製品群などのミドルウェアとIISを組み合わせてアプリケーション・サーバを構築する場合などは、幾つかの機能を有効化しておく必要がある。IIS Lockdownツールでは、用途に応じて適切にアクセス権設定を行うために、幾つかのテンプレートを提供している。用途と目的に応じて、最も近いテンプレートを選び、そこから必要なカスタマイズを施すようにする。

 IIS Lockdownツールをインストールすると、URLScanと呼ばれるツールも合わせてインストールされる。URLScanは、外部からのWebアクセスに対し、要求されたリクエストをチェックして、それが不正(不要)なものであれば、リクエストをIISに届ける前に削除してしまうツールである。例えば、CGIを使っていないサイトで、exeファイルへのアクセスが要求されると、URLScanがこれを削除する(ワームを仕掛けて実行する場合などがこれに相当する)。要求はIISへは送られない。これ以外にも、極端に長いリクエスト、異なる文字セットを使ったエンコード、通常はあり得ないリクエストの文字列シーケンスなどがチェックできる。URLScanはISAPIフィルタとして実装されている。

 例えば、バッファ・オーバーフローの脆弱性を悪用する攻撃では、通常では使われないような非常に長いWebサーバへのリクエストが送られる。URLScanを使ってリクエストの長さを制限しておけば、こうした攻撃を防止できる可能性がある。HotFixの適用を免除するものではないが、必要なHotFixが適用されていない場合でも、URLScanによってIISを攻撃から守れる可能性がある。ただし、正常なアクセスまで拒否してしまわないように、URLScanについても設定は慎重に行わなければならない。

IIS 5.0のセキュリティ・ポイント(その4):Webアプリケーション

 これはIIS自体の話ではないが、最近は静的なWebページをホストするだけでなく、ユーザーからの入力を受け付ける双方向サービスを提供するのも一般的である。例えば、ユーザー登録を前提として何らかのサービスを提供するなどだ。

 この場合には、Webフォームで入力を受け付けて、サーバ側のWebアプリケーションで入力を処理し、次のページをダイナミックに生成するようなことも多い。このようなサイトを作るときには、クロスサイト・スクリプティングに注意しなければならない。

 クロスサイト・スクリプティング(cross-site scripting:CSS。場合によっては“cross”を“X”と見なしてXSSと略すときもある)は、Webアプリケーションのセキュリティ・ホールを狙った不正アクセス手法の1つである。Webアプリケーション側では、フォームに入力されたデータを使って次のアクション(次ページの表示など)を行うことになるが、このときデータとして特殊なコードが入力されると、本来は想定しない処理(別サイトへの情報送信など)が可能になってしまう場合がある(詳細は用語解説を参照)。これがクロスサイト・スクリプティングである。クロスサイト・スクリプティングを防止するには、ユーザーから入力されたデータを不用意に次の処理に使わず、特殊文字の検査などを実施する。この処理はサニタイジング(sanitizing:「sanitize」は「無菌化する」の意)と呼ばれる。

 具体的なサニタイジングのタイミングは、サーバ・オブジェクトを使ってHTMLデータをエンコードするときやHTMLデータを生成する直前に行う。Response.HTMLEncodeメソッドを使用したり(ASPの場合)、(間違って解釈される可能性のある)特定の文字をエスケープするか、削除する。HTMLデータに埋め込まれるユーザーからの入力データは、すべてサニタイジングの対象とする。

 Webアプリケーションとして注意すべきもう1つのポイントはCookieだ。基本的にセッションの概念がないWebアクセスにおいて、セッション管理を可能にしたり、特定のユーザーを識別したりする手段として、Cookieはいまでもよく使われている(@ITでも、Cookieを使ってユニーク・ユーザーを計数している)。

 Web環境では歴史あるCookieだが、残念ながらいまだに安全な使い方は必ずしも浸透していない。例えば、ユーザー名やパスワードをそのままCookieに入れてしまったり、セッション管理用の情報をそのまま入れてしまったりしているサイトがある。このようなサイトでCookieの情報が盗まれると、ほかのユーザーになりすましてサイトにアクセスしたり、ショッピング・サイトでは、買い物途中のやり取りをのぞき見たり、変更したりできてしまう危険がある。

 原則として、Cookieには秘密情報は入れてはならない。またセッション管理を行う場合には、Cookieを使って自分自身で実装するのではなく、IISやミドルウェアが提供するセッション管理機能を利用するようにする。セッション管理を安全に行うには、高度な知識と技術が求められる。安全なサイトを目指すなら、自己流で設計するのは慎むべきである。

IIS 5.0のセキュリティ・ポイント(その5):ログの記録

 IISの最後のセキュリティ・ポイントはログである。ログを記録したからといってサイトが安全になるわけではない。しかしログを記録しないと、サイトが攻撃されているかどうか、攻撃によって侵入を許してしまったかどうかなどが分からない。攻撃や侵入を検知できなければ、何があっても対策の施しようがない。不正アクセスによって生じた被害に対して訴訟で争う場合でも、証拠となるログがなければ不正アクセスの存在を立証できない。

 これにはIIS 5.0の拡張ログ設定を確認して、必要な情報を間違いなくログに記録するようにする。具体的には、以下の拡張プロパティを有効にする(設定は、インターネット・サービス・マネージャの[Webサイト]のプロパティ・ダイアログにある[Webサイト]タブで行える)。

  • ユーザー名(cs-username)
  • メソッド(cs-method)
  • URI Stem(cs-uri-stem)
  • URIクエリ(cs-uri-query)
  • プロトコルの状態(cs-status)
  • Win32の状態(cs-win32-status)
  • ユーザー エージェント(cs(User-Agent))
  • サーバーIPアドレス(s-ip)
  • サーバー ポート(s-port)

 このうち最後の2つは、1台のコンピュータで複数のサイトをホストしている場合に限り有効なプロパティである。


 INDEX
  [特集] Windowsセキュリティセミナー・レポート
  Windows環境におけるセキュリティ強化のポイント
    1.Windows 2000 Serverのセキュリティポイント(1)
    2.Windows 2000 Serverのセキュリティポイント(2)
  3.IISのセキュリティ・ポイント
    4.SQL Server 2000のセキュリティ・ポイント
 
 特集


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間