2020年後半に予定されている「LDAP接続のセキュリティ強化」について企業ユーザーに贈るWindows 10への乗り換え案内(69)

2020年後半に予定されているセキュリティ更新プログラムでは、セキュリティ強化のために「LDAP」および「LDAPS」のセキュリティ強化が行われます。Active Directoryドメイン環境に影響する可能性があるので、事前にテストし、影響を受ける場合に以前の挙動に戻す方法を確認しておくことをお勧めします。

» 2020年03月10日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「企業ユーザーに贈るWindows 10への乗り換え案内」のインデックス

企業ユーザーに贈るWindows 10への乗り換え案内

LDAP署名およびLDAPチャネルバインディングが既定で強制

 Microsoftは2020年3月のセキュリティ更新に含める形で、LDAP(Lightweight Directory Access Protocol)接続のセキュリティ強化を予定していました。具体的には「LDAP署名」および「LDAPチャネルバインディング」を“既定で有効化する”というものです。2020年2月になって3月の実施は見送られ、20年後半に延期しましたが、時間的な猶予ができたので影響の有無を確認しておくことをお勧めします([2021年1月6日追記]最新情報:2020年後半の実施も見送られ、当面は既定のセキュリティ設定が変更されることはなくなったようです)。

 この変更については、2019年8月に「セキュリティアドバイザリ」として公開され、その後も公式ブログでアナウンスされてきました。2020年2月、3月と情報が目まぐるしく更新されているので、影響を受ける可能性がある場合は、最新情報を定期的にチェックすることをお勧めします。これらの情報が非常に分かりにくいものになっているのは、この後説明するサポート情報の古さに加えて、これまで情報の更新が繰り返されてきたことも関係していると思います。

 Active Directoryのドメインメンバー(LDAPクライアント)とドメインコントローラー(LDAPサーバ)間には、複数の接続方法が用意されています。LDAP署名とLDAPチャネルバインディングの有効化は、安全でない接続を排除してセキュリティを向上することを目的としたものです。

 Active Directoryドメインの管理者が意図的に署名やLDAPS(LDAP over SSL/TLS)を要求するように構成していない限り、現在はLDAP署名を使用しない接続や、SSL/TLSで保護されていないLDAP接続が可能でした。

 2020年後半に予定されているセキュリティ更新により既定の設定が変更されることで、「Windows 7 SP1」および「Windows Server 2008 SP2」以降のクライアント、Windows Server 2008 SP2以降のActive Directoryのドメインコントローラーの認証に影響する可能性があります。どのような影響があるのかは利用環境によって違ってくるので何とも言えませんが、シンプルなActive Directoryドメインの認証については、筆者がテストした限り影響はないようです。

 なお、当初、セキュリティアドバイザリADV190023の影響範囲は、「Active Directoryドメインサービス(AD DS)」と「Active Directoryライトウェイトディレクトリサービス(AD LDS)」でしたが、2020年2月末になってAD LDSは対象外になりました(AD LDSを使用するLDAPアプリケーションは脆弱《ぜいじゃく》性の影響を受けないということでしょう)。

 既定の挙動の変更は、「グループポリシー」やポリシーと同等のレジストリ設定の効果にも影響があります。例えば、LDAP署名の要求は、「Default Domain Controllers Policy」の次のポリシーで設定することができます(既定は未構成)。

  • コンピューターの構成\ポリシー\Windows の設定\セキュリティの設定\ローカル ポリシー\セキュリティ オプション
  • ポリシー:ドメイン コントローラー:LDAP サーバー署名必須

 このポリシーに対応するレジストリ値は次の場所にあります(既定は0x1)。

  • レジストリキー:HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
  • 値:ldapserverIntegrity(REG_DWORD型)

 2020年後半のセキュリティ更新では、これらの設定の挙動が以下の表1のように変更される予定です。つまり、現在、ポリシーが「未定義」または「なし」になっている場合、2020年後半に予定されているセキュリティ更新によるLDAP署名の有効化以降は「署名を必要とする」と同じ設定になります。そして、ポリシー設定を使用してこれを無効化することはできません。以前の挙動に戻すには、レジストリを編集する必要があります。

