2020年3月のWindows Updateで、Active Directoryのユーザ認証などに使う「LDAP 署名」と 「LDAP チャネル バインディング」が規定(デフォルト)で有効となるようです。何も準備しないと”Active Directoryにログオンできない” といったことが起こり得ます。
概要と暫定的対応は、その1 に記述しました。ここでは、LDAP署名を有効化した際の検証に関して記載します。
目次
現在の設定の確認
現状のActive Directoryで「LDAP 署名」や「LDAP チャネルバインディング」を使用しているか確認します。
Active Directoryの環境では「LDAP 署名」や「LDAP チャネルバインディング」の設定はグループポリシで行います。
LDAP 署名の確認
①適用されているグループポリシの確認
ドメインコントローラサーバで、コマンドプロンプトを管理者で開き以下のコマンドを入力します。
gpresult /SCOPE Computer /z | more
出力結果から [コンピュータの設定] – [適用されたグループポリシオブジェクト] を確認します。
例では、以下のグループポリシが適用されています。
・Default Domain controller Policy
・Default Domain Policy
②グループポリシの設定の確認
ドメインコントローラサーバに適用されているグループポリシがわかったら、それぞれのグループポリシの設定を確認します。
対象のグループポリシオブジェクトを選択し、[設定]タブ で設定しているパラメータを確認します。
■場所:
[コンピュータの構成] – [ポリシー] – [Windowsの設定] – [セキュリティの設定] – [ローカルポリシー] – [セキュリティオプション] の中の「ドメインコントローラ:LDAPサーバ署名必須」
「ドメインコントローラ:LDAPサーバ署名必須」が ”なし” であれば、LDAP署名は無効となっており使用されていません。
LDAP チャネルバインディングの確認
LDAP チャネルバインディング設定は、LDAPS 利用時のみ利用される機能のため、LDAP署名 を利用していない場合は利用されません。
「LDAP署名」が ”有効” であった場合は、「LDAPチャネルバインディング」が構成されているかを確認します。
①ドメインコントローラサーバで、レジストリエディタを開き以下のレジストリハイブを確認します。
■ハイブ:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
■キー:
DWORD: LdapEnforceChannelBinding
■値:
0: 機能が無効。チャネル バインディングは行われません
1: 機能が有効。サポートされている場合にチャネル バインディング有効
2: 機能が有効。常にチャネル バインディング有効
LDAP署名を有効
現状で「LDAP署名」および 「LDAP チャネルバインディング」の機能を有効にしていない場合 (現在の設定では、既定で有効化されていません)は、機能を有効にするように設定をします。
なお、実運用環境で変更を行う前にテスト環境で機能を有効化し、運用環境に与える影響を確認することを強く推奨します。
LDAP署名を有効
Active DirectoryのグループポリシでLDAPに関する設定を行います。
なお、この設定は ”設定後にすぐ反映” されます(サーバの再起動は必要ない)
①グループポリシの作成
[グループポリシの監理]ツールを起動し、適当な名前(図では「LDAP-署名」)のポリシを作成します。
そのポリシをドメインコントローラサーバに適用できるように「Default Domain Controller Policy」にリンクします
②グループポリシを編集して、ドメインコントローラの設定をします。
■場所:
[コンピュータの構成] – [ポリシー] – [Windowsの設定] – [セキュリティの設定] – [ローカルポリシー] – [セキュリティオプション] の中の「ドメインコントローラ:LDAPサーバ署名必須」
■設定:「このポリシーの設定を定義する」のチェックボックスをオンにし、下の項目は「署名を必要とする」を選択
③グループポリシを編集して、クライアントの設定をします。
サーバーに [署名属性の要求] を設定した場合は、クライアントの設定も必要です。クライアントを設定しないと、サーバーとの接続が失われます。
■場所:
[コンピュータの構成] – [ポリシー] – [Windowsの設定] – [セキュリティの設定] – [ローカルポリシー] – [セキュリティオプション] の中の「ネットワークセキュリティ:必須の署名をしているLDAPクライアント」
■設定:
「このポリシーの設定を定義する」のチェックボックスをオンにし、下の項目は「署名を必要とする」を選択
LDAPSのTCPポート番号(636)の確認
LDAP署名で使うポート番号は636番になります。
既定では、ドメインコントローラサーバはLDAPSのTCP636ポートはリッスンしていますが、念のため確認をします。
コマンドプロンプトを開いて、以下のコマンドを入力します。
netstat -p tcp -q -nao
出力結果から「ローカルアドレスが 0.0.0.0:636」がリッスンされていることを確認します。
LDAP署名(LDAPS)の確認方法
Active Directoryドメインに参加しているPCからは、LDAP署名の有効・無効の違いは判りません。
確認方法としては、以下の方法などがあります。
①ドメインに参加していないWindows10からの接続
ドメインに参加していないWindows10から、ドメインのファイルサーバへの接続を試します。
LDAP署名が無効であればアクセスできますが、LDAP署名が有効であればアクセスはできません。
②Linuxマシンからの接続
dapsearch でアクセス先を ldap: → ldaps: で確認できます。
③ドメインコントローラサーバでの確認
コマンドプロンプトで、「ldp」と入力しGUIを開きます。
[接続] でポートをいかに設定します。
・LDAP : 389
・LDAPS: 636
証明書に関して
証明書の確認
Active Directoryドメインに参加しているPCは、Active Directoryのルートかエンタープライズ CA を信頼するのでログオンできなくなるということはありません。
ドメインに参加していないPCやサーバ(アプリケーション)の場合は、Active Directoryドメインサービス (AD DS) は、証明書(SSL証明書)の設定をしないと LDAPS が使えません。
サーバ証明書に関しては以下を参照ください。
LDAP over SSL に関する接続の問題のトラブルシューティングを行う方法
<https://support.microsoft.com/ja-jp/help/938703/how-to-troubleshoot-ldap-over-ssl-connection-problems>
証明書の作成
SSL証明書を配置してLDAPSを有効化させるには以下の方法があります。
①Active DirectoryにエンタープライズCAを構築する
ドメインコントローラサーバに「Active Directory 証明書サービス」の機能を設定
②ドメインコントローラサーバにSSL証明書をインポートする
個々のドメインコントローラサーバに証明書をインポート
一番お手軽なのは、①エンタープライズCAを構築するです。
これで、Active Directoryサーバ証明書を自動で発行し、かつ、ドメイン参加端末はその証明書の発行元を「信頼済みルート証明機関」とします。