Kerberos認証の仕組みとRDP・Active Directoryパスワード複製【Windows 11×Windows Server 2019】

リモートワークや拠点分散が当たり前になった今、Windows 11 クライアントから遠隔地の Windows Server 2019 へ RDP 接続する機会は急増しています。しかし、その裏側で動く Kerberos 認証の詳細なフローや、マルチドメイン/複数サイト構成の Active Directory 環境で「パスワード変更」がどう複製されるのかまで正しく説明できる人は多くありません。本記事では、実運用を意識した視点から仕組みと設計ポイントを分かりやすく解説します。

目次

Kerberos認証とは?Windowsドメインで使われる標準認証プロトコル

Windows のドメイン環境では、ユーザーやコンピューターの認証に Kerberos 認証 が標準で使われています。古くからある NTLM と比べて、パスワードをネットワークに流さず、チケットベースで安全かつ効率的に認証できるのが特徴です。

まずは、RDP やパスワード複製の詳細に入る前に、Kerberos の登場人物と基本用語を整理しておきましょう。

Kerberos認証に登場する主なコンポーネント

  • クライアント
    Windows 11 など、ユーザーがログオンする端末。RDP を開始する側です。
  • ドメインコントローラー (DC)
    Active Directory をホストするサーバー。Kerberos の世界では KDC (Key Distribution Center) でもあります。
  • RDP サーバー
    Windows Server 2019 など、リモートデスクトップの接続先となるサーバー。ドメイン参加しており、コンピューターアカウントを持ちます。
  • ユーザーアカウント
    ドメインに存在するユーザー。パスワードから Kerberos 用の秘密鍵が生成されます。
  • SPN (Service Principal Name)
    サービスとサービスアカウントを対応づける識別子。RDP では TERMSRV/<サーバー名> などの SPN が利用されます。

Kerberosで扱うチケットの種類

Kerberos では、認証に次の 2 種類のチケットが登場します。

チケット種類発行者暗号化の鍵用途
TGT (Ticket-Granting Ticket)DC (KDC)ドメイン内の krbtgt アカウントの秘密鍵「サービスチケットをください」と KDC にお願いするためのパスポート的チケット
サービスチケットDC (KDC)対象サービス (RDP サーバーなど) の秘密鍵実際にサービス (RDP, SMB, HTTP など) にアクセスするときに提示するチケット

ユーザーはまず TGT を取得し、その TGT を使って個々のサービス (RDP など) 用のサービスチケットを要求し、それを提示してサービスにアクセスします。

Windows 11からWindows Server 2019へのRDPで見るKerberos認証フロー

ここからは、質問にもあったシナリオ:

  • クライアント:Windows 11
  • 接続先:Windows Server 2019 (RDP)
  • ドメイン環境:Active Directory ドメインに両者が参加

を前提に、「いつ・誰が・どの情報を」送るのかをタイムライン形式で整理します。

Kerberos認証とRDP接続の全体タイムライン

フェーズタイミング通信内容 (平文パスワードは流れない)主な暗号化キー代表ポート
① AS_REQ / AS_REPユーザーが Windows 11 にログオンした直後クライアント → DC に AS_REQ 送信 (ユーザー名+前認証データ)
DC → クライアントに AS_REP 返却 (TGT + セッションキー)
TGT: KDC の秘密鍵で暗号化
セッションキー: ユーザーのパスワードハッシュ由来の鍵で暗号化
UDP/TCP 88 (Kerberos)
② TGT キャッシュログオン処理完了後クライアントが TGT を復号し、ローカルのチケットキャッシュ (LSASS) に保存通信なし
③ TGS_REQ / TGS_REPユーザーが RDP 接続を開始したタイミングクライアント → DC に TGS_REQ 送信 (TGT + オーセンティケータ)
DC → クライアントに TGS_REP 返却 (RDP 用サービスチケット)
サービスチケット: RDP サーバーのコンピューターアカウント秘密鍵で暗号化UDP/TCP 88 (Kerberos)
④ サービスアクセス (AP_REQ)RDP セッション確立時クライアント → RDP サーバーへ サービスチケット + 新オーセンティケータを送信
RDP サーバー側でチケット検証し、認証成功ならセッション確立
チケット内部はサーバー秘密鍵+セッションキーで保護TCP 3389 (RDP)

