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

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

2.Windows 2000 Serverのセキュリティ・ポイント(2)

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

Windows 2000 Serverのセキュリティ・ポイント(その3)
ファイル・システムの安全性

■ファイル・システムにはNTFSを使用する
 ファイル・システムの安全性を確保するには、何よりまずはFATではなくNTFSファイル・システムを使うことである。周知のとおり、FATファイル・システムではファイルやディレクトリのアクセス権管理は行えないからだ。最近は少なくなったが、メーカー製PCでは、Windows 2000搭載機でも、ドライブをFAT32でフォーマットして出荷している場合がある。たとえデフォルトがFAT32であったとしても、そのまま使い続けるのではなく、NTFSに変換するか(CONVERT.EXEコマンドを利用する)、フォーマットしてシステムを再インストールするようにする。

 アクセス権制御以外にも、NTFSには暗号化機能があり、これを利用してデータを暗号化しておけば、万一ハード・ディスクが盗まれたとしても、パスワードが破られない限り暗号化されたデータの内容は解読できない。またセキュリティとは直接関係ないが、NTFSでは、ファイルI/Oの際にジャーナルと呼ばれるログを記録しており、書き込み処理の途中で電源が遮断された場合などでも、データが完全に破損することなく、復旧できるというメリットがある。このような理由から、必ずNTFSを使うようにする。

■ユーザーに与えるアクセス権は必要最小限にする
 ファイルとディレクトリ管理におけるアクセス権設定の基本は、ユーザーに与える権限を必要最小限に抑えることである。管理が面倒だからといって、Everyoneにフルアクセス権限を与えたり、きっと将来使うようになるからといって、当面は不要なユーザーにアクセス権を与えたりするのは間違いだ。権限を与えるユーザーやグループを最小限に絞り、与える権限も必要最小限にとどめることで、ファイルの不正な読み込みや書き込みの事故を防止できるようになる。

■サービス用アカウントのアクセス権を適切に設定する
 ユーザーがIISにアクセスしたとき、ファイルI/OなどのWindowsシステム・レベルの処理は、IISをインストールすると追加されるサービス用アカウント(IUSR_〜、IWAM_〜など)の権限で実行される。従ってこれらのサービス用アカウントには、Webアクセスのみ可能な権限を与え、ファイルの書き込み権限やプログラムの実行権限は与えないようにする。こうすれば、最悪の場合IISが乗っ取られても、Windowsシステムのレベルで実行可能な処理を制限できる。Guestなどは明示的にアクセスを拒否する。

■安易にEveryoneを使わない
 Windowsには「Everyone」というユーザー・グループが用意されている。これは文字通り「だれでも」という意味で、このEveryoneにアクセス権限を与えるということは、認証されたかどうかにかかわりなく、全ユーザーに対してアクセスを許可するということになる。例えば簡易な社内ネットワークでは、共有資源のアクセス権としてEveryoneに権限を与えておけば、将来メンバーが増えた場合でも、特に設定を変えることなく新メンバーも共有資源にアクセスできるので便利だが、外部に資源を公開するサーバなどでは、Everyoneを安易に使ってはならない。

 Windowsシステムには「Authenticated Users(認証済みユーザー)」というアカウントがあるので、アクセス権設定ではこれを使うようにし、認証されたユーザーだけが資源にアクセスできるようにする。

■適切なACLを指定する。
 ファイルのアクセス権については、だれがどのファイルに、どのようなアクセスができるのかを制限する適切なACL(Access Control List)を設定する必要がある。マイクロソフトは、Common Criteria(一般標準)と題して、安全なシステムを構築するために、Windows 2000のデフォルトの状態から変更すべきアクセス制限のポイントをまとめて公表している。

 これは非常に厳しい制限になっている。実環境では、この設定をベースとして、必要な部分は制限を緩め、必要な部分はさらに制限を強化するとよい。

■MS02-064を正しく対策する
 Windows 2000の出荷時設定では、攻撃者がウイルスやワームのプログラムをルート・ディレクトリに配置できてしまうという問題がある。これがセキュリティ情報MS02-064としてレポートされている「Windows 2000 の既定のアクセス権により、トロイの木馬プログラムが実行される (Q327522) (MS02-064)」である。こうして、例えばexplorer.exeなど、Windowsシステム・プログラムと同じ名前のウイルス・プログラムが置かれると、本来のシステム・プログラムよりも優先してルート・ディレクトリのウイルスプログラムが実行されてしまう。この対策は前出のCommon Criteriaにも記述されているが、上記セキュリティ情報ページを参照して、ルート・ディレクトリのアクセス権が正しく設定されていることを確認する。

