Windows Server で LDAP 署名を有効にする方法

この記事では、Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows 10、Windows 11で LDAP 署名を有効にする方法について説明します。

適用対象:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 11 - すべてのエディション、Windows 10 - すべてのエディション
元の KB 番号: 935834

概要

署名 (整合性検証) を要求しない簡易認証およびセキュリティ層 (SASL) LDAP バインドを拒否するようにサーバーを構成するか、クリア テキスト (非 SSL/TLS 暗号化) 接続で実行される LDAP 単純バインドを拒否するようにサーバーを構成することで、ディレクトリ サーバーのセキュリティを大幅に向上させることができます。 SASL バインドには、ネゴシエート、Kerberos、NTLM、ダイジェストなどのプロトコルが含まれる場合があります。

署名されていないネットワーク トラフィックは、リプレイ攻撃の影響を受けやすくなります。 このような攻撃では、侵入者が認証の試行とチケットの発行を傍受します。 侵入者はチケットを再利用して正当なユーザーを偽装できます。 さらに、署名されていないネットワーク トラフィックは、侵入者がクライアントとサーバーの間のパケットをキャプチャし、パケットを変更してからサーバーに転送する中間者 (MIM) 攻撃の影響を受けやすくなります。 これが LDAP サーバーで発生した場合、攻撃者はサーバーに LDAP クライアントからの偽造要求に基づいて決定を下す可能性があります。

[署名を必要とする] オプションを使用しないクライアントを検出する方法

この構成変更を行った後、署名されていない SASL (ネゴシエート、Kerberos、NTLM、ダイジェスト) に依存するクライアントは、非 SSL/TLS 接続を介して LDAP 単純バインドにバインドされるか、動作を停止します。 これらのクライアントを識別するために、Active Directory Domain Services (AD DS) または Lightweight Directory Server (LDS) のディレクトリ サーバーは、このようなバインドが発生した数を示すために、24 時間ごとに 1 回の概要イベント ID 2887 を記録します。 このようなバインドを使用しないようにこれらのクライアントを構成することをお勧めします。 このようなイベントが長期間観察されない場合は、そのようなバインドを拒否するようにサーバーを構成することをお勧めします。

このようなクライアントを識別するための詳細情報が必要な場合は、より詳細なログを提供するようにディレクトリ サーバーを構成できます。 この追加のログ記録では、クライアントが署名されていない LDAP バインドを作成しようとすると、イベント ID 2889 が記録されます。 ログ エントリには、クライアントの IP アドレスと、クライアントが認証に使用しようとした ID が表示されます。 この追加のログ記録を有効にするには、 16 個の LDAP インターフェイス イベント 診断設定を 2 (Basic) に設定します。 診断設定を変更する方法の詳細については、「 Active Directory および LDS 診断イベント ログを構成する方法」を参照してください。

非 SSL/TLS 接続を介して署名されていない SASL LDAP バインドまたは LDAP 単純バインドを拒否するようにディレクトリ サーバーが構成されている場合、ディレクトリ サーバーは、このようなバインドが試行されたときに 24 時間ごとに 1 回、概要イベント ID 2888 をログに記録します。

AD DS に LDAP サーバー署名を要求するようにディレクトリを構成する方法

セキュリティ設定を変更した場合に考えられる影響については、「セキュリティ設定やユーザー権限の割り当てを変更すると、クライアント、サービス、およびプログラムの問題が発生する可能性がある」を参照してください。

グループ ポリシーを使用する