重要なのは、フェーズ④の「RDP サーバーへの接続」では Kerberos 専用ポート 88 は使われないという点です。Kerberos に関するやり取りはあくまで「クライアント ↔ DC」の間で行われ、RDP サーバーとは 3389/TCP 上の RDP プロトコルの一部として認証情報が交換されます。

フェーズ①:ユーザーがWindows 11にログオンするときのAS_REQ / AS_REP

ユーザーが Windows 11 のログオン画面にドメインユーザー名とパスワードを入力すると、クライアント内部では次のような流れになります。

  1. ユーザーが入力したパスワードから、クライアント側で Kerberos 用の秘密鍵 (実体としてはパスワードハッシュを元にした鍵) を生成。
  2. クライアント → DC に AS_REQ を送信。前認証として「現在時刻をパスワード由来の鍵で暗号化したデータ」などが含まれます。
  3. DC は、Active Directory に保存されているユーザーのパスワードハッシュから同じ鍵を生成し、前認証データを復号できるかを確認。
  4. 問題なければ AS_REP を返却。その中に
    • ユーザー用のセッションキー (ユーザー鍵で暗号化)
    • TGT (KDC の秘密鍵で暗号化されており、クライアントは中身を直接読めない)
    が含まれます。
  5. クライアントはユーザー鍵でセッションキーを復号し、TGT とともにローカルにキャッシュします。

この時点で、ユーザーのパスワードそのものがネットワークを流れることはありません。あくまで「パスワードから作った鍵で暗号化されたデータ」が送られ、DC 側で正しく復号できるかどうかで認証を行っています。

フェーズ③:RDPサービス用のサービスチケット取得 (TGS_REQ / TGS_REP)

ユーザーが mstsc.exe を起動して RDP 接続を開始するタイミングで、クライアントは既に持っている TGT を使って DC に「RDP 用のサービスチケットをください」と要求します。

  1. クライアントは RDP 接続先サーバー名から SPN (TERMSRV/<FQDN> など) を組み立てます。
  2. クライアント → DC に TGS_REQ を送信。中には以下が含まれます。
    • 先ほど取得した TGT
    • オーセンティケータ (現在時刻等を TGT セッションキーで暗号化したもの)
    • 要求するサービスの SPN (RDP サーバー)
  3. DC は KDC の秘密鍵で TGT を復号し、ユーザー情報と TGT セッションキーを取り出します。
  4. 取り出した TGT セッションキーでオーセンティケータを復号し、時刻・再利用などを検証します。
  5. 問題なければ TGS_REP を返却し、その中に
    • RDP サーバー用サービスチケット (RDP サーバーのコンピューターアカウント秘密鍵で暗号化)
    • クライアントと RDP サーバー間で使うセッションキー (TGT セッションキーで暗号化)
    を含めます。

クライアントはこれを受け取り、RDP サーバー用のサービスチケットをローカルキャッシュに保存します。

フェーズ④:RDPサーバーへの接続とAP_REQ

続いて、クライアントは取得したサービスチケットを使って RDP サーバーに接続します。この通信は TCP 3389 上で行われ、必要に応じて TLS で暗号化されています。

  1. クライアント → RDP サーバーに接続し、ログオンプロトコル (通常は NLA+Kerberos/NTLM) のネゴシエーションが行われます。
  2. Kerberos を使う場合、クライアントは AP_REQ メッセージとして
    • サービスチケット
    • オーセンティケータ (クライアント時刻などをサービスセッションキーで暗号化)
    を RDP サーバーに送信します。
  3. RDP サーバーは、自身のコンピューターアカウント秘密鍵でサービスチケットを復号し、チケット内部のセッションキーを取り出します。
  4. 取り出したセッションキーでオーセンティケータを復号し、時刻・再利用チェックを行います。
  5. 問題なければクライアントを正当なユーザーとして認め、必要に応じて AP_REP で相互認証を返し、その後通常の RDP セッションが開始されます。