現在 強制実施後(2020年後半に予定)
(ポリシーに選択肢無し) 0(署名不要) 0(署名不要)
未定義 1(署名不要) 1(署名必要)
なし 1(署名不要) 1(署名必要)
署名を必要とする 2(署名必要) 2(署名必要)
表1 2020年後半に予定されている「ドメインコントローラー:LDAPサーバー署名必須」ポリシーとレジストリ値の挙動の変化

LDAP署名を事前に有効化してテストするには

 この変更が運用中のシステムやアプリケーションに影響するかどうかは、セキュリティアドバイザリや公式ブログにあるリンク先のサポート情報に説明されている方法でテストできます。なお、テスト用にメンバーサーバとクライアントの設定も変更していますが、2020年後半に行われるセキュリティ強化はドメインコントローラーに対してのみ行われます。詳しくは、以下のFAQを参照してください。

 しかし、サポート情報の記述が古く、既に廃止されている「Fix It」のリンクがあったり、日本語の表示名(ポリシー名やユーザーインタフェース)や、レジストリパスのミスがあったりと分かりにくい状態です。

 例えば、サポート情報935834「WINDOWS Server 2008でLDAP署名を有効にする方法」でテストツールとして「desk.cpl」が示されていますが、正しくはAD DSおよびAD LDSのコマンドラインツールに含まれる「ldp.exe」です。関連するサポート情報を参照する際には、日本語版だけでなく、オリジナルの英語版(URLの「ja-jp」を「en-us」に置き換える)も確認してください。ただし、オリジナルの英語版についても、レジストリパスの一部に間違いがあります。

 Active DirectoryドメインでLDAP署名を2020年後半に配布予定のセキュリティ更新以降の挙動になるように事前にテストするには、グループポリシーの「Default Domain Controllers Policy」と「Default Domain Policy」のGPO(グループポリシーオブジェクト)で次のようにポリシーを設定します(画面1画面2)。適用対象で「Gpupdate」ポリシーを実行すると、設定の変更が即座に反映されます。

Default Domain Controllers Policy

  • コンピューターの構成\ポリシー\Windows の設定\セキュリティの設定\ローカル ポリシー\セキュリティ オプション
  • ポリシー:ドメイン コントローラー:LDAP サーバー署名必須
  • 設定:署名を必要とする

Default Domain Policy

  • コンピューターの構成\ポリシー\Windows の設定\セキュリティの設定\ローカル ポリシー\セキュリティ オプション
  • ポリシー:ネットワークセキュリティ: 必須の署名をしているLDAPクライアントのプロパティ
  • 設定:署名を必要とする

 または、ドメインコントローラーとドメインメンバーで以下のレジストリを編集します。設定の変更は即座に反映されます。

ドメインコントローラー

  • レジストリキー:HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
  • 値:ldapserverIntegrity(REG_DWORD型)
  • データ:0x2

ドメインコントローラーおよびドメインメンバー

  • レジストリキー:HKLM\SYSTEM\CurrentControlSet\Services\ldap
  • 値:ldapclientIntegrity(REG_DWORD型)
  • データ:0x2

画面1 画面1 2020年後半予定の強制前に、LDAP署名を要求するようにドメインコントローラー(またはLDAPサーバ)のポリシーを構成する
画面2 画面2 ドメインメンバー(LDAPクライアント)でもLDAP署名を必須にするように構成する

 LDAP署名が要求されるように挙動が変更されたことは、ドメインコントローラー、またはAD DSおよびAD LDSのコマンドラインツールがインストールされたドメインメンバーで、「Ldp.exe」を実行して確認することができます。

 まず、「接続」メニューの「接続」を開き、サーバにドメインコントローラーのIPアドレスを、ポートに「389」を指定して「OK」ボタンをクリックします。次に、「接続」メニューの「バインド」を選択し、任意のドメインユーザーの資格情報を入力して、「簡易バインド」を選択し、「OK」ボタンをクリックします(画面3)。「簡易バインド」は、LDAP署名の有効化によって利用できなくなるバインドの種類の一つです。

