ドメインにログオンできない ~ セキュア チャネルの破損 ~

はじめまして! Windows プラットフォーム サポート担当の石丸 宰 (いしまる つかさ) です。

今日は、 "セキュア チャネルの破損" が原因でドメインにログオンできなくなる現象について、その見分け方と対処方法をご紹介したいと思います。

1. "セキュア チャネル" と "コンピューター アカウント パスワード"

Active Directory ドメインのメンバーとなっているクライアントは、ドメインコントローラー (以下 DC と記述) との間の通信を保護するために、セキュア チャネルと呼ばれる通信チャネルを使用します。認証に使用される資格情報などはこのセキュアチャネルによって暗号化され、安全な状態でネットワークを経由してやりとりされます。セキュア チャネルは下の図のように、クライアントごとに個別に作成されます。

* なお、 "クライアント" はドメインのメンバーを指しており、 Windows Server 2003 / 2008 も DC でなければ、以下の説明や図では、"クライアント" に含まれます。

clip_image002

DC とクライアントはお互いに、セキュア チャネルを確立するために必要となる "コンピューター アカウント パスワード" を持ちあっています。このパスワードは、DC 上ではコンピューター アカウントの属性値に、クライアント上では LSA シークレットと呼ばれる領域にそれぞれ格納されています。

クライアント コンピューターが起動すると、まず最初にコンピューターアカウントのパスワードを用いて資格情報を生成し、DC にコンピューター認証の要求を送信します。認証に成功すると、認証処理の中で生成されたセッション・キーを用いてクライアントと DC の間にセキュア チャネルが確立されます。前述の通り、ユーザーのドメインへのログオン要求などの通信はセキュア チャネルを用いて行われるような仕組みになっているので、コンピューター認証に失敗し、セキュアチャネルが確立ができないような状況ではユーザーはドメインにログオンすることはできません。

何らかの理由によって DC とクライアントが保持するコンピューター アカウントのパスワードに不整合が生じた場合、セキュア チャネルを確立することができなくなり、そのコンピュータからはドメインへのログオンができなくなります。これが、セキュアチャネルの破損と呼ばれる現象です。

2. セキュア チャネル破損の見分け方は?

それでは次に、ログオン失敗の原因がセキュアチャネルの破損であるか否かをどのようにして見分ければよいか、その方法をご紹介します。

- ログオン失敗時のふるまい
セキュア チャネルが破損していると、通常は正しいユーザー名とパスワードを入力してもデスクトップにログオンすることができないのですが、コンピュータ起動後のネットワーク確立に時間を要している場合などには、以前にログオンに成功した際にキャッシュした情報を用いてクライアントコンピュータにはログオンできるようになっている場合もあります。この場合は、一見ドメインへのログオンに成功しているかのように見えます。

* ただし、クライアントにキャッシュ ログオンしている状況では、自分のデスクトップを開いてローカルコンピュータのリソースを使用することはできるものの、ネットワーク経由でドメインのリソースを使用する場合には、様々な制約を受けることがあります。

また、キャッシュ ログオンもできずにデスクトップにログオンできない場合のエラーメッセージも、Windows XP では下記の画面のように表示され、この場合は DC との接続に何らかの不具合が発生していることがうかがえるのですが・・・

clip_image004

Windows Vista では通常のパスワード間違いの場合と同様、下のような画面が表示されることがあります。

clip_image006

これでは、ユーザー名、パスワードの間違いとの区別がつきません。

また、これらのエラーメッセージはネットワークの接続状況などの条件に応じて、色々と表示される内容が異なります。このため、ログオン失敗時のふるまいからセキュアチャネルの破損が原因でログオンに失敗していることを見分けることは難しい場合が多いのです。

- クライアントのシステムログで Netlogon 3210 の出力を確認!
では、どうやってセキュアチャネルの破損を見極めればよいのでしょうか。経験上、最も確率の高い方法はクライアントコンピューターの [イベント ビューア] を開き、システム ログに Netlogon 3210 のエラーイベントが出力されていないかどうかを確認することです。