ここでも、RDP サーバーとの間で ユーザーの平文パスワードが流れることはありません。RDP サーバーは DC から発行されたチケットを検証するだけで、「ユーザーが誰であるか」を判断しています。

認証後のアクセス制御:RDPログオン権限の確認

Kerberos 認証が成功すると、RDP サーバーはチケット内のユーザー SID やグループ SID を元にローカルの Windows セキュリティポリシー (ユーザー権利の割り当て) を評価します。

  • 「リモート デスクトップ サービスを通じてログオンを許可」 にユーザーや所属グループが含まれているか
  • ネットワークレベル認証 (NLA) が有効かどうか
  • Firewall / ネットワークポリシーで 3389/TCP が許可されているか

ここで許可されて初めて、RDP のデスクトップセッションが表示されます。

マルチドメイン/複数サイト構成でのパスワード変更と複製

次に質問のもう一つのポイント、「複数ドメイン/複数サイト構成でのパスワード変更の複製」について見ていきます。例として、次のような構成を考えます。

  • Active Directory フォレスト内に複数サイト (北米サイト・南米サイトなど)
  • ドメインは 1 つとし、そのドメインの PDC エミュレーター が北米サイトに存在
  • 南米サイトにも複数の DC が存在 (ユーザーの最寄り DC)

このとき、南米サイトのユーザーがパスワードを変更すると、どのようにパスワード情報が複製されるのかを順に追ってみます。

PDCエミュレーターの役割を整理する

Active Directory には 5 つの FSMO ロールがありますが、パスワード変更に特に関わるのが PDC エミュレーター です。PDC エミュレーターは、同じドメイン内の DC から見て「パスワードの権威」として扱われます。

  • パスワード変更は、原則として PDC エミュレーターに即時レプリケーションされる
  • ユーザーが最近パスワードを変更した直後でも、他の DC は PDC に問い合わせることで最新パスワードを確認できる
  • 古いパスワードでログオンしようとする場合も、一度だけ PDC に問い合わせてみる挙動がある

この仕組みによって、「パスワードを変えた直後に、別サイトのサーバーへアクセスしてもログオンできない」といったトラブルを軽減しています。

同一ドメイン内、別サイトのパスワード変更フロー

南米サイトユーザーがパスワードを変更した場合の典型的な流れを、ステップごとに整理します。

ステップ動作関与するDCポイント
1. パスワード変更要求ユーザーは Windows の「パスワードの変更」画面や Ctrl+Alt+Del からパスワード変更を実行最寄りの南米サイト DCクライアントは通常、サイト情報と DNS をもとに最も近い DC を選択
2. DC への送信クライアント → 南米サイト DC に、新旧パスワードを含むパスワード変更要求を送信 (Kerberos なら UDP/TCP 464)南米サイト DC平文パスワードではなく、プロトコルに従った安全な方法で送信される
3. PDC への即時転送南米サイト DC は、パスワード変更を北米サイトの PDC エミュレーターへ「緊急レプリケーション」として即時転送PDC エミュレーター (北米サイト)通常のレプリケーションスケジュールとは別枠で、できるだけ早く伝達される
4. PDC での更新PDC がユーザーオブジェクトのパスワードハッシュを更新PDC エミュレーターこの時点で「正」のパスワード情報は PDC に存在する
5. 通常レプリケーションPDC から他サイト・同サイトの DC へ通常の AD レプリケーションにより変更が複製される各サイトの DCサイトリンクのレプリケーション間隔に依存するが、パスワード変更は比較的優先度が高い

この仕組みによって、南米サイトでパスワードを変更しても、短時間のうちに北米サイトを含む全 DC に新パスワードが行き渡ります。

パスワード変更直後のログオンはどう扱われるか

とはいえ、レプリケーションが完了する前に別サイトの DC に対してログオンしてしまうケースは現実的にあり得ます。その場合、AD には次のような挙動があります。

  • ユーザーが新パスワードでログオンしようとし、ローカル DC の情報が古かった場合
    • DC は一度だけ PDC エミュレーターに問い合わせて、「最新パスワード」で認証できるか確認
    • PDC で認証が成功すれば、その結果を元にログオンを許可し、ローカル DC の情報も更新
  • ユーザーが古いパスワードでログオンしようとした場合
    • 同様に PDC に問い合わせを行い、そこでも失敗した場合はログオン失敗となる

