[WMI基礎] トラブルシュートの基礎知識 (3)/n : DCOM の既定の構成であるか確認し、動作するか確かめてみよう

皆様ご機嫌よう。ういこです。今日は、WMI の虎舞竜シュート続き「WMI でアクセス拒否 (Access Denied) 案件」についてご紹介したいと思います。

特に、リモート コンピュータを WMI でどうにかしてくれようと思っているときに良く出くわすのですが、もう端的に状況を表しているようで「そして僕は途方に暮れる」状態になっちゃう、それがアクセス拒否です。拒否されました、って、どうすんねん!と思ったことありませんか?私はあります。
男女関係でもそうですね。気になるあの子にアプローチしたら「…なんかイヤ」といきなり拒否されて、「俺様の何が嫌なんじゃぁあ!」というシチュエーション、ありますよね。そうそう、そこです。「俺の何が悪いんだ」のところを見ていきましょう。

まずは優しく「僕のどこが嫌で拒否ってるの?」と聞いてみましょう
最初にいきなり拒否ってる本人 (WMI) に聞いたって何か言ってくれるとは限りません。人間関係でもそうですが、こういうときはまず彼女 (WMI) の親友 (DCOM たん) から情報を収集することをお勧めします。

…話がそれました。すみません。WMI でいきなり拒否られたとき、まず確認すべきは DCOM と WMI の設定です。つぎに Windows ファイアウォールなどを見ましょう。なんでいきなり DCOM? と思う方もいらっしゃるかも知れませんが、実は WMI は DCOM とさらにその先にいる RPC (リモート プロシージャ コール) に密接にかかわっています。というより、DCOM の上に構築されているのです。既定の DCOM のセキュリティ設定を変更すると、それが原因で WMI も影響を受けます。まあ友達に悪口吹き込まれたのかも?ってところですか。
そこで、一番手っ取り早いのは、元の既定の構成に戻してあげることです。

では、何が既定の構成なのか?ですが、以下を参照にして見比べてください。

DCOM の既定のセキュリティ設定を確認する
DCOM の設定は DCOMCNFG で確認、変更が出来ます。
(1) Windows XP / Windows Server 2003 の場合

1. [スタート] - [ファイル名を指定して実行] (Windows キー + R キー) を呼び出す
2. "ファイル名を指定して実行" ダイアログが出たら、DCOMCNFG と入力して [OK] を押す

image
3. "コンポーネント サービス" が表示されますので、左ペインを以下の通り展開していきます。(コンポーネント サービス ノードは、クリックしないとその下が展開されないことがあるみたいです。+ がついてない場合はクリックしてみましょう)

- コンソール ルート
+- コンポーネント サービス
+- コンピュータ
+- マイ コンピュータ ← ここを右クリックし、[プロパティ(R)] を選択

image

4. "マイ コンピュータのプロパティ" ダイアログが開くので、それぞれのコンテナ上の [既定値の編集(D)...] をクリックします。

 image
5. "起動許可" ダイアログが表示されます。
- "アクセス許可"
・Windows XP SP2 以前 (RTM / SP1) : SYSTEM
・Windows XP SP2 以降および Windows Server 2003 : SELF および SYSTEM

image

image

SELF はローカル アクセスおよびリモート アクセス双方が許可されますが、SYSTEM では、リモートからの起動およびリモート アクセスは既定では許可されません。

- "起動のアクティブ化のアクセス許可" 既定のセキュリティ
少なくとも以下の三つのユーザが起動許可に登録されています。

・Administrator または Administrators
・INTERACTIVE
・SYSTEM

image

image

image

INTERACTIVE と SYSTEM は、ローカルからの起動およびローカルからのアクティブ化のみ許可されますが、リモートからの起動およびリモートからのアクティブ化は既定では許可されません。
もし、これらの設定が上記既定値から置き換わっている場合は、INTERACTIVE、SYSTEM および Administrator(s) に対し、アクセス許可を設定してみてください。

