WindowsのAD(Active Directory)サーバのサービス一覧を確認したところ、
Netlogonサービスの状態が、普段見慣れない
「一時停止」
という謎の状態になっていました。これはいったい何なのでしょうか?
レジュメ
環境・前提条件
実際に発生した環境は別ですが、今回、以下の条件の検証環境で再現させました。
- Windows Server 2022 ADサーバー×2台(同一ドメイン)
- AWS上環境
- 一台のADサーバー(FSMO)のオフラインAMIを取得。
その後、しばらく(数時間)ADサーバー2台とも正常起動していた状態から、
一台のADサーバー(FSOM)をオフラインAMIからリストアした。
そのリストアしたADサーバー上で、今回の症状が発生しました。
【結論】USN ロールバックが発生している
"ADサーバー上"で、"Netlogonサービス"のサービス状態が"一時停止"という見慣れないステータス状態になっているとしたら、その原因は、ほぼ一択と思います。
ADサーバー間でうまくレプリケーションできない状態になっています。(USNロールバック)
誤って復元されたドメイン コントローラーで Active Directory に対する一意の更新が作成されないようにするには、Net Logon サービスが一時停止されます。 Net Logon サービスが一時停止されると、ユーザー アカウントとコンピューター アカウントは、このような変更を送信レプリケートしないドメイン コントローラーのパスワードを変更できません。 同様に、Active Directory 管理ツールは、Active Directory 内のオブジェクトを更新するときに、正常なドメイン コントローラーを優先します。
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/identity/detect-and-recover-from-usn-rollback
USNロールバックとは?
マイクロソフトからサポートされない方法で、ADサーバーをリストアを実施してしまうと、
ADサーバーがUSN(Update Sequence Number。番号)の不整合状態を検知し、ADサーバー間のレプリケーションが停止します。
この状態をUSNロールバックといいます。
つまり、AWSのAMIは、ADサーバーとしてはサポートされないバックアップ方法となります。
VMwareやHyper-VのスナップショットからのADサーバーリストア方法は、マイクロソフトからサポートされたリストア方法になります。詳しくは、VM-Generation IDという技術になります。
参考:仮想化ドメイン コントローラーのアーキテクチャ | Microsoft Learn
ADサーバー上では、USNはADサーバー間で連携・記録されている番号で、
USNの値は通常、(オブジェクト更新のたびに)シーケンシャルに増えた値で更新される番号。
このUSNが減った値と検知された場合、先祖返り(ロールバック)されたと判断される仕組み。
ADサーバー上でUSN ロールバック状態確認方法
USNロールバックの症状が起きている特徴は、
- 現象が発生しているドメイン コントローラーでは"repadmin /showrepl" コマンドのDSA オプション欄がDISABLE表示となっている
- Netlogon サービスの「状態」が 「一時停止」となっている。
- レジストリ値 Dsa Not Writable のデータが 4 となっている。
- Directory Service のイベント ログに ID: 2095 が記録されている。
といった症状がみられます。
この中で、
レジストリ値の確認が最も確実な確認方法です。
画像にあるような、以下の「Dsa Not Writable」が0x4となっている場合、USNロールバックが発生していると確定できます。
このシナリオでは、Dsa Not Writable レジストリ エントリを確認します。 このエントリは、USN ロールバックが発生したことを示すフォレンジック証拠を提供します。
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/identity/detect-and-recover-from-usn-rollback
- レジストリ サブキー:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
- レジストリ エントリ: Dsa Not Writable
- 値: 0x4
USNロールバックからの復旧方法
簡単な復旧方法としては、二つあります。
- 問題のある(Netlogonサービスが停止している)ADサーバーをAD降格して、AD再昇格する。
- マイクロソフトがサポートするADサーバーのバックアップ方法からリストアする。
通常は、マイクロソフトがサポートするADサーバーのバックアップがないために、USNロールバックが発生していると思われるので、前者の方法で復旧する必要がある。
注意点としては、
- 問題のあるADサーバー上に、別の業務アプリケーションサービスがある場合は、ADサーバーの降格・再昇格が影響がないかメーカー確認する。
- 問題のあるADサーバーがFSMOを持っている場合は、降格・再昇格する前に、FSMOを正常なADサーバーへ強制移行しておく
詳しくは、以下のマイクロソフトのサイトを参考にして復旧を試みてください。
- Windows Server ベースのドメイン コントローラーで USN ロールバックを検出して回復する方法 - Windows Server | Microsoft Learn
- USN ロールバックの検出方法と回復について
参考:検証後、元々のEC2に戻したところADサーバー復旧確認
AMIからリストアしてUSNロールバックの検証を行った後(具体的には、AMIのEBSをアタッチしてリストアした)、
検証前の元々のADサーバーのEBSにアタッチしなおしたところ、
- Netlogonサービスの一時停止もなくなり、
- Dsa Not Writableのレジストリ値もなくなって
USNロールバックから復旧したADサーバーレプリケーション状態に戻りました。