Ntdsutil.exe を使用して Active Directory で LDAP ポリシーを表示および設定する

この記事では、Ntdsutil.exe ツールを使用してライトウェイト ディレクトリ アクセス プロトコル (LDAP) ポリシーを管理する方法について説明します。

適用対象: Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
元の KB 番号: 315071

概要

ドメイン コントローラーがサービス レベルの保証をサポートできるようにするには、多くの LDAP 操作の操作制限を指定する必要があります。 これらの制限により、特定の操作がサーバーのパフォーマンスに悪影響を与えるのを防ぎます。 また、一部の種類の攻撃に対するサーバーの回復性も向上します。

LDAP ポリシーは、 クラスの queryPolicy オブジェクトを使用して実装されます。 クエリ ポリシー オブジェクトは、構成の名前付けコンテキストの Directory Service コンテナーの子であるクエリ ポリシー コンテナーに作成できます。 たとえば、cn=Query-Policies、cn=Directory Service、cn=Windows NT、cn=Services 構成の名前付けコンテキストなどです。

LDAP 管理の制限

LDAP 管理の制限は次のとおりです。

  • InitRecvTimeout - この値は、ドメイン コントローラーが新しい接続を受信した後にクライアントが最初の要求を送信するのをドメイン コントローラーが待機する最大時間を秒単位で定義します。 クライアントがこの時間内に最初の要求を送信しない場合、サーバーはクライアントを切断します。

    既定値: 120 秒

  • MaxActiveQueries - ドメイン コントローラーで同時に実行できる同時 LDAP 検索操作の最大数。 この制限に達すると、LDAP サーバーは ビジー エラーを返します。

    既定値: 20

    注:

    このコントロールと MaxPoolThreads 値の間違った相互作用があります。 MaxPoolThreads はプロセッサごとのコントロールですが、MaxActiveQueries は絶対数を定義します。 Windows Server 2003 以降、MaxActiveQueries は適用されなくなりました。 さらに、Windows Server 2003 バージョンの NTDSUTIL には MaxActiveQueries は表示されません。

    既定値: 20

  • MaxConnections - ドメイン コントローラーが受け入れる同時 LDAP 接続の最大数。 ドメイン コントローラーがこの制限に達した後に接続が確立されると、ドメイン コントローラーは別の接続を切断します。

    既定値: 5000

  • MaxConnIdleTime - LDAP サーバーが接続を閉じる前にクライアントをアイドル状態にできる最大時間 (秒単位)。 接続がこれ以上アイドル状態の場合、LDAP サーバーは LDAP 切断通知を返します。

    既定値: 900 秒

  • MaxDatagramRecv - ドメイン コントローラーが処理するデータグラム要求の最大サイズ。 MaxDatagramRecv の値より大きい要求は無視されます。

    既定値: 4,096 バイト

  • MaxNotificationPerConnection - 1 つの接続で許可される未処理の通知要求の最大数。 この制限に達すると、サーバーは、その接続で実行される新しい通知検索に ビジー エラーを返します。

    既定値: 5

  • MaxPageSize - この値は、返される各オブジェクトの大きさに関係なく、1 つの検索結果で返されるオブジェクトの最大数を制御します。 結果がこのオブジェクト数を超える可能性がある検索を実行するには、クライアントでページ検索コントロールを指定する必要があります。 返された結果を、MaxPageSize 値以下のグループにグループ化します。 要約すると、MaxPageSize は、1 つの検索結果で返されるオブジェクトの数を制御します。

    既定値: 1,000

  • MaxPoolThreads - ドメイン コントローラーがネットワーク入力または出力 (I/O) のリッスンに使用するプロセッサごとのスレッドの最大数。 この値は、同時に LDAP 要求で動作できるプロセッサごとのスレッドの最大数も決定します。

    既定値: プロセッサあたり 4 スレッド

  • MaxResultSetSize - ページ結果検索を構成する個々の検索間で、ドメイン コントローラーはクライアントの中間データを格納できます。 ドメイン コントローラーは、ページ結果検索の次の部分を高速化するために、このデータを格納します。 MaxResultSize 値は、この種の検索に対してドメイン コントローラーが格納するデータの合計量を制御します。 この制限に達すると、ドメイン コントローラーは、これらの中間結果の中で最も古いものを破棄して、新しい中間結果を格納する領域を作ります。

    既定値: 262,144 バイト

  • MaxQueryDuration - ドメイン コントローラーが 1 回の検索に費やす最大時間 (秒単位)。 この制限に達すると、ドメイン コントローラーは "timeLimitExceeded" エラーを返します。 より多くの時間を必要とする検索では、ページングされた結果コントロールを指定する必要があります。

    既定値: 120 秒

  • MaxTempTableSize - クエリが処理されている間に、 dblayer から中間結果を並べ替えて選択する一時データベース テーブルを作成しようとする場合があります。 MaxTempTableSize 制限は、この一時データベース テーブルのサイズを制御します。 一時データベース テーブルに MaxTempTableSize の値より多くのオブジェクトが含まれる場合、 では、 dblayer 完全な DS データベースと DS データベース内のすべてのオブジェクトのはるかに効率的な解析が実行されます。

    既定値: 10,000 レコード

  • MaxValRange - この値は、オブジェクトの属性の数、または検索結果に含まれるオブジェクトの数に関係なく、オブジェクトの属性に対して返される値の数を制御します。 Windows 2000 では、このコントロールは 1,000 でハードコーディングされています。 属性に MaxValRange 値で指定された値の数を超える場合は、LDAP の値範囲コントロールを使用して、MaxValRange 値を超える値を取得する必要があります。 MaxValueRange は、1 つのオブジェクトの 1 つの属性で返される値の数を制御します。

    • 最小値: 30
    • 既定値: 1500