ユーザー名とパスワードを正しく入力しているはずなのにドメインにログオンできない、もしくはキャッシュログオンしてしまうといった場合は、まずはクライアント コンピューターの管理者権限を持つローカル アカウントでログオンして、システム ログを確認してみましょう!

下記の画面のように、Netlogon 3210 のエラーイベント出力されていれば、セキュア チャネルの破損が疑わしいと考えられます。

<Windows Vista の場合>
clip_image008

<Windows XP の場合>
clip_image010

- DC 側のシステムログもあわせて確認!
さらに、セキュア チャネルの破損によってログオンできないような状況では、DC 側の イベント ビューアのシステム ログにも下記のような Netlogon 5722 のエラーイベントが出力されることがあります。(ただし、このイベントはセキュア チャネルの破損の状況によっては出力されないこともありますのでご注意ください。)

clip_image012

クライアント側の Netlogon 3210 に加えて、DC 側でも Netlogon 5722 のエラー イベントの出力を確認できた場合は、セキュア チャネルの破損である可能性がかなり高いと判断できます。

3. セキュア チャネルが破損した時の対処方法

結論から先にお話しすると、セキュアチャネルが破損してしまった場合、問題の発生したクライアント コンピューターを一度ドメインの登録から外して、再度ドメインに参加させる必要があります。

コンピューター アカウントのパスワードは、ユーザーアカウントのパスワードのように DC 側でパスワードのリセットを行って、次回以降はユーザーが新しく設定したパスワードを使用する・・・といった方法を使うことができません。これは、コンピューターアカウント パスワードの更新はセキュア チャネルを使用して、DC とクライアントの間で対話的に行う必要があり、どちらからが一方的にパスワードを変更することはできないからです。

もしクライアント側で保持しているパスワード情報のみがおかしくなってしまったのであれば、クライアントをバックアップからリストアするという方法もありますが、そのような状況は稀でしょう。また、詳しくは後述していますが、サポート ツールで提供されている nltest や netdom などのツールを使用しても、クライアントコンピューターをセキュアチャネルが破損した状態から回復させることはできません (ただ、余談ではありますが、セキュアチャネルが破損したのが DC である場合は、KB 435000 に記載されている手順で対処できる場合があります) 。

それでは、下記にクライアントをドメインに再参加させる手順をご紹介します。

1) [コントロール パネル] を開き、[システム] をダブル クリックします。
2) (Windows Vista の場合) 開いた画面の左側のメニューから、"システムの詳細設定" をクリックします。
3) [コンピュータ名] タブを開き、[変更] ボタンをクリックします。
4) [ワークグループ] のラジオボタンを選択し、ワーク グループ名を入力して [OK] をクリックします。
5) コンピューターを再起動します。
6) 再度、1 ~ 3 の手順を実施して、コンピュータ名 / ドメイン名の変更の画面を開きます。
7) [ドメイン] のラジオ ボタンを選択し、再参加するドメイン名を入力して [OK] をクリックします。
8) コンピューターを再起動します。

4. セキュア チャネルが破損する原因は?

セキュア チャネルが破損する原因は様々ですが、一般的には下記のような状況で発生することが多いようです。

  • クライアントがバックアップからリストアされた際に、クライアントの保持するパスワードが古いパスワードに書き換えられ、DC が保持するコンピューター アカウントのパスワードと不整合が生じた場合
  • DC 上の Active Directory のデータベースがバックアップから復元された際に、DC が保持するコンピューター アカウントのパスワードが古いパスワードに書き換えられ、クライアントの保持するパスワードと不整合が生じた場合
  • クライアントのドメイン参加後、DC 上の管理ツールなどで、当該のコンピューターアカウントが一旦削除され、再度同じコンピューター名のアカウントが作成された場合
  • クライアントのドメイン参加後、DC 上の管理ツールなどで、当該のコンピューターアカウントに対して "アカウントのリセット" が実施された場合
  • クライアントで使用されていたコンピューター名が他のクライアントで使用され、ドメインへのログオンなどが行われた場合
  • サード パーティ製のアプリケーションにより、クライアントもしくは DC が保持するコンピューター アカウントのパスワードに関する情報を書き換えたために不整合が生じた場合
  • ファイルの破損、ディスクへの書き込みのエラーなどで、DC 上の Active Directory データベースに問題が生じた。もしくは、同じ理由でクライアントの保持するパスワードに問題が生じた場合