Windows 2000 Serverのセキュリティ・ポイント(その4)
匿名アクセスの拒否

 匿名ユーザー(Anonymous User)は、認証を受けていないユーザーであり、サーバから見れば信頼できないユーザーである。従って本来はシステムにアクセスする必要がない。しかしWindows 2000のデフォルト設定では、レジストリの読み出しが可能になっており、またLSA(Local Security Authority)/SAM(Security Account Manager)というセキュリティ・データベースから、共有の一覧とアクセス権、およびアカウント/グループの一覧を読める。「パスワード」のところで触れたとおり、攻撃者にユーザー名が知れてしまうと、パスワード攻撃への防御が甘くなる。またLSA/SAMからの情報取得では、管理者のユーザー名だけでなく、各種サービスが使うユーザー名や、一般ユーザーのユーザー名もすべて攻撃者の手に渡る危険がある。そして通常、一般ユーザーの中には、パスワード設定が甘く、容易にパスワード攻撃の突破を許すものも少なくない。

 このように、外部にアカウント情報を漏らさないために、匿名アクセスを明示的に拒否する必要がある。これには、ローカル・グループ・ポリシーを利用して設定を行う(詳細は前述したチェック・リストを参照)。

Windows 2000 Serverのセキュリティ・ポイント(その5)
不要なファイル共有の削除

 プロジェクトごとに共有ディレクトリを作り、メンバー間でファイルを共有するというのは一般的である。これはこれでよいのだが、プロジェクトが終わって使われなくなった共有ディレクトリを、そのまま放置するのは危険だ。不要となった共有ディレクトリは、鋭意削除するようにする。

 Windowsには管理共有と呼ばれるデフォルトの共有ディレクトリがある。これは「ADMIN$」、「<ドライブ名>$(C$やD$など)」などだ。これらは本来、ドメインの管理者が、リモートからコンピュータを管理するために用意されたものである。逆にいえば、ドメインの管理者アカウントの認証が突破されたり、ローカル管理者の認証が突破されたりすると、ハード・ディスク内のすべてのデータを盗み出したり、OSの内部を自由に書き換えたりできるようになってしまう。

 今回のように、外部に向けてサービスを提供するようなサーバでは、管理共有はすべて削除しておくべきである。これらのアクセスを禁止すれば、システム・ファイルなどが盗み出される危険を低減できる。ただしその分、管理は面倒になる(リモート管理ができなくなる)。安全を取るか、利便性を取るかは、サーバの設置場所や利用目的に応じて切り替えるべきである。少なくとも今回のように、インターネット向けに不特定多数のサービスを提供するサーバでは、管理共有は必ず削除しなければならない。

Windows 2000 Serverのセキュリティ・ポイント(その6)
最小限のサービス

 Windowsでは、サービスと呼ばれるシステム・プログラムがOSの内部で多数実行され、さまざまなシステムの機能を実現している。コントロール・パネル−管理ツールにある「サービス」アイテムを実行すると分かるとおり、デフォルトの状態では、多数のサービスが起動されている。

Windowsのサービス
Windowsでは、さまざまなシステム・プログラムがサービスとして実行されている。しかし実際に必要なサービスは一部である。

 しかしWebアプリケーション・サーバなど、用途が限られている場合には、必要なサービスはごく一部でしかない。具体的にIISを使うだけなら、ファイル共有を実現するサービス、認証サービスを停止することも可能である。システムの安全性を高めるためには、不要なサービスはすべて無効にし、必要なサービスだけを起動するようにする。

 ここで注意すべきは、不要なサービスは、「停止」ではなく「無効」にすることだ(設定は前出のコントロール・パネル−「サービス」アイテムで行える)。「停止」でもサービスは停止されるが、システムを再起動するとサービスが再度実行されてしまう。「無効」を選択すれば、明示的に「有効」を指定しないかぎり、システムを再起動してもサービスは起動されなくなる。

 最大の難問は、具体的にどのサービスを「無効」にすればよいのか、ということである。残念だが王道はない。システムの用途などにより、何を「無効」にして何を残すかはケース・バイ・ケースである。この判断を厳密に行うには、目的に応じてどのサービスが必要で、どれが不要かを管理者が自身で判断する必要がある。これには、Windowsシステムの成り立ちをよく知るしかない。

 参考までに、「これだけは動いていないと、OSの動作に支障をきたす」とマイクロソフトが考えているサービスを挙げると次のようになる。

サービスの名前 内容
Event Log イベント・ログの記録
Logical Disk Manager ディスク管理
Network Connections ネットワークの接続管理
Plug and Play デバイス管理
Protected Storage 証明書、認証キーなどの重要キーの管理する
Remote Procedure Call リモート・プロシージャ呼び出し
Security Account Manager ローカル・ユーザー・アカウントの管理
Windows Management Instrumentation Windowsをリモート管理するためのインターフェイスとオブジェクトの提供
Windows Management Instrumentation Driver Extensions システム管理情報のドライバ・インターフェイス
OSの動作に最低限必要なサービス

 これらのサービスを停止すると、OSとして正しく機能できなくなる可能性が高い。例えば最後の2つ(Windows Management Instrumentation:WMI関連)は、Windowsをリモート管理するためのサービスで、これを停止するとOSのパフォーマンス情報などが取得できなくなってしまう。またRemote Procedure Callを停止すると、IISのサービス・マネージャが使用不能になる。Event Logを停止すると、イベントが取得できなくなり、システムが攻撃を受けてもそれを検出できなくなる。

 上記最低限のサービスに加え、どのサービスを有効化するかは、リソースキットなどの情報を頼りに調査する必要がある。


 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 記事ランキング

本日 月間