Ntdsutil.exe を開始する

Ntdsutil.exe は、Windows インストール CD-ROM の [サポート ツール] フォルダーにあります。 既定では、Ntdsutil.exe は System32 フォルダーにインストールされます。

  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
  2. [ 開く ] テキスト ボックス に「ntdsutil」と入力し、Enter キーを押します。 ヘルプをいつでも表示するには、コマンド プロンプトで「」と入力 ? します。

現在のポリシー設定を表示する

  1. Ntdsutil.exe コマンド プロンプトで、「」と入力 LDAP policiesし、Enter キーを押します。
  2. LDAP ポリシーのコマンド プロンプトで、「」と入力 connectionsし、Enter キーを押します。
  3. サーバー接続コマンド プロンプトで、「」と入力 connect to server <DNS name of server>し、Enter キーを押します。 現在使用しているサーバーに接続する必要があります。
  4. サーバー接続コマンド プロンプトで、「」と入力 qし、Enter キーを押して前のメニューに戻ります。
  5. LDAP ポリシーのコマンド プロンプトで、「」と入力 Show Valuesし、Enter キーを押します。

存在するポリシーの表示が表示されます。

ポリシー設定を変更する

  1. Ntdsutil.exe コマンド プロンプトで、「」と入力 LDAP policiesし、Enter キーを押します。

  2. LDAP ポリシーのコマンド プロンプトで、「」と入力 Set <setting> to <variable>し、Enter キーを押します。 たとえば、「 MaxPoolThreads を 8 に設定する」と入力します。

    サーバーに別のプロセッサを追加すると、この設定が変更されます。

  3. コマンドを Show Values 使用して変更を確認できます。

    変更を保存するには、 変更のコミットを使用します

  4. 完了したら、「」と入力 qし、Enter キーを押します。

  5. Ntdsutil.exe を終了するには、コマンド プロンプトで「」と入力 qし、Enter キーを押します。

注:

この手順では、既定のドメイン ポリシー設定のみが表示されます。 独自のポリシー設定を適用すると、表示できません。

再起動の要件

ドメイン コントローラーが現在使用しているクエリ ポリシーの値を変更した場合、それらの変更は再起動なしで有効になります。 ただし、新しいクエリ ポリシーが作成された場合、新しいクエリ ポリシーを有効にするには再起動が必要です。

クエリ値の変更に関する考慮事項

ドメイン サーバーの回復性を維持するために、タイムアウト値を 120 秒に増やすことはお勧めしません。 より効率的なクエリを形成することが推奨されるソリューションです。 効率的なクエリの作成の詳細については、「 より効率的な Microsoft Active Directory-Enabled アプリケーションの作成」を参照してください。