サーバー LDAP 署名要件を設定する方法

  1. [スタート]>[実行] を選択し、「mmc.exe」と入力して、[OK] を選択します。
  2. [ファイル>の追加と削除] スナップインを選択し、[管理エディターグループ ポリシー選択して、[追加] を選択します。
  3. [グループポリシーオブジェクト>ブラウズ]を選択します。
  4. [グループ ポリシー オブジェクトの参照] ダイアログ ボックスで、[ドメイン]、[OU]、[リンクされたグループ ポリシー オブジェクト] 領域の [既定のドメイン コントローラー ポリシー] を選択し、[OK] を選択します
  5. [完了] を選択します。
  6. [OK] をクリックします。
  7. [既定のドメイン コントローラー ポリシー]>[コンピューター構成>][ポリシー>] [Windows 設定][セキュリティ設定>] [>ローカル ポリシー]を選択し、[セキュリティ オプション] を選択します。
  8. [ドメイン コントローラー: LDAP サーバー署名要件] を右クリックし、[プロパティ] を選択します。
  9. [ドメイン コントローラー: LDAP サーバー署名要件のプロパティ] ダイアログ ボックスで、[ポリシー設定の定義] を有効にし、[ポリシー設定の定義] ボックスの一覧で [署名が必要] を選択し、[OK] を選択します。
  10. [設定変更の確認] ダイアログ ボックスで、[はい] を選択します。

ローカル コンピューター ポリシーを使用してクライアント LDAP 署名要件を設定する方法

  1. [スタート]>[実行] を選択し、「mmc.exe」と入力して、[OK] を選択します。
  2. [ファイル]>[スナップインの追加と削除] を選択します。
  3. [スナップインの追加と削除] ダイアログ ボックスで [グループ ポリシー オブジェクト エディター] を選択し、[追加] を選択します。
  4. [完了] を選択します。
  5. [OK] をクリックします。
  6. [ローカル コンピューター ポリシー]>[コンピューター構成]>[ポリシー]>[Windows 設定]>[セキュリティ設定]>[ローカル ポリシー] を選択し、[セキュリティ オプション] を選択します。
  7. [ネットワーク セキュリティ: LDAP クライアント署名要件] を右クリックし、[プロパティ] を選択します。
  8. [ネットワーク セキュリティ: LDAP クライアント署名要件のプロパティ] ダイアログ ボックスで、一覧から [署名が必要] を選択し、[OK] を選択します。
  9. [設定変更の確認] ダイアログ ボックスで、[はい] を選択します。

ドメインのグループ ポリシー オブジェクトを使用してクライアント LDAP 署名要件を設定する方法

  1. [スタート]>[実行] を選択し、「mmc.exe」と入力して、[OK] を選択します。
  2. [ファイル]>[スナップインの追加と削除] を選択します。
  3. [スナップインの追加と削除] ダイアログ ボックスで [グループ ポリシー オブジェクト エディター] を選択し、[追加] を選択します。
  4. [参照] を選択し、既定のドメイン ポリシー (またはクライアント LDAP 署名を有効にするグループ ポリシー オブジェクト) を選択します。
  5. [OK] をクリックします。
  6. [完了] を選択します。
  7. [閉じる] を選択します。
  8. [OK] をクリックします。
  9. [既定のドメイン ポリシー]>[コンピューターの構成]>[Windows 設定]>[セキュリティ設定]>[ローカル ポリシー]を選択し、[セキュリティ オプション] を選択します。
  10. [ネットワーク セキュリティ: LDAP クライアント署名要件のプロパティ] ダイアログ ボックスで、一覧から [署名が必要] を選択し、[OK] を選択します。
  11. [設定変更の確認] ダイアログ ボックスで、[はい] を選択します。

レジストリ キーを使用してクライアント LDAP 署名要件を設定する方法

重要

このセクションの手順の実行には注意が必要です。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 変更する前に、問題の発生に備えて復元用にレジストリのバックアップを作成してください。

既定では、Active Directory Lightweight Directory Services (AD LDS) ではレジストリ キーを使用できません。 そのため、次のレジストリ サブキーの下に、REG_DWORD タイプの LDAPServerIntegrity レジストリ エントリを作成する必要があります。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<InstanceName>\Parameters

注:

プレースホルダー <InstanceName> は、変更する AD LDS インスタンスの名前を表します。

レジストリ エントリの値は次のとおりです。

  • 0: 署名が無効になっています。
  • 2: 署名が有効になっています。

この値を変更すると、新しい値がすぐに有効になります。 コンピューターを再起動する必要はありません。

構成の変更を確認する方法

  1. AD DS 管理 ツールがインストールされているコンピューターにサインインします。

  2. [スタート]>[ファイル名を指定して実行] を選択し、「ldp.exe」と入力して、[OK] を選択します。

  3. [接続]>[接続] を選択します。

  4. [サーバー][ポート] で、ディレクトリ サーバーのサーバー名と非 SSL/TLS ポートを入力し、[OK] を選択します。

    注:

    Active Directory ドメイン コントローラーの場合、該当するポートは 389 です。

  5. 接続が確立されたら、[接続]>[バインド] を選択します。

  6. [バインドの種類] で、[単純バインド] を選択します。

  7. ユーザー名とパスワードを入力し、[OK] を選択します。

    次のエラー メッセージが表示された場合は、ディレクトリ サーバーが正常に構成されています。

    Ldap_simple_bind_s() に失敗しました: 強力な認証が必要です

LDAP 署名要件のイベント リファレンス

イベント ID 2886

DS サービスを開始すると、イベント ID 2886 がログに記録され、管理者に署名要件を有効にするよう通知します。

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2886
Task Category: LDAP Interface
Level:         Warning
Keywords:      Classic
Description:
The security of this directory server can be significantly enhanced by configuring the server to reject SASL (Negotiate, Kerberos, NTLM, or Digest) LDAP binds that do not request signing (integrity verification) and LDAP simple binds that are performed on a clear text (non-SSL/TLS-encrypted) connection. Even if no clients are using such binds, configuring the server to reject them will improve the security of this server. 
 
Some clients may currently be relying on unsigned SASL binds or LDAP simple binds over a non-SSL/TLS connection, and will stop working if this configuration change is made. To assist in identifying these clients, if such binds occur this directory server will log a summary event once every 24 hours indicating how many such binds occurred. You are encouraged to configure those clients to not use such binds. Once no such events are observed for an extended period, it is recommended that you configure the server to reject such binds. 
 
For more details and information on how to make this configuration change to the server, please see http://go.microsoft.com/fwlink/?LinkID=87923. 
 
You can enable additional logging to log an event each time a client makes such a bind, including information on which client made the bind. To do so, please raise the setting for the "LDAP Interface Events" event logging category to level 2 or higher.

イベント ID 2887

問題のあるクライアントが検出されたが許可されると、過去 24 時間のサマリー イベント (イベント ID 2887) がログに記録されます。

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2887
Task Category: LDAP Interface
Level:         Warning
Keywords:      Classic
Description:
During the previous 24 hour period, some clients attempted to perform LDAP binds that were either:
(1) A SASL (Negotiate, Kerberos, NTLM, or Digest) LDAP bind that did not request signing (integrity validation), or
(2) A LDAP simple bind that was performed on a clear text (non-SSL/TLS-encrypted) connection

This directory server is not currently configured to reject such binds. The security of this directory server can be significantly enhanced by configuring the server to reject such binds. For more details and information on how to make this configuration change to the server, please see http://go.microsoft.com/fwlink/?LinkID=87923.

Summary information on the number of these binds received within the past 24 hours is below.

You can enable additional logging to log an event each time a client makes such a bind, including information on which client made the bind. To do so, please raise the setting for the "LDAP Interface Events" event logging category to level 2 or higher.

Number of simple binds performed without SSL/TLS: <count of binds>
Number of Negotiate/Kerberos/NTLM/Digest binds performed without signing: <count of binds>

イベント ID 2888

問題のあるクライアントが拒否されると、過去 24 時間の概要イベント (イベント ID 2888) がログに記録されます。

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2888
Task Category: LDAP Interface
Level:         Information
Keywords:      Classic
Description:
During the previous 24 hour period, some clients attempted to perform LDAP binds that were either:
(1) A SASL (Negotiate, Kerberos, NTLM, or Digest) LDAP bind that did not request signing (integrity validation), or
(2) A LDAP simple bind that was performed on a clear text (non-SSL/TLS-encrypted) connection

This directory server is configured to reject such binds.  This is the recommended configuration setting, and significantly enhances the security of this server. For more details, please see http://go.microsoft.com/fwlink/?LinkID=87923.

Summary information on the number of such binds received within the past 24 hours is below.

You can enable additional logging to log an event each time a client makes such a bind, including information on which client made the bind. To do so, please raise the setting for the "LDAP Interface Events" event logging category to level 2 or higher.

Number of simple binds rejected because they were performed without SSL/TLS: <count of binds>
Number of Negotiate/Kerberos/NTLM/Digest binds rejected because they were performed without signing: <count of binds>

イベント ID 2889

問題のあるクライアントが接続しようとすると、イベント ID 2889 がログに記録されます。

Log Name:      Directory Service
Source:        Microsoft-Windows-ActiveDirectory_DomainService
Event ID:      2889
Task Category: LDAP Interface
Level:         Information
Keywords:      Classic
Description:
The following client performed a SASL (Negotiate/Kerberos/NTLM/Digest) LDAP bind without requesting signing (integrity verification), or performed a simple bind over a clear text (non-SSL/TLS-encrypted) LDAP connection. 
 
Client IP address:
<IP address>:<TCP port>
Identity the client attempted to authenticate as:
contoso\<username>
Binding Type:
0 – Simple Bind that does not support signing
1 – SASL Bind that does not use signing

関連情報