RODC にログオンできない ~ RODC にパスワードをキャッシュする方法 ~
こんにちは。Windows プラットフォーム サポートの石丸です。
Windows Server 2008 のリリースから約 2 年が経過し、新機能の読み取り専用ドメイン コントローラー (RODC) をご利用になっているお客様も多いかと思います。
本日は、アクセス可能なドメインコントローラーが RODC のみになった場合に、RODC とは正常に通信が行えているにもかかわらず、ユーザーがドメインにログオンできなくなる現象について、その原因と回避策、注意点などをご紹介いたします。
1. RODC の拠点でクライアントがドメインにログオンできない!
RODC はその性質上、ブランチ オフィスなどのセキュリティ的に脆弱な拠点に配置されることが多いのですが、このような拠点は本社のネットワークやデータ センターに存在する書き込み可能ドメインコントローラーと低速な回線を経由して接続されていることが多々あります。このため、ネットワーク経路の問題や拠点の障害などにより、書き込み可能な DC と RODC の間の通信が切断されることもしばしばあります。
そこで、前述したような障害により、クライアントからアクセス可能なドメインコントローラーが RODC のみとなった場合について考えてみましょう。
RODC は読み取り専用とはいえ、ログオンを試行してきたユーザーやクライアント コンピューターのアカウント情報は書き込み可能 DC から複製されています。このため、特に個別に設定を行わなくとも、このような状況においてドメインへのログオンは正常に行えると考えてしまいがちです。
しかし、既定の設定では、ユーザーアカウント、およびコンピューター アカウントのパスワードの情報は RODC には複製されません。このため、RODC はログオンを要求されると、ユーザーから送信された資格情報が適切であるかどうかを検証するために、ログオン要求の処理の一部を書き込み可能な DC に転送する必要があります。
したがって、上記のように、RODC と書き込み可能 DC の間で通信が不可能な状況では、ユーザーがドメインにログオンできない現象が発生します。
この動作は、RODC がセキュリティ上の脅威に晒された場合に備えた実装であり、想定されたものです。
** なお、ドメインのポリシーでキャッシュ ログオンが有効になっている場合 (既定の状態)、ログオンしようとしているコンピューターに当該ユーザーが事前にログオンしていれば、キャッシュ ログオンによりログオンに成功することもあります。このときは、ログオンには成功しているものの、拠点内のファイルサーバーに接続した際に認証ポップアップが表示されるなどの現象が発生します。
2. 解決方法 : RODC にユーザー アカウントとコンピューター アカウントのパスワードをキャッシュする
前述のように、既定の設定では RODC のみでドメイン ログオン処理を成功させることができません。しかしながら、ブランチオフィスに RODC を配置しつつ、書き込み可能な DC との通信が不可能な状況でもユーザーのドメインへのログオンは正常にできるようにしたい、というご要望も多々伺います。
このような要件を満たすためには、パスワードレプリケーション ポリシーを構成して、ログオンするユーザー アカウントと、ログオンするコンピューターのコンピューター アカウントのパスワードを RODC にキャッシュするように設定する必要があります。
!! ここでは特に、コンピューター アカウントのパスワードも複製しておく必要があることにご注意ください。 !!
それでは、パスワードレプリケーション ポリシーを設定して、RODC にパスワードをキャッシュする方法について順にご説明していきます。
(1) パスワード レプリケーション ポリシーの設定
まず、どのグループに所属するユーザー、コンピューターのパスワードの複製を許可するかを、"パスワード レプリケーション ポリシー" によって設定します。また、どのグループについては、明示的に拒否をするかを設定するかを設定します。
なお、既定ではパスワードの複製を許可するために Allowed RODC Password Replication Group というグループが用意されていますので、特別な要件が無ければ、パスワード レプリケーション ポリシーには変更を加えず、次の (2) の手順におきまして、このグループにパスワード複製を許可するアカウントを追加するのみで構いません。
このポリシーは、ドメインコントローラーの [管理ツール] - [Active Directory ユーザーとコンピューター] から設定することができます。
1) [Active Directory ユーザーとコンピューター] の管理画面を開き、[Domain Controllers] のコンテナから RODC のオブジェクトを右クリックして [プロパティ] を選択します。
2) [パスワード レプリケーション ポリシー] のタブを選択します。
画面の通り、既定では下記のグループに対してポリシーが設定されています。
- 許可されているグループ
Allowed RODC Password Replication Group
- 拒否されているグループ
Account Operators
Administrators
Backup Operators
Denied RODC Password Replication Group
Server Operators
"Allowed RODC Password Replication Group" は、許可されているものの、既定ではメンバーを持ちません。このため、既定では RODC へのパスワードの複製を許可されたアカウントは存在しません。
拒否されたグループには、複数の管理者グループが含まれているほか、"Denied RODC Password Replication Group" もパスワード複製を拒否するグループとして登録されています。この "Denied RODC Password Replication Group" には既定で下記のアカウントとグループがメンバーとして登録されていますので、これらのグループに所属するアカウントについてもパスワード複製は既定で拒否されていることに注意しましょう。
Cert Publishers
Domain Admins
Domain Controllers
Enterprise Admins
Group Policy Creator Owners
krbtgt
Read-only Domain Controllers
Schema Admins
パスワード レプリケーション ポリシーの評価においては、拒否の判定が許可の判定よりも優先されることにご注意ください。 このため、例えば既定の設定のままで "Administrator" のアカウントを "Allowed RODC Password Replication Group" に登録しても、拒否の判定の方が優先されるため、RODC へのパスワードのキャッシュは行われません。
(2) パスワードのキャッシュを許可したグループに、RODC でのログオンが必要なユーザー、コンピューターを追加
パスワードレプリケーション ポリシーを設定したら、次は目的のアカウントをパスワードのキャッシュを許可したグループに追加します。下の図は、"Allowed RODC Password Replication Group" にユーザー、コンピューター、グループを追加した例です。
これで、RODC に設定したアカウントのパスワードがレプリケーションされるようになりました。この設定が行われた後、クライアントが RODC を認証 DC としてログオンを行ったタイミングで、自動的にパスワードが RODC にキャッシュされます。
(3) パスワードの事前キャッシュ
上記の (2) にて、RODC に対するパスワードのキャッシュが行われるのが "クライアントが RODC を認証 DC としてログオンを行ったタイミング" であることをあえて記述しましたが、これには理由があります。 (1)、(2) の設定が完了していたとしても、RODC にパスワードがキャッシュされる前に "1. RODC の拠点でクライアントがドメインにログオンできない!" に記述したような状況になった場合、やはり RODC のみではクライアントは、ログオンに失敗してしまうのです。
でも、ご安心ください。このような事態になるのを避けるために、RODC に対して手動でパスワードを事前配布することができます。以下にその設定方法を記述いたします。
まず、(1) の手順でご紹介した "パスワード レプリケーション ポリシー" の設定画面で [詳細設定] のボタンをクリックします。
すると、[詳細なパスワード レプリケーション ポリシー] の画面が表示されます。ここで、[パスワードの事前配布] のボタンをクリックします。
パスワードをキャッシュしたいアカウントの情報を入力して、[OK] をクリックします。
確認の画面が表示されるので、[はい] をクリックして完了です。簡単ですね!
パスワードがキャッシュされているアカウントは、下の図のようにリストに表示されますので、目的のアカウントのパスワードのキャッシュがされているかどうかを簡単に確認することができます。
ただ、この方法だと、一度にたくさんのアカウントのパスワードを事前にキャッシュしておくのは大変かもしれませんね。そこで、netsh コマンドを用いてコマンド ラインからアカウントのパスワードを事前キャッシュする方法があります。
これもとても簡単で、ドメインコントローラーでコマンド プロンプトを開き、下記のコマンドを入力するだけです。
Repadmin /rodcpwdrepl <RODC ホスト名> <書き込み可能 DC ホスト名> <アカウントの識別名*>
* アカウントの識別名は、"CN=testuser01,CN=Users,DC=domain,DC=com" のような形式で記述する必要があります。
お客様の環境に合わせてスクリプトなどに組み込むことで、一括してパスワードのキャッシュを行うことも可能です。
(4) 緊急時の対応 : パスワードのリセット方法
万が一 RODC が盗まれてしまった・・・という状況になった場合は、RODC のオブジェクトを削除すると同時に、当該 RODC にパスワードがキャッシュされているアカウントのパスワードを全てリセットすることがセキュリティ上推奨されます。このリセットの処理は、RODC のオブジェクトの削除時に同時に実施できます。
まず、下の画面のように、[Active Directory ユーザーとコンピューター] の MMC スナップインから、RODC のオブジェクトを削除します。
削除を実行すると、下記のダイアログボックスが表示され、この RODC にキャッシュされたパスワードを全てリセットするか否かのを選択できます。既定では、ユーザー アカウントのパスワードは全てリセットするようになっていますが、コンピューターアカウントのパスワードをリセットするチェック ボックスはオンになっていません。これは、警告メッセージにもあるように、全てのコンピューターをドメインに再参加させる必要があり、影響が大きいためです。
しかしながら、残念なことにこのパスワードのリセット処理に既知の不具合があります。
それは、上記の画面のように、コンピューターアカウントのパスワードをリセットしないように設定しているにも関わらず、実際にはコンピューターアカウントのパスワードがリセットされてしまうというものです。この場合、パスワードがリセットされたコンピューターでは、ドメインへの再参加が必要となってしまいます。
この問題は Windows Server 2008 においては、最新のサービス パックである SP2 (2010 年 2 月 5 日現在) を適用していても発生します。
一方、Windows Server 2008 R2 では RTM バージョンにおいて既に修正されており、この問題は発生しません。
当該不具合については、下記の弊社 Webサイトにて情報を公開しており、サービス パックとは個別の修正プログラムを提供しております。RODC をご利用される場合は事前に修正プログラムをダウンロードし、インストールしておいていただくことをお勧めいたします。
- 参考情報
文書番号 : 968292
Cached passwords for computer accounts are reset when you remove an RODC that is running Windows Server 2008 from Active Directory after you clear the check box that resets cached passwords for computer accounts
https://support.microsoft.com/kb/968292/en-us
なお、この節で紹介したパスワードレプリケーション ポリシーの設定方法については、下記の弊社 Web サイトにも紹介されています。あわせてご参照ください。
- 参考資料
TechNet - パスワード レプリケーション ポリシーの管理
https://technet.microsoft.com/ja-jp/library/cc753470(WS.10).aspx
3. 信頼先のドメインのコンピューターにログオンする場合は?
ユーザー、コンピューターのパスワードを RODC にキャッシュしている場合でも、信頼関係を結んだドメインのコンピューターにログオンする場合は、注意が必要です。
セキュリティ上の理由から、RODC にはドメインの信頼パスワードをキャッシュすることはできないため、ドメインの信頼関係の確認が必要な状況では、双方のドメインの書き込み可能 DC へのアクセスが必ず必要となるためです。
例として、ブランチオフィスに domainA の RODC と domainB の書き込み可能 DC または RODC が配置されていて、domainB のコンピューターに domainA のユーザーがログオンする場合を考えて見ましょう。
domainA のユーザーのパスワードは RODC にキャッシュされているものとします。このユーザーが domainB のコンピューターにログオンする場合、domainB の DC は、domainA のユーザーが所属するドメインの DC に対して信頼関係の確認を行います。
この確認にはドメイン間の信頼パスワードが必要となりますが、前述の通り、RODC にこの信頼パスワードをキャッシュすることはできません。結果として、domainA の RODC は書き込み可能 DC に対して信頼パスワードの確認の要求を転送するので、domainA の RODC から書き込み可能 DC へのアクセスが不可能な状況ではログオンに失敗するというわけです。
- 参考情報
上記の内容を含めた、複数サイトへの DC の配置についての注意事項が下記の Web サイトで紹介されております。英語のみの情報とはなりますが、あわせてご参照いただけますと幸いです。
TechNet - Sites with Multiple Domain Controllers (英語)
https://technet.microsoft.com/ja-jp/library/cc730693(WS.10).aspx