🛡️

"認証ポリシー" を使ってユーザーのログオン先を制限する

に公開

はじめに

本記事では、Active Directory の 認証ポリシー (Authentication Policies) を使って、ユーザーのログオン先を特定のコンピューターに制限する方法を紹介します。

例えば、Domain Admins グループに所属するような特権ユーザーは、管理ワークステーションやジャンプサーバーにのみログインできるようにし、標準的な業務サーバーへのログインを制限できます。

何の役に立つの?

特権ドメインアカウントが脆弱なワークステーションやメンバーサーバーにログオンすると、その端末を侵害した攻撃者に資格情報を奪われる恐れがあります。

高い特権を持つアカウントを使用するユーザーが次のようなことを行うと、資格情報を盗まれるリスクが高くなります。

  • セキュリティで保護されていないコンピューターで特権アカウントにサインインする
  • 特権アカウントにサインインしている間にインターネットを閲覧する

引用元: Active Directory をセキュリティで保護するためのベスト プラクティス | Microsoft Learn

特権ドメインアカウントのログオン先を管理専用ワークステーションやサーバーに限定することで、攻撃対象を最小化し横展開や権限昇格のリスクを低減することができます。

他の機能で同じことできなかったっけ...

次の手段でもユーザーのログオン先の制御が可能です。

1. ログオンできるワークステーション (userWorkstations 属性)

ユーザーアカウントのプロパティにある[ログオン先]から、ログオンできる端末をここで指定したデバイスに限定することができます。

Active Directory ユーザーとコンピューターのスナップインからユーザーのプロパティを表示

個々の設定は簡単ですが、ユーザーごとの属性による設定のため一貫性のある管理が困難です。また、公開情報にはこの属性をもう使用しないように注意書きがあります。

ログオン先
引用元:User-Workstations 属性 - Win32 apps | Microsoft Learn

2. ユーザー権利の割り当てのグループポリシー

次のようなユーザー権利の割り当てのグループポリシー設定を行うことでも、ユーザーのログオン先デバイスの制御が可能です。

・ネットワーク経由のアクセス (を拒否)
・バッチ ジョブとしてのログオン (を拒否)
・サービスとしてのログオンを許可 (拒否)
・ローカルログオンを許可 (拒否)
・リモート デスクトップ サービスを使ったログオンを許可 (拒否)

ユーザー権利の割り当ては、ドメインのグループポリシーの管理 (gpmc.msc) やローカルデバイス上のローカルグループポリシーエディター (gpedit.msc) で、[コンピューターの構成] - [ポリシー] - [Windows の設定] - [セキュリティの設定] - [ローカル ポリシー] - [ユーザー権利の割り当て] から設定します。

OU 構成が複雑な環境では、最終的にどのポリシーが適用されるのかが把握しづらいかもしれません。また、ローカル側で暗黙的に設定されている既定のユーザー権利の設定を意図せず上書きしないよう、設定時には注意が必要です。

https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/user-rights-assignment

https://go.microsoft.com/fwlink/?linkid=17924

認証ポリシーのしくみ

認証ポリシー (Authentication Policies) を使うことで、Kerberos の TGT (Ticket Granting Ticket) の発行を特定のコンピューターに制限できます。これによりユーザーのログオン先の制御を実現しています。

詳細なしくみについては次の公開情報の「ユーザーサインイン制限のしくみ」セクションを参考にしてください。

https://learn.microsoft.com/ja-jp/windows-server/security/credentials-protection-and-management/authentication-policies-and-authentication-policy-silos

認証ポリシーの設定例

今回は例として、dcadmin1 という特権ユーザーのログオン先をドメインコントローラーと特権アクセスワークステーション (例:PAW-PC) にのみ許可、その他のデバイスへのログオンを拒否するポリシーを作成します。

まずは認証ポリシーの前提条件を満たしていることを確認します。

前提条件

  • Active Directory の ドメイン機能レベル が Windows Server 2012 R2 以上
  • 制御対象デバイスの OS バージョンが Windows 8.1 または Windows Server 2012 R2 以上

 
手順は大きく次のステップに分かれます。

認証ポリシー作成の流れ

  1. Protected Users グループにユーザーを追加
  2. ドメインコントローラーに "KDC で信頼性情報、複合認証、および、Kerberos 防御をサポートする" ポリシーを適用
  3. ログオン先デバイスに "Kerberos クライアントで信頼性情報、複合認証、および Kerberos 防御をサポートする" ポリシーを適用
  4. 認証ポリシーの作成

 
以下、それぞれの設定項目の詳細です。

1. Protected Users グループにユーザーを追加

ログオンできるデバイスを制限する対象のユーザーを (今回の例では dcadmin1)、Protected Users グループ のメンバーとして追加します。

Protected Users グループにユーザーを追加すると、次の制限が適用されます。

Windows 8.1 デバイスおよび Windows Server 2012 R2 ホストにサインオンしている Protected Users グループのメンバーは、次の機能を使用 できなくなります 。

既定の資格情報の委任 (CredSSP) - プレーンテキストの資格情報は、[既定の資格情報の委任を許可する] ポリシーが有効な場合でもキャッシュされません

  • Windows ダイジェスト - プレーンテキストの資格情報はそれらが有効な場合でもキャッシュされません
  • NTLM - NTOWF はキャッシュされません
  • Kerberos 長期キー - Kerberos チケット保証チケット (TGT) はログオン時に取得され、自動で再取得することはできません
  • オフラインでのサインオン - キャッシュされたログオン検証は作成されません

