「面倒なので普段使いのアカウントを管理者アカウントにしてしまおう」
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のアカウントには、以下のようなデフォルトグループがある。
- Administrators:コンピュータ/ドメインに完全なアクセス権がある
- Power Users:いくつかの制限はあるが、ほぼ管理者権限を持つ。また、Windows システムフォルダ内のファイルへのアクセス許可も持つ
- Users:ユーザー権限が制限されていて、故意にまたは誤ってシステムに変更を加える許可を持たない。“制限付きユーザーアカウント”と呼ばれている
- Guests:アカウントがさらに制限されていない限り、既定ではUsersと同じ権限を持つ
ドメインコンピュータ上には、以下のような管理者グループがある。
- ローカルAdministratorsグループ
- ローカルPower Usersグループ
- Domain Adminsグループ
- Network Configuration Operatorsグループ
- ローカル管理者グループのメンバーシップを持つすべてのドメイングループ
ドメインに参加した場合、既存設定のグループに加えて、Domain UsersはローカルUsersのメンバーになり、Domain AdminsグループはローカルAdministratorsのメンバーになる。つまり、Domain Adminsグループのメンバーは管理者権限でコンピュータにログインできる。
なぜ、Windows XPでは管理者アカウントを使ってしまうのか?
簡単にいうと、非管理者アカウントを日常使うことは「面倒」なのである。アカウントの使い分けにかかわらず、セキュリティ対策を実施することはとにかく面倒なものだ。しかしながら、Windows XPで非管理者アカウントを使って日常業務を行うことは、苦痛を伴うといっても過言ではないレベルの面倒さなのだ。
UNIXの場合、suやsudoというコマンドによって、一時的に管理者アカウントとして振る舞うことができる機能が用意されていて、これを使うことが一般的になっている。
一方、Windows XPでは管理者アカウントの権限を得るためには、一度ログアウトして管理者アカウントでログインし直さなければならない。Windows XPでは、ログインの際にはさまざまなプロセスが起動するので、この切り替えには時間がかかってしまう。コマンド1つのお手軽さからは程遠い。
また、管理者アカウントでないとインストールや実行できないアプリケーションも多く存在する。また、データを書き込むようなアプリケーションの利用も制限されてしまう。管理者アカウントでないと動作しないアプリケーションの作りがよいともいえないが、そういうアプリケーションを作ってしまう開発者がいるぐらい非管理者アカウントの存在感は薄い。
これらのことが最小特権の原則に従って行動することを妨げる要素となっているのだ。管理者アカウントでログインすることを日常的にしてしまったのは、Microsoftにも責任の一端があることは否めない。
実際は、非管理者アカウントでの運用も十分可能
管理者アカウントでないと、いくつかの弊害が生じるのは先に述べた。しかし、あなたの日常の業務を見直してみよう。本当に管理者アカウントである必要があるのだろうか?
WebブラウザでのWebサイト利用、メールの読み書き、ドキュメント作成や開発ツールによるプログラミングなど日常業務の大部分は、特に管理者アカウントである必要はなく、非管理者アカウントでも問題ないのではないだろうか。
非管理者アカウントをメインアカウントにして、管理者アカウントが必要になればその都度ログインし直すという運用を試してみてはいかがだろうか。
別の権限で動作させるSecondary Logonサービス
もし、非管理者アカウントをメインアカウントにしたとき、「その都度、管理者アカウントでログインし直す」という点が面倒なのであれば、Secondary Logonサービスを試してほしい。これは現在ログインしているユーザーとは別の権限でプログラムを実行できるようにするものである。利用するためには、runasコマンドかMakeMeAdminを使うのが一般的だ。
●runasコマンド
runas /profile /user:ncc1701a\administrator cmd
このコマンドを実行することで、「ncc1701a」というマシン上でユーザープロファイルを読み込みながら、administratorというアカウントでコマンドプロンプトを起動することができる。
runasコマンドの書式は以下のようになる。
runas /profile /user:<ユーザー名> プログラム
詳細については、「一時的にほかのユーザー権限でプログラムを実行する方法(runasコマンドを利用する方法)」などが参考になる。
【関連リンク】
一時的にほかのユーザー権限でプログラムを実行する方法(runasコマンドを利用する方法)
http://www.atmarkit.co.jp/fwin2k/win2ktips/758runascmd/runascmd.html
●MakeMeAdmin
Secondary Logonサービスを利用して以下のプロセスを自動的に連続して実行するスクリプトである。
- 現在のアカウントをローカルAdministratorsグループに追加
- 現在のアカウントがローカルAdministratorsグループのメンバーである新しいコマンドプロンプトを起動
- 現在のアカウントをローカルAdministratorsグループから削除
詳細とプログラムの入手については、「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
「PrivBar」でIEが何の権限で動いているかを見る
管理者アカウントと非管理者アカウントを使い分けるとき、現在のアカウントが何か分かると便利だ。それには、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」でその場しのぎ
いまさらメインアカウントとして、非管理者アカウントに移行するのが大変だとか面倒だという人には、「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に期待
Windows Vistaで導入されるUAPは、管理者アカウントを利用していたとしても通常は制限されたユーザーの権限で動作し、管理者権限が必要なプログラムを実行する際に、ユーザーに権限の確認とパスワード入力で確認を求めるというものである。
先に紹介したSecondary LogonサービスやDropMyRightsなどを使うよりも、よほど利便性とセキュリティレベルが高いものが期待できる。ただし、権限の取り扱いを変えてしまうため、既存のアプリケーションは場合によっては修正が必要になる可能性もある。
ここに挙げたように管理者アカウントの取り扱いを見直し、アカウントに起因するセキュリティリスクを軽減したとしても、ユーザーが明示的にインストールや実行してしまうプログラムが悪意があるものかどうかを見極めることは難しい。依然、そのほかのセキュリティ対策や対策ソフトウェアなどと併用して運用することが求められている。
Profile
上野 宣(うえの せん)
株式会社トライコーダ代表取締役
ネットワーク・セキュリティ監査、セキュリティ対策・運用改善コンサルティングを主な業務としている。
情報セキュリティを世に広げるべく、講演や執筆活動とさまざまな方面で活動中。近著に「今夜わかるメールプロトコル」、「今夜わかるTCP/IP」、「今夜わかるHTTP」(共に翔泳社)がある。個人ブログは「うさぎ文学日記」
- 今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた
- 「わざと脆弱性を持たせたWebアプリ」で練習を
- Perl Mongersはセキュリティの夢を見るか?
- 誰がシステムのセキュリティを“大丈夫”にするのか
- 技術は言葉の壁を越える! Black Hat Japan 2008&AVTokyo2008(後編)
- 技術は言葉の壁を越える! Black Hat Japan 2008&AVTokyo2008(前編)
- キャンプに集まれ! そして散開!
- 売り上げ重視か、それともセキュリティ重視か!? 「安全なウェブサイト運営入門」
- CeCOS IIにみるネット犯罪のもう一方の側面
- セキュリティ対策の行き着くところは……最終手段? 京都に究極のセキュリティ対策を見た
- 人はオレを情報の破壊神と呼ぶ せめて、ハードディスクの最期はこの手で……
- セキュリティ社会科見学:インターネット物理モデルでセキュリティを考えた
- セキュリティ自由研究:この夏、グミ指を作ってみないか
- Webアプリケーションを作る前に知るべき10の脆弱性
- セキュリティを教える人に知ってほしい 基本が詰まった1冊
- セキュリティのバランス感覚を養うための1冊
- 暗号化仮想ドライブで手軽にファイルを暗号化
- Windows管理者必携、Sysinternalsでシステムを把握する
- 今夜分かるSQLインジェクション対策
- 「取りあえず管理者アカウントで」という思考停止はもうやめよう
- CSSクロスドメインの情報漏えいの脆弱性「CSSXSS」とは
- 偽装メールを見破れ!(後編)
- 偽装メールを見破れ!(前編)
- メールは信頼できても信用できない
- 危機管理体制を整えよう! 個人情報漏えい後の対応ガイドライン
- メールアドレスを漏えいから守る方法
- 「Whoppix」を使ってペネトレーションテストをやろう
- 「ぼくはまちちゃん」 ――知られざるCSRF攻撃
- 25番ポートの攻防
- 平田です。届いてますか?
- 魔法の鍵と最後の鍵
- 個人情報保護法を論理的に読み解く
- 安全確保のために東京は明るく! 大阪は暗く!
- 言論の自由とセキュリティコミュニティ
- 標的にされる無防備なコンピュータ
- セキュリティ担当者には想像力が必要
- 端末を持ち歩くことの危険を意識せよ! 〜 「ノートPC=自動車」論 〜
- 脆弱性のあるサイトとセキュリティ技術者の関係
- いまこそ一般教養としてセキュリティを!
- 大事なことは製品でもなく知識でもなく……
- 治安の悪化で改めて痛感したこと
- Blasterがもたらした多くの“メリット”
- 企業でのセキュリティ資格の意味合いは?
- 人はミスをするものと思え、故に事前対策が重要
- オレオレ詐欺に学ぶソーシャル対策
- あらゆる人にセキュリティ教育を
- 猛威を振るうSARSウイルスに思ったこと
- 痛い目に遭って考えた、ビジネス継続性の重要さ
- 責められるべきはMSだけだろうか?
- セキュリティ技術者を「憧れの職業」にするには?
Copyright © ITmedia, Inc. All Rights Reserved.