画面3 画面3 AD DS/AD LDSの管理ツールに含まれる「Ldp.exe」を起動し、ドメインコントローラーに接続する

 LDAP署名を要求しない設定(現在の既定)の場合は、画面4の左側のように「Authenticated as:……」と表示されバインドに成功します。LDAP署名を要求するように設定した場合、右側のように「ldap_simple_bind_s() failed: 強力な認証が必要です」と表示され、「簡易バインド」の方法は失敗するようになります。

画面4 画面4 画面左はLDAP署名を要求しない場合のバインド成功、画面右はLDAP署名を要求する場合のバインド失敗。LDAP署名を要求するようになると、「簡易バインド」の方法は「ldap_simple_bind_s() failed: 強力な認証が必要です」のエラーで失敗するようになる

 これは、2020年後半のLDAP署名の強制以降の既定の挙動です。なお、ログオン中のドメインユーザーの資格情報を指定すると、LDAP署名を要求する/要求しないに関係なく「ldap_simple_bind_s() failed: 資格情報が無効です」と表示されるようです。別の資格情報を指定してバインドしてください。

 後は、Active Directoryを使用するアプリケーションを実行してみて、LDAP署名の要求が影響しないかどうかを確認します。

LDAPチャネルバインディングの有効化を事前にテストするには(LDAPS利用時のみ)

 利用中のActive DirectoryドメインでLDAPSを構成している場合は、LDAPチャネルバインディングの有効化についてもテストしてください。LDAPSを利用していない場合は、2020年後半に予定されているLDAPチャネルバインディングの有効化が影響することはありません。

 2020年後半に予定されているセキュリティ更新では、以下の場所にある「LdapEnforceChannelBinding」が作成され、「1」に設定される予定です。同じレジストリを作成することで、利用中のLDAPアプリケーションへの影響を事前にテストすることができます。

ドメインコントローラー

  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
  • 値:LdapEnforceChannelBinding(REG_DWORD型)
  • データ:0x1

 なお、LDAPバインディングを使用するには、ドメインコントローラーおよびクライアントに「CVE-2017-8563」の脆弱性を解決するためのセキュリティ更新がインストールされている必要があります。このセキュリティ更新は2017年7月の累積更新プログラム(つまり、「Windows 10 バージョン1709」以降は最初から対応済みです)やセキュリティマンスリー品質ロールアップ、セキュリティのみの品質更新プログラムに含まれる形で提供されているので、2017年7月以降の更新プログラムがインストールされていれば対応済みです。

レジストリを編集して無効化するには

 事前のテストの結果、LDAP署名とLDAPチャネルバインディングの有効化が既存環境に影響しないと判断できたら、グループポリシーやレジストリ設定を以前の状態に戻してしまって構いません。

 前出の表1に示したように、2020年2月時点では、2020年後半に実施予定のLDAP署名の有効化以降に、グループポリシーを使用してLDAP署名を無効化する方法は存在しません。

 アプリケーションに影響すると判断した場合は、レジストリ値「ldapserverIntegrity」を「0」に設定することで、LDAP署名の有効化を無効にすることができます。LDAPクライアントの設定の変更については、LDAPサーバの署名の有効化が利用中のシステムに影響する場合は、「ネットワークセキュリティ:必須の署名をしているLDAPクライアント」ポリシーを「なし」にするか、レジストリ値「ldapclientintegrity」を「0」に設定すればよいでしょう。

 LDAPチャネルバインディングの有効化がLDAPアプリケーションに影響する場合は、レジストリ値「LdapEnforceChannelBinding」を「0」に設定します(画面5)。

画面5 画面5 2020年後半の強制以降は、関連するレジストリを適切に設定することで、LDAP署名のLDAPチャネルバインディングの有効化を無効にし、有効化の影響を回避することができる

 なお、2020年3月10日(米国時間)のセキュリティ更新では、ドメインコントローラー向けの新しいポリシー設定として「Domain controller:LDAP server channel binding token requirements」が追加されました。この新しいポリシー設定を使用すると、レジストリを直接編集することなく、ドメインコントローラーのLDAPチャネルバインディングの「LdapEnforceChannelBinding」の値を「0」(Never)、「1」(When supported、未定義の場合の既定、推奨設定)、「2」(Always)に設定できるようになりました。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2019-2020)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。