ドメインの機能レベルが Windows Server 2012 R2 の場合、グループのメンバーはもはや次のことを行えません。

  • NTLM 認証を使用した認証
  • Kerberos 事前認証におけるデータ暗号化標準 (DES) または RC4 暗号スイートの使用
  • 制約なし/制約付き委任を使用した委任
  • 最初の 4 時間の有効期間後のユーザー チケット (TGT) の更新

引用元: 保護されたアカウントを構成する方法について説明します

2. ドメインコントローラーに "KDC で信頼性情報、複合認証、および、Kerberos 防御をサポートする" ポリシーを適用

次のポリシーを有効にしてオプションを「サポート」以上に設定した GPO を作成し、ドメインコントローラーに適用 します。

[コンピューターの構成] - [管理用テンプレート] - [システム] - [KDC] - [KDC で信頼性情報、複合認証、および、Kerberos 防御をサポートする]

3. ログオンを許可するデバイスに "Kerberos クライアントで信頼性情報、複合認証、および Kerberos 防御をサポートする" ポリシーを適用

次の設定を有効にした GPO を作成し、ユーザーにログオンを許可するデバイスに適用します。今回のケースでは、ポリシーの適用対象は dcadmin1 のログオン先であるドメインコントローラーと管理業務端末 (PAW-PC) になります。

[コンピューターの構成] - [管理用テンプレート] - [システム] - [Kerberos] - [Kerberos クライアントで信頼性情報、複合認証、および Kerberos 防御をサポートする]

4. 認証ポリシーの作成

ユーザーとデバイスの組み合わせ条件などを設定し、ログオン先を制限するポリシーを作成します。

[管理ツール] から [Active Directory 管理センター] を起動して、左ペインから [認証] をクリック、 [Authentication Policies] を右クリックして [新規] - [認証ポリシー] を選択します。

認証ポリシー作成

[全般] セクションの "表示名" に任意のポリシー名を入力、必要に応じてポリシーの説明も記載します。
ポリシー名と説明入力

[アカウント] セクションに移動、[追加] をクリックし、認証ポリシーの対象とするユーザー名を入力して [OK] をクリックします。対象ユーザーが追加されたことを確認してください。
対象アカウント指定

[ユーザー サインオン] のセクションに移動して [ユーザー アカウントのチケット保証チケットの有効期間を指定します。] にチェックを入れます。"チケット保証チケットの有効期間 (分)" に Kerberos の TGT の有効期間を任意の値で指定します。
TGT 有効期間

同セクションで [編集] を押下します。
アクセス制御条件の編集1

次のような「アクセス制御条件の編集」のウィンドウが表示されるので、[条件の追加] を押下します。
アクセス制御条件の編集2

「ユーザー」「グループ」「次のいずれかに所属する」「値」と順に選択します。「項目の追加」を押下して、ログオンを限定するコンピューターを指定します。今回ドメインコントローラーと特権管理用の端末にのみログオンを限定するので、ドメインコントローラーのコンピューターオブジェクトがメンバーとなる "Domain Controllers" グループと、特権管理用の端末 (PAW-PC) を選択しています。
アクセス制御条件の編集3

指定した条件が反映されていることを確認し、[OK] を押下します。
条件設定確認

認証ポリシーが作成されました。
認証ポリシー作成確認

動作確認結果

ユーザー dcadmin1 を使ってドメインコントローラーや特権管理用のデバイスにはログインできますが、その他のデバイスにログオンを試みると次のメッセージが表示されてログオンできません。

「このアカウントでは、この PC を利用できません。別の PC を使ってください。」
ログオン制限画面

補足

ログオン時のネットワークパケットを確認すると、許可されていないデバイスからの TGT の要求 (KRB_AS_REQ) は KDC_ERR_POLICY (Status: STATUS_INVALID_WORKSTATION) というエラーコードで返されるようです。

ドメインコントローラー側で次のイベントログを有効にすることで、認証ポリシーによって拒否された認証要求を確認することができます。

Microsoft-Windows-Authentication/AuthenticationPolicyFailures-DomainController

今回の設定例ではポリシーを強制しましたが、運用環境に展開するときにはまずは監査モードで展開し、イベントログを確認して影響を評価するのがよいでしょう。

イベントログの一覧は、次の公開情報の「関連するエラー/情報イベント メッセージ」セクションにまとめられています。
https://learn.microsoft.com/ja-jp/windows-server/security/credentials-protection-and-management/authentication-policies-and-authentication-policy-silos#BKMK_ErrorandEvents

参考情報一覧

認証ポリシー
Authentication Policies and Authentication Policy Silos | Microsoft Learn
Using Authentication Policies to Restrict Privileged User Account Logons | Microsoft Learn
Guidance about how to configure protected accounts | Microsoft Learn

Protected Users Group
Protected Users セキュリティ グループ
Using Protected Groups to Secure Privileged User Accounts

ユーザー権利の割り当て
User Rights Assignment
Understanding Group Policies: User Rights Assignment Policies
セキュリティ設定とユーザー権限の割り当てを変更すると、クライアント、サービス、およびプログラムの問題が発生する可能性があります

Discussion