この挙動により、「パスワード変更直後なのに別拠点サーバーへログオンしたら認証が通らない」といった問題が起こりにくくなっています。

複数ドメイン環境で考慮すべきポイント

フォレスト内に複数ドメインがある場合、パスワード情報はドメイン単位で管理されます。つまり、「ユーザーが所属するアカウントドメイン」の中でのみパスワードが複製され、別ドメインには直接複製されません。

  • ユーザーアカウントは「ユーザードメイン」に属する
  • RDP サーバーなどのリソースは「リソースドメイン」に属する場合がある
  • この場合、Kerberos は「クロスドメインのチケット (信頼関係に基づく referral)」を使って認証する

ただし、ユーザーのパスワードそのものはユーザードメインでのみ管理・複製される点は変わりません。RDP サーバーが別ドメインにあっても、最終的な「ユーザーの正しさ」を保証するのはユーザードメインの DC (およびその PDC エミュレーター) です。

リモート環境で開放すべきポート整理:KerberosとRDP、AD参照系

質問の「リモート環境で開放すべきポート」について、Kerberos 認証付き RDP を成立させるための最低限を整理しておきます。ここでは、クライアントがリモートサイトの DC と RDP サーバーにアクセスするケースを想定します。

クライアント ↔ DC (Kerberos認証・パスワード変更)

ポートプロトコル方向用途
88TCP / UDPクライアント ↔ DCKerberos 認証 (AS_REQ / TGS_REQ など)
464TCP / UDPクライアント ↔ DCKerberos パスワード変更 (kpasswd プロトコル)

Kerberos 認証を利用する場合、少なくとも上記ポートはクライアントから DC へ到達できる必要があります。

クライアント ↔ DC (Active Directory参照系)

アプリケーションや管理ツールが LDAP 経由で Active Directory を参照する場合、次のポートも必要です。

ポートプロトコル方向用途
389TCPクライアント ↔ DCLDAP (ユーザー・グループなどのディレクトリ参照)
636TCPクライアント ↔ DCLDAPS (LDAP over SSL/TLS)
3268TCPクライアント ↔ グローバルカタログGC (フォレスト全体検索)
3269TCPクライアント ↔ グローバルカタログGC over SSL/TLS

純粋に「ドメインログオンと RDP だけ」が目的であれば、LDAP 参照系のポートは必須ではない場合もありますが、運用やアプリ連携を考えると開放が必要になるケースが多いです。

クライアント ↔ RDPサーバー (RDP本体)

ポートプロトコル方向用途
3389TCPクライアント ↔ RDP サーバーリモートデスクトップ (RDP) 本体

Kerberos で認証するか NTLM で認証するかに関わらず、RDP 本体の通信は 3389/TCP を利用します。Kerberos のチケットは、このポート上の RDP プロトコル内でやり取りされるだけであり、RDP サーバー側でポート 88 を開ける必要はありません。

時刻同期:NTPポートの重要性

Kerberos 認証においては、クライアントと DC の時刻差が大きいと、「再生攻撃を防ぐ」観点からチケットが拒否されます。一般的な許容範囲は 5 分程度と言われており、時刻ずれがあるだけで認証エラーが頻発することもあります。

ポートプロトコル方向用途
123UDPクライアント ↔ 時刻サーバー (DC を兼ねることが多い)NTP による時刻同期

マルチサイト環境では、各サイトの DC が信頼できる NTP ソースから時刻同期するように設計し、「時刻ズレが Kerberos 失敗の原因になっていないか」を常に意識しておきましょう。

実運用で役立つトラブルシューティングと設計Tips

ここまでの仕組みを踏まえて、現場でよく遭遇する問題と、そのチェックポイント・設計のコツをいくつか挙げておきます。

