「面倒なので普段使いのアカウントを管理者アカウントにしてしまおう」
Windows XPを何年か使い続けている人は、もうユーザーアカウント設定があったことすら忘れてしまったかもしれない。いま、実際にこのような設定で使い続けている人や、過去にこう思った人は多いのではないだろうか?
「取りあえず管理者アカウントで」と思考を停止してしまうことは、セキュリティ上のリスクを増大させてしまう。また、新OS「Windows Vista」ではUAP(User Account Protection)が搭載され、管理者アカウントの権限の扱いが変わる。いま一度、管理者アカウントについて再考してみよう。
UNIXの世界で、「常に“root”などのシステムに対する特権があるアカウントでログインして利用している」といえば驚かれてしまう。こういう運用は、セキュリティの常識としてあり得ないことになっている。
rootは、Windowsならば「Administrators」などの権限を持った管理者アカウントに相当する。つまり常識としてあり得ないことなのに、Windowsになるとこのことを許容している人が多い。
管理者アカウントを利用することのリスクを知っているはずのシステム管理者ですら、常に管理者アカウントでログインするのが珍しくないぐらいである。もしかすると彼らは「自分はセキュリティに精通しているので、自分だけは大丈夫」という法則にのっとっているのかもしれないが、そのぐらいUNIXとWindowsでは管理者アカウントの取り扱いに隔たりがあるということだ。
セキュリティを高めるという点から考えると、UNIXの世界のような「最小特権の原則」は有用なアプローチである。オレンジブック【注】では、この最小特権の原則を「システム内の各対象に対して、許可されたタスク実行に最低限必要な特権(または最小限の許可)のみ与える」として定義し、「この原則の適用により、偶発的、誤り、または不正な使用によって発生する損害を軽減できる」と述べられている。
【注】オレンジブック
米国防総省下のNSA内のNCSCによるコンピュータ製品評価基準「The Department of Defense Trusted Computer System Evaluation Criteria」の通称
ウイルスやスパイウェア、rootkitなどのいわゆる悪意のあるプログラムによる被害が増減する要因として、アカウントは大きくかかわってくる。悪意のあるプログラムが動作しているアカウントが、管理者アカウントなのか非管理者アカウントなのかによって、システムに与える影響は大きく異なるのだ。
それらの悪意のあるプログラムを起動するのは、ログイン中のユーザーであることが多い。そのため、それらのプログラムはそのユーザーの権限で動作することになる。
もし、ユーザーが管理者アカウントだったとしたら、基本的に悪意のあるプログラムは何でも実行できてしまうため、OSの根幹にかかわる部分やすべてのユーザーに影響するようなことが起きる可能性がある。しかし、システムへのアクセスが制限されている非管理者アカウントならば、被害を最小限にとどめることができる可能性が高い。
【Windows XPのアカウント】
Windows XPのアカウントには、以下のようなデフォルトグループがある。
ドメインコンピュータ上には、以下のような管理者グループがある。
ドメインに参加した場合、既存設定のグループに加えて、Domain UsersはローカルUsersのメンバーになり、Domain AdminsグループはローカルAdministratorsのメンバーになる。つまり、Domain Adminsグループのメンバーは管理者権限でコンピュータにログインできる。
簡単にいうと、非管理者アカウントを日常使うことは「面倒」なのである。アカウントの使い分けにかかわらず、セキュリティ対策を実施することはとにかく面倒なものだ。しかしながら、Windows XPで非管理者アカウントを使って日常業務を行うことは、苦痛を伴うといっても過言ではないレベルの面倒さなのだ。
UNIXの場合、suやsudoというコマンドによって、一時的に管理者アカウントとして振る舞うことができる機能が用意されていて、これを使うことが一般的になっている。
一方、Windows XPでは管理者アカウントの権限を得るためには、一度ログアウトして管理者アカウントでログインし直さなければならない。Windows XPでは、ログインの際にはさまざまなプロセスが起動するので、この切り替えには時間がかかってしまう。コマンド1つのお手軽さからは程遠い。
また、管理者アカウントでないとインストールや実行できないアプリケーションも多く存在する。また、データを書き込むようなアプリケーションの利用も制限されてしまう。管理者アカウントでないと動作しないアプリケーションの作りがよいともいえないが、そういうアプリケーションを作ってしまう開発者がいるぐらい非管理者アカウントの存在感は薄い。
これらのことが最小特権の原則に従って行動することを妨げる要素となっているのだ。管理者アカウントでログインすることを日常的にしてしまったのは、Microsoftにも責任の一端があることは否めない。
管理者アカウントでないと、いくつかの弊害が生じるのは先に述べた。しかし、あなたの日常の業務を見直してみよう。本当に管理者アカウントである必要があるのだろうか?
WebブラウザでのWebサイト利用、メールの読み書き、ドキュメント作成や開発ツールによるプログラミングなど日常業務の大部分は、特に管理者アカウントである必要はなく、非管理者アカウントでも問題ないのではないだろうか。
非管理者アカウントをメインアカウントにして、管理者アカウントが必要になればその都度ログインし直すという運用を試してみてはいかがだろうか。
もし、非管理者アカウントをメインアカウントにしたとき、「その都度、管理者アカウントでログインし直す」という点が面倒なのであれば、Secondary Logonサービスを試してほしい。これは現在ログインしているユーザーとは別の権限でプログラムを実行できるようにするものである。利用するためには、runasコマンドかMakeMeAdminを使うのが一般的だ。
runas /profile /user:ncc1701a\administrator cmd
このコマンドを実行することで、「ncc1701a」というマシン上でユーザープロファイルを読み込みながら、administratorというアカウントでコマンドプロンプトを起動することができる。
runasコマンドの書式は以下のようになる。
runas /profile /user:<ユーザー名> プログラム
詳細については、「一時的にほかのユーザー権限でプログラムを実行する方法(runasコマンドを利用する方法)」などが参考になる。
【関連リンク】
一時的にほかのユーザー権限でプログラムを実行する方法(runasコマンドを利用する方法)
http://www.atmarkit.co.jp/fwin2k/win2ktips/758runascmd/runascmd.html
Secondary Logonサービスを利用して以下のプロセスを自動的に連続して実行するスクリプトである。
詳細とプログラムの入手については、「Aaron Margosis' WebLog : MakeMeAdmin -- temporary admin for your Limited User account」を参考にしていただきたい。
【関連リンク】
Aaron Margosis' WebLog : MakeMeAdmin -- temporary admin for your Limited User account
http://blogs.msdn.com/aaron_margosis/archive/2004/07/24/193721.aspx
管理者アカウントと非管理者アカウントを使い分けるとき、現在のアカウントが何か分かると便利だ。それには、Internet ExplorerおよびWindowsエクスプローラに、現在のユーザーの特権レベルを示すツールバーを表示する「PrivBar」がお勧めだ。
詳細とプログラムの入手については「Aaron Margosis' WebLog : PrivBar -- An IE/Explorer toolbar to show current privilege level」を参考にしていただきたい。
【関連リンク】
Aaron Margosis' WebLog : PrivBar -- An IE/Explorer toolbar to show current privilege level
http://blogs.msdn.com/aaron_margosis/archive/2004/07/24/195350.aspx
いまさらメインアカウントとして、非管理者アカウントに移行するのが大変だとか面倒だという人には、「DropMyRights」というツールの利用がお勧めだ。特殊なショートカットを作ることで、指定したプログラムをUsers権限で動作させるものだ。
Users権限で動作することで、system32以下にファイルを作成できなくなったり、ファイアウォールを無効化できなくなったりと、悪意のあるプログラムに対して効果が期待できる。
ツールインストール後の作業も非常に簡単である。
1.「ショートカットの作成」を実行し、「項目」に下記のように入力する。前半がDropMyRightsへのパスで、後半が起動したいプログラムへのパスだ。
D:\MSDN\DropMyRights\DropMyRights.exe "C:\Program Files\Internet Explorer\iexplore.exe"
2.ショートカットの名前を任意のものに変更する。例えば、「Internet Explorer (non-admin)」などだ。
3.ショートカットのプロパティを開き、「実行時の大きさ」を「最小化」に変更する。
あとはこのショートカットを使って起動するだけで、管理者アカウントでログインしていたとしても、IEがUsers権限で動作する。プログラムランチャーなどをこの方法で起動しておけば、そこから起動されるプログラムもUsers権限で動作することになる。
ただし、あくまでもログインは管理者アカウントで行っているので、効果は特定のプログラムに対してしかなく、あくまでその場しのぎ的なものである。詳細とプログラムの入手については「Browsing the Web and Reading E-mail Safely as an Administrator」を参考にしていただきたい。
【関連リンク】
Browsing the Web and Reading E-mail Safely as an Administrator
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncode/html/secure11152004.asp
Windows Vistaで導入されるUAPは、管理者アカウントを利用していたとしても通常は制限されたユーザーの権限で動作し、管理者権限が必要なプログラムを実行する際に、ユーザーに権限の確認とパスワード入力で確認を求めるというものである。
先に紹介したSecondary LogonサービスやDropMyRightsなどを使うよりも、よほど利便性とセキュリティレベルが高いものが期待できる。ただし、権限の取り扱いを変えてしまうため、既存のアプリケーションは場合によっては修正が必要になる可能性もある。
ここに挙げたように管理者アカウントの取り扱いを見直し、アカウントに起因するセキュリティリスクを軽減したとしても、ユーザーが明示的にインストールや実行してしまうプログラムが悪意があるものかどうかを見極めることは難しい。依然、そのほかのセキュリティ対策や対策ソフトウェアなどと併用して運用することが求められている。
上野 宣(うえの せん)
株式会社トライコーダ代表取締役
ネットワーク・セキュリティ監査、セキュリティ対策・運用改善コンサルティングを主な業務としている。
情報セキュリティを世に広げるべく、講演や執筆活動とさまざまな方面で活動中。近著に「今夜わかるメールプロトコル」、「今夜わかるTCP/IP」、「今夜わかるHTTP」(共に翔泳社)がある。個人ブログは「うさぎ文学日記」
Copyright © ITmedia, Inc. All Rights Reserved.