前回の”怪しいファイルは実行禁止ディレクトリに保存しよう。”で
NTFSの機能
実行権限の剥奪
を覚えましたね、今回は万が一あやしいファイルを実行してしまった時でも最低限の被害に食い止める方法を考えて見ましょう。
基本は動作させるアプリケーションに最低限の実行権限しか持たせない事です。
WindowsOSには”ユーザ”と”グループ”というアカウント制御に関する項目があります。まずアカウントについて見てみましょう。
アカウントの種類について
マイクロソフトのHPに分かりやすい図があったのでこれを見てください。
→(詳しく見る)
この図は”Windows XP Professional”でアカウントを新規に作成する場合に尋ねられる3種類のアカウントのそれぞれの実行出来る範囲をあらわした図です。
”コンピュータの管理者”は全ての項目が”可”としてありますね。”コンピュータの管理者”はいわばそのコンピュータ自身の神みたいなものです。何でも出来ちゃいます。逆に”標準(または制限付き)”や”制限付き(または Guest)”は”空白”が多いですよね、これはその項目についての権限を持っていないという事になります。例えば
”標準(または制限付き)”は”ユーザー アカウントを作成する”権限を”持っていない”
という事になります。
では”何のための制限付きアカウント”なのでしょうか?
Windowsの世界では日常のタスクに”コンピュータの管理者”アカウントでログインするのが一般的ですが実は逆なのです。普段”標準(または制限付き)”アカウントで作業をし、重要な作業(ネットワーク構成の変更や基幹アプリケーションのインストール)にのみ”コンピュータの管理者”権限を用いるべきなのです。
データを実行するときの実行権限は通常の操作を行った場合実行アカウントの権限でデータが実行されます。つまり”コンピュータの管理者”が実行すれば”コンピュータの管理者”権限で、”標準(または制限付き)”が実行すれば”標準(または制限付き)”の権限で実行されます。あやしいコンピュータウイルスの類を仮に実行してしまったとしても”標準(または制限付き)”で実行したのならば致命的なダメージにはならないというわけです。
”標準(または制限付き)”はできることが少ない代わりに、コンピュータに致命的なダメージを与える可能性も少ないというわけです。つまり日常用いるのに一番適しているアカウントという事になります。
また、マイクロソフトに権限についての分かりやすいリソースがあったのでこちらも紹介。(→サイトへ行く)
Windows XP のアカウント
LUA アプローチの背景になっている原則について理解するには、Windows XP での管理者アカウントと非管理者アカウントとの違い、および Windows がプログラムを起動し実行する方法について理解しておくことが必要です。また、ワークグループおよびドメインベースのネットワーク内のグループについても理解しておく必要があります。
Windows XP を実行するコンピュータは、ローカルのセキュリティ アカウント マネージャ (SAM) に独立したセキュリティ データベースを保持します。SAM には、ローカルのユーザー情報とグループ情報が格納されます。以下のグループを含む多くのデフォルト グループがあります。
Administrators:
コンピュータに対して、完全かつ無制限なアクセス権を持ちます。Power Users:
ファイルの共有、ローカル プリンタのインストール、システム時刻の変更など、多くの制限された管理者権限を持ちます。Power Users は、Windows システム フォルダ内のファイルにアクセスできるアクセス許可も持っています。Users:
ユーザー権限が制限されており、偶発的または故意によるシステム全体への変更は許可されません。このグループ メンバのユーザー アカウントのみが、”制限付きユーザー アカウント” と呼ばれます。Guests:
制限付きユーザーより少ない権限しか持ちません。
ユーザー アカウントには、これらのグループの 1 つまたは複数のメンバシップから権限が付与されます。たとえば、組み込み Administrator アカウントは、Administrators グループのメンバであるため、管理者権限を持ちます。このグループのメンバシップにより、Administrator アカウントに、リモート コンピュータからシステムをシャットダウンする権限といった上位権限が付与されます。
ワークグループ ベースのコンピュータは完全に独立し、それ自体の SAM でグループとユーザーを評価するだけです。ワークグループ コンピュータがドメインに入ると、ローカルのグループ メンバシップが変わります。既存のグループに加え、Domain Users はローカル Users グループのメンバになり、Domain Admins グループは Administrators のメンバになります。この変更により、Domain Admins グループのメンバは管理者権限でコンピュータにログオンでき、Domain Users グループのメンバは制限付きユーザー権限でコンピュータにログオンできます。
管理者アカウント
管理者アカウントとは、1 つまたは複数の管理者グループのメンバであるアカウントのことです。ドメイン コンピュータ上の管理者グループには、以下のグループが含まれます。
ローカル Administrators グループ
ローカル Power Users グループ
Domain Admins グループ
Network Configuration Operators グループ
ローカル管理者グループのメンバシップを持つすべてのドメイン グループ
これらグループのうちの 1 つまたは複数のメンバシップでログオンするユーザーは、システム全体に対する変更を実行できます。
注 : Power Users グループは、Users グループの特権をすべて含んでいるというより、Administrators の部分集合になります。Power Users グループへのユーザーの追加は、LUA 原則に準拠していません。
制限付きユーザー
制限付きユーザーは、ローカル Users グループのメンバのアカウントで、管理者グループのメンバではありません。ドメインに参加しているコンピュータ上では、Domain Users グループのメンバであるアカウントは、ローカル Users グループのメンバでもあります。
制限付きユーザー アカウントは、操作上のセキュリティに影響するような、システム全体に対する変更を実行するための最小限の権限しか持っていないため、悪意のあるソフトウェアからの攻撃を受けにくいアカウントです。制限付きユーザー アカウントは、ファイアウォールのポートを開くことも、サービスを停止したり開始したりすることも、Windows システム フォルダ内のファイルを変更することもできません。
多くの組織では、ユーザーは Domain Users グループのメンバとしてログオンしており、既に LUA アプローチを実装していると主張するかもしれません。しかし、そのユーザーがローカル Administrators グループのメンバでもある場合には、そのユーザーが実行するプログラムはすべて管理者権限を持ち、不必要な変更を行う可能性があるのです。
ログオン プロセスについて理解する
Windows XP の認証プロセスについて理解しておくことも、重要です。ユーザーがコンピュータにログオンすると、オペレーティング システムがそのユーザーの資格情報を認証し、Windows デスクトップのインスタンス、通常は Windows エクスプローラを起動します。このデスクトップは、ユーザーのアクセス権限とアクセス許可でログオンされたユーザーのセキュリティ コンテキスト内で実行されます。ユーザーが、Microsoft Internet Explorer などのプログラムを起動した場合、このプログラムも、そのユーザーのセキュリティ コンテキストで実行されます。
Administrator として認証する
ユーザーがローカル Administrators グループのメンバとして認証されると、そのデスクトップと、そのユーザーが起動するすべてのプログラムは、フル アクセス権と管理者のアクセス許可で実行されます。管理者権限を持つユーザーは、コンピュータを管理する上で必要な、次のアクションを実行できます。
サービスおよびデバイス ドライバのインストール、開始、および停止
レジストリ設定の作成、変更、および削除
プログラムのインストール、実行、およびアンインストール
オペレーティング システム ファイルの置換
プロセスの終了
ファイアウォール設定の制御
イベント ログ エントリの管理
Microsoft ActiveX® コントロールのインストール
SAMへのアクセス
大部分のコンピュータ ユーザーにとってこれらの権限は不要であり、またコンピュータのリスクを著しく増大させるものです。管理者権限を持つユーザーはこれらシステム全体に対する変更を実行できるため、故意であれ、偶発的であれ、管理者権限を持つユーザーが実行するプログラムも、システム レベルの変更を実行できることになります。したがって、悪意のあるソフトウェアにとっては、管理者権限で認証されるユーザーのコンピュータに侵入することは、管理者権限以外のユーザーのコンピュータに侵入することよりはるかに簡単なのです。
User として認証する
Administrators グループのメンバでないユーザーは、非常に少ないリソースにしかアクセスできません。そのため、特定の領域への変更しか実行できません。管理者権限とユーザー権限とを比較するために、ユーザーが実行できるタスクを以下に示します。
サービスおよびデバイス ドライバのステータスの表示
HKEY_CURRENT_USER 内のレジストリ設定と HKEY_LOCAL_MACHINE 内のレジストリ設定の作成、変更、および削除
プログラムの実行
大部分のオペレーティング システム ファイルの読み取り
実行中のプロセスの表示
ファイアウォール設定の表示
システム ログ エントリとアプリケーション ログ エントリのみの表示
制限付きユーザーでも、各自作業するのに必要なタスク、たとえば、ワイヤレス ネットワークへの接続、署名されたプラグ アンド プレイ ドライバのインストール、デスクトップ設定の変更などは実行できます。LUA アプローチは、このような権限を制限するものではなく、管理者権限を持つアカウントを制限することによってリスクを軽減するものです。
制限アカウントの作り方と実行方法
それでは実際に制限されたアカウントとそのアカウントでの作業実行方法を見てみましょう。
制限アカウントの作成
”マイコンピュータ”を右クリック→”管理”を開き、”ローカルユーザとグループ”を選択します。
中に”ユーザ”と”グループ”が見えますね。基本的な説明だけになりますが、”実行可能”とか”読み取り可能”とかの権限は”グループ”に対して行ってください。もちろん”ユーザ”に対して権限設定を行うことも可能ですがユーザに対して権限設定を行うと新規にユーザを追加した時など、あとあと面倒ですからね。
”ユーザ”を右クリックして”新しいユーザ”を選択します。
ここでは”hogehoge”というユーザ名のアカウントを作成してみました。”ユーザ名”などを入力して終わったら”作成”をクリックです。
既定の設定では新しいユーザが追加されるとローカルコンピュータの”USERS”グループに自動的に所属しますのでこれで設定完了です。
実行方法
実行したいプログラムを右クリック→”別ユーザとして実行”を選択します。
以下の画面が出てくると思いますので先ほど作成したアカウントを入力してみましょう。
これで別ユーザとしてアプリケーションを実行させることが可能です。
あやしい作業を行う場合は覚えておくと便利かもしれません。