Kerberos認証が失敗するときの典型パターン

  • 時刻ずれ
    • サイト間で NTP の上位ソースが異なり、数分以上のズレが発生
    • 仮想環境でホスト時刻とゲスト時刻がズレている
  • SPN の不整合
    • RDP サーバーのコンピューターアカウントに正しい SPN (TERMSRV/…) が登録されていない
    • 重複した SPN が別アカウントに登録されている
  • Firewall / ネットワーク制限
    • クライアントから DC への 88/TCP, 464/TCP が閉じており、Kerberos が使えず NTLM フォールバックしている
    • VPN 経由で特定ポートのみ許可されており、必要なポートが足りない
  • DNS の誤設定
    • クライアントが社外 DNS を参照しており、ドメインコントローラーを正しく名前解決できない
    • 逆引きや SRV レコードが壊れている

現場で使える確認コマンド例

Kerberos や AD レプリケーションの状態を確認するために、次のようなコマンドが役立ちます。

klist

現在のユーザーが保持している TGT やサービスチケットを確認できます。「RDP 接続前後でどのチケットが増えたか」を見ると理解が深まります。

setspn -L &lt;コンピューターアカウント名&gt;

指定したアカウントに登録されている SPN を確認できます。RDP サーバーの SPN が正しく登録されているかチェックする際に利用します。

nltest /dsgetdc:&lt;ドメイン名&gt;

クライアントから見て、どのドメインコントローラーが選択されているかを確認できます。サイト設定や DNS が適切かどうかの検証に有用です。

repadmin /replsummary

ドメインコントローラー間のレプリケーションの状態を俯瞰できます。パスワード変更が各 DC に届いているか確認する一助になります。

マルチサイトAD設計の実践的ポイント

  • サイトとサブネットの設計
    • 南米・北米など、実際のネットワーク遅延を反映したサイト設計を行う
    • クライアントの IP アドレス範囲が正しくサイトに紐づいていることを確認
  • サイトリンクとレプリケーション間隔
    • パスワード変更が拠点をまたいでも遅延しないよう、レプリケーション間隔を過度に長くしない
    • 帯域制限が厳しい場合でも、パスワードやロックアウト情報は優先的に伝搬されるように設計
  • PDCエミュレーターの配置
    • ユーザー数が多い拠点、もしくは管理者操作が集中する拠点に配置するのが一般的
    • 遠隔拠点の DC から PDC までのネットワーク品質 (遅延・帯域) に注意
  • 時刻同期のトポロジ設計
    • フォレストルートドメインの PDC を最上位の NTP ソースにし、他 DC が階層的に同期する構成を検討
    • 仮想化基盤とゲスト OS の両方で時刻同期が二重にならないようにする

まとめ:Kerberosとパスワード複製を理解して安全なRDP環境を構築する

本記事では、

  • Windows 11 クライアントから Windows Server 2019 への RDP 接続時に、いつ・誰が・どの情報をやり取りして Kerberos チケットを取得するのか
  • マルチドメイン/複数サイト構成の Active Directory 環境で、パスワード変更がどのように PDC エミュレーター経由で複製されるのか
  • リモート環境で Kerberos 認証付き RDP を成立させるために、どのポートを開放すべきか

という 3 つの観点から、Kerberos 認証と AD レプリケーションの実像を解説しました。

ポイントをあらためて整理すると、

  • パスワードそのものはネットワークを流れず、常にハッシュや暗号化されたデータとして扱われる
  • RDP サーバー自体は Kerberos ポートを使わず、DC とクライアントの間だけで Kerberos が完結する
  • パスワード変更は PDC エミュレーターへ即時転送され、さらに通常レプリケーションで各 DC へ行き渡る
  • 時刻同期と適切なポート開放が Kerberos 認証の成立条件として非常に重要

これらを理解しておくことで、単に「なんとなくドメイン参加して RDP が動いている」から一歩進んで、設計意図を持って安全かつトラブルに強いリモートデスクトップ環境を構築できるようになります。特に拠点分散・マルチドメイン環境では、Kerberos と AD レプリケーションの仕組みをきちんと押さえておくことが、将来の障害対応コストを大きく下げることにつながります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次