ただし、クエリを変更してもオプションではない場合は、1 つのドメイン コントローラーでのみ、または 1 つのサイトでのみタイムアウト値を増やします。 手順については、次のセクションを参照してください。 設定が 1 つのドメイン コントローラーに適用されている場合は、クライアントが認証にサーバーを使用する可能性が低いように、ドメイン コントローラーの DNS LDAP 優先順位を減らします。 優先度が高いドメイン コントローラーで、次のレジストリ設定を使用して を設定 LdapSrvPriorityします。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

[ 編集 ] メニューの [ 値の追加] を選択し、次のレジストリ値を追加します。

  • エントリ名: LdapSrvPriority
  • データ型: REG_DWORD
  • 値: 値を目的の優先順位の値に設定します。

詳細については、「 クライアントのサイトの外部に存在するドメイン コントローラーまたはグローバル カタログの場所を最適化する方法」を参照してください。

ドメイン コントローラーごとまたはサイト ポリシーごとに構成する手順

  1. CN=Query-Policies、CN=Directory Service、CN=Windows NT、CN=Services、CN=Configuration、フォレスト ルートの下に新しいクエリ ポリシーを作成します。

  2. Query-Policy-Object 属性に新しいポリシーの識別名を入力して、ドメイン コントローラーまたはサイトを新しいポリシーを指すように設定します。 属性の場所は次のとおりです。

    • ドメイン コントローラーの場所は、CN=NTDS 設定、CN= DomainControllerName、CN=Servers、CN= サイト名、CN=Sites、CN=Configuration、 フォレスト ルートです。

    • サイトの場所は CN=NTDS サイト設定、CN= サイト名、CN=Sites、CN=Configuration、 フォレスト ルートです。

サンプル スクリプト

次のテキストを使用して、Ldifde ファイルを作成できます。 このファイルをインポートして、タイムアウト値が 10 分のポリシーを作成できます。 このテキストを Ldappolicy.ldf にコピーし、次のコマンドを実行します。 ここで、フォレスト ルートはフォレスト ルート の識別名です。 DC=X はそのままにしておきます。 これは、スクリプトの実行時にフォレスト ルート名に置き換えられる定数です。 定数 X はドメイン コントローラー名を示しません。

ldifde -i -f ldappolicy.ldf -v -c DC=X DC= forest root

Ldifde スクリプトを起動する

dn: CN=Extended Timeout,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=X  
changetype: add  
instanceType: 4  
lDAPAdminLimits: MaxReceiveBuffer=10485760  
lDAPAdminLimits: MaxDatagramRecv=1024  
lDAPAdminLimits: MaxPoolThreads=4  
lDAPAdminLimits: MaxResultSetSize=262144  
lDAPAdminLimits: MaxTempTableSize=10000  
lDAPAdminLimits: MaxQueryDuration=300  
lDAPAdminLimits: MaxPageSize=1000  
lDAPAdminLimits: MaxNotificationPerConn=5  
lDAPAdminLimits: MaxActiveQueries=20  
lDAPAdminLimits: MaxConnIdleTime=900  
lDAPAdminLimits: InitRecvTimeout=120  
lDAPAdminLimits: MaxConnections=5000  
objectClass: queryPolicy  
showInAdvancedViewOnly: TRUE

ファイルをインポートした後、Adsiedit.msc または Ldp.exe を使用してクエリ値を変更できます。 このスクリプトの MaxQueryDuration 設定は 5 分です。

ポリシーを DC にリンクするには、次のような LDIF インポート ファイルを使用します。

dn: CN=NTDS  
Settings,CN=DC1,CN=Servers,CN=site1,CN=Sites,CN=Configuration, DC=X  
changetype: modify  
add: queryPolicyobject  
queryPolicyobject: CN=Extended Timeout,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=X

次のコマンドを使用してインポートします。

ldifde -i -f link-policy-dc.ldf -v -c DC=X DC= **forest root**

サイトの場合、LDIF インポート ファイルには次のものが含まれます。

dn: CN=NTDS Site Settings,CN=site1,CN=Sites,CN=Configuration, DC=X  
changetype: modify  
add: queryPolicyobject  
queryPolicyobject: CN=Extended Timeout,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=X

注:

Ntdsutil.exe は、既定のクエリ ポリシーの値のみを表示します。 カスタム ポリシーが定義されている場合、Ntdsutil.exe では表示されません。