上記の中でも、特に弊社に寄せられるお問い合わせが多いケースとしては、クライアントコンピューターをバックアップからリストアした場合です。

コンピューター アカウントのパスワードは、既定では 30日間隔で自動的に更新されます。このため、クライアントと DC のいずれか一方のみを古いバックアップデータからリストアすると、片方に古いコンピューター アカウントのパスワードが復元されてしまい、不整合が生じることが原因です。

もちろん、これら以外の理由でもセキュア チャネルが破損する可能性はあるのですが、ほとんどの場合は問題発生後の事後調査となってしまうため、最終的に原因がわからないことが多いというのが実情です。5. セキュア チャネルの状態を確認・変更するツール

最後に、セキュア チャネルの状態を確認・変更することができるツールとして、"nltest" と "netdom" をご紹介します。

nltest と netdom は、ドメインの信頼関係やセキュア チャネルの状態などの Active Directory に関するさまざまなテスト、管理を行うことができる、強力なコマンドラインユーティリティです。これらのコマンドには非常に多くのオプションが用意されており、様々な目的に使用することができます。詳しくは "/?" オプションでコマンドを実行して、ヘルプの内容をご確認ください。本稿ではそれらのオプションの中から、セキュアチャネルに関するコマンド オプションの利用方法をご紹介したいと思います。

- 導入方法
これらのツールは Windows Server 2008 では既定でインストールされていますが、Windows 2003、XP では Windows サポート ツールのインストールが、Windows Vista においては Microsoft Remote Server Administration Tools for Windows Vista (RSAT) のインストールが必要となります。( => RSAT についての詳細はこちらの記事をご参照ください!)

- ダウンロード先 URL
Windows Server 2003 Service Pack 2 32-bit Support Tools
https://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&DisplayLang=en

Windows XP Service Pack 2 サポート ツール
https://www.microsoft.com/downloads/details.aspx?FamilyID=49AE8576-9BB9-4126-9761-BA8011FABF38&displaylang=ja

Windows Vista 用 Microsoft リモート サーバー管理ツール
https://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=9ff6e897-23ce-4a36-b7fc-d52065de9960

Windows Vista for x64-based Systems 用 Microsoft リモート サーバー管理ツール
https://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=d647a60b-63fd-4ac5-9243-bd3c497d2bc5

- セキュア チャネルの検証を行う
クライアント コンピューターと DC との間で正しくセキュア チャネルを確立できているかどうかを検証します。例えば、セキュア チャネルが破損していてキャッシュログオンしているクライアント コンピューターに対して下記のコマンドを実行するとエラーの結果が出力されます。
<コマンド実行例>
  nltest /SC_VERIFY:{ドメイン名}
  netdom verify {コンピューター名} /domain:{ドメイン名}

- コンピューター アカウントパスワードのリセット
セキュア チャネルの確立に使用するコンピューターアカウントのパスワードをリセットします。
<コマンド実行例>
  nltest /SC_RESET:{ドメイン名}
  netdom reset {コンピューター名} /domain:{ドメイン名}

- コンピューター アカウントパスワードの更新
セキュア チャネルの確立に使用するコンピューターアカウントのパスワードを更新します。
<コマンド実行例>
  nltest /SC_CHANGE_PWD:{ドメイン名}

** 留意事項-1 **
上記のいずれのコマンドも、nltest はクライアント側で、netdom は DC 側で実行します。

** 留意事項-2 **
nltest や netdom を用いてパスワードのリセットや更新を行うためには、DC との間でセキュア チャネルが確立されている必要があります。このため、セキュアチャネルの破損後には、これらのコマンドを用いてもパスワードのリセットや更新を行うことはできません。一度破損してしまったセキュア チャネルを復旧するためには、やはりドメインへの再参加を行う必要があることにご留意ください。

「コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。」