(2) Vista 以降の場合
1. [スタート] - [ファイル名を指定して実行] (Windows キー + R キー) を呼び出す
2. "ファイル名を指定して実行" ダイアログが出たら、DCOMCNFG と入力して [OK] を押す
3. "コンポーネント サービス" が表示されますので、左ペインを以下の通り展開していきます。(コンポーネント サービス ノードは、クリックしないとその下が展開されないことがあるみたいです。+ がついてない場合はクリックしてみましょう)

- コンソール ルート
+- コンポーネント サービス
+- コンピュータ
+- マイ コンピュータ ← ここを右クリックし、[プロパティ(R)] を選択

4. "マイ コンピュータのプロパティ" ダイアログが開くので、[COM セキュリティ] タブを選択し、それぞれのコンテナ上の [既定値の編集(D)...] をクリックします。
5. "起動許可" ダイアログが表示されます。
- "アクセス許可"
Administrator (Administrators) 、SELF および SYSTEM。SELF および Administrator(s) はローカル アクセスおよびリモート アクセス双方が許可されますが、SYSTEM では、リモートからの起動およびリモート アクセスは既定では許可されません。

- "起動のアクティブ化のアクセス許可" 既定のセキュリティ
少なくとも以下の三つのユーザが起動許可に登録されています。

・Administrator または Administrators
・INTERACTIVE
・SYSTEM

Administrator(s)、INTERACTIVE も SYSTEM も、ローカルからの起動およびローカルからのアクティブ化およびリモートからの起動およびリモートからのアクティブ化も既定では許可されています。

DCOM の既定の設定を確認する
1. [スタート] - [ファイル名を指定して実行] (Windows キー + R キー) を呼び出す
2. "ファイル名を指定して実行" ダイアログが出たら、DCOMCNFG と入力して [OK] を押す
3. "コンポーネント サービス" が表示されますので、左ペインを以下の通り展開していきます。(コンポーネント サービス ノードは、クリックしないとその下が展開されないことがあるみたいです。+ がついてない場合はクリックしてみましょう)

- コンソール ルート
+- コンポーネント サービス
+- コンピュータ
+- マイ コンピュータ
+- DCOM の構成

4. "DCOM の構成" 配下の "Windows Management and Instrumentation" を右クリックし、[プロパティ] を選択します。
5. 設定を確認します。
- "全般" タブの "認証レベル" : 既定
- "セキュリティ" タブの設定 : すべて既定

image

image

image

image

DCOM の設定を既定値に戻す方法(一気にレジストリでカタをつけるもう一つの方法)
上記の設定にいちいち合わせてられないという方は、以下のキーをまずバックアップしてください。

HKLM\Software\Microsoft\Ole\DefaultAccessPermission
HKLM\SOFTWARE\Microsoft\Ole\MachineAccessRestriction
HKLM\SOFTWARE\Microsoft\Ole\MachineLaunchRestriction

次に、このキーを削除または名前変更すると、オペレーティング システムは既定の状態に戻ります。 (OS クリーンインストール状態ではこのレジストリは存在しません。)

※注意点※
既定の DCOM アクセス許可を元に戻すと、システムで実行されているすべてのアプリケーションに影響します。この変更を行うと、コンピュータ上のその他の DCOM アプリケーションに悪影響を及ぼす可能性もあります。 あらかじめ上記のレジストリを削除する前に、バックアップを取っておきましょう。さらに、ポリシーやレジストリの設定などで意図的に設定が変更されている場合もありますので、必要であればシステムの復元ポイントを作っておくなど、十分に注意してご対応することをお勧めいたします。 また可能な限り、同じ構成(同じドメイン配下、同じ OS および言語バージョン)の別マシン上で検証をし、その環境の DCOM の設定を目視で確認しながら対処頂くことでもよいかと思います。ご検討ください。

次回は、アクセス拒否系続き「WMI の偽装時の権限は適切か?」をお送りすると思います。恐らく…。

ういこう@マニアックなのかなあ…。