ActivieDirectoryのLDAP 署名有効化をやってみた


はじめに

2020 年初頭の Windowsアップデートで、「LDAP 署名有効化」「LDAP チャネルバインディング (LDAPS 利用時)化」になるとのことで試してみました。
本記事では「LDAP 署名有効化」で試したことについての記録です。

https://portal.msrc.microsoft.com/ja-JP/security-guidance/advisory/adv190023
https://msrc-blog.microsoft.com/2019/10/02/ldapbinding/

試した環境

  • Windows Server 2016 Standrd
  • 2012/12/11時点での Windowsアップデート実施済み
  • ADをセットアップ済み

グループポリシー定義で変更

マイクロソフトのアナウンスによるとサーバーのLDAP 署名有効化にはグループポリシーの定義で変更するみたいなので素直にやってみました。

よし、簡単に出来たー。これで Linuxから普通の ldapsearch ではエラーになるはず1

# ldapsearch -x -LLL -H ldap://${LDAP}/ -D "${ADMIN}" -b ${SUFFIX} -y ${PASS} -s sub "(cn=Administrator)" cn
dn: CN=Administrator,CN=Users,DC=win2018adfs,DC=osstech,DC=example,DC=co,DC=jp
cn: Administrator

って、あれー。応答返ってくるし。 同ページに「変更後の確認方法2」も載っているのでそれも試してみるも以下の結果に。

BIND 成功してる!! どうやらグループポリシーではダメらしい。windowsようわからん。

ローカルセキュリティポリシー設定

確かローカルセキュリティポリシーで同じ感じの設定があったはず。ってことで確認してみる。

LDAPサーバー署名必須 は「なし」になっている。ここを変えれば良いのかなぁー。

設定値欄がグレーアウトして変えられないんだけど…

ローカルセキュリティポリシーを強引に変える

ということで強引にローカルセキュリティポリシーを変えてみることにしました。
こちらのページに従って変えることができました。)

1. ローカルセキュリティポリシーのポリシーエクスポート

「操作」-> 「ポリシーのエクスポート」で現在の設定を任意のファイル名で保存します。

2. mmc を起動

「ファイル名を指定して実行」で mmc.exe と入力て起動します。

3. スナップインの追加と削除

「ファイル」->「スナップインの追加と削除」からセキュリティ構成と分析を追加します。

4. セキュリティ構成と分析でデータベースを開く

「セキュリティ構成と分析」で右クリックをし、「データベースを開く」を選択します。

5. データベースを開く

新しく作ることになるので「ファイル名」に任意の名前を入力して「開く」を押します。

6. ポリシーファイルを開く

続いて「テンプレートのインポート」になるので「1. ローカルセキュリティポリシーのポリシーエクスポート」で保存したファイルを指定します。

7. コンピュータの分析

「セキュリティ構成と分析」で右クリックをし、「コンピュータの分析」を選択します。

ログファイルのパス指定画面となるので適当に指定し、「OK」を押します。

8. ローカルセキュリティポリシーを設定

ローカルセキュリティポリシーと同じ設定画面となるので、目的の「LDAPサーバー署名必須」を選択します。

9. LDAPサーバー署名必須の有効

この画面で「署名を必要とする」に変更して「OK」を押します。

署名を必要するになっていることを確認します。

10. コンピュータの構成

「セキュリティ構成と分析」で右クリックをし、「コンピュータの構成」を選択します。

ログファイルのパス指定画面となるので適当に指定し、「OK」を押します。

以上で作業は完了です。これで設定が反映されました。実際にローカルセキュリティポリシーの設定を新しく開いてみると変更されています。

LDAP署名有効化状態で ldapsearch

おそらくLDAP署名の有効化を設定出来たのでLinuxから ldapsearch を実行!

# ldapsearch -x -LLL -H ldap://${LDAP}/ -D "${ADMIN}" -b ${SUFFIX} -y ${PASS} -s sub "(cn=Administrator)" cn
ldap_bind: Strong(er) authentication required (8)
    additional info: 00002028: LdapErr: DSID-0C090256, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, v3839

エラーが返ってきたー。やったぜ。

ldaps にすると結果返ってきます。

# ldapsearch -x -LLL -H ldaps://${LDAP}/ -D "${ADMIN}" -b ${SUFFIX} -y ${PASS} -s sub "(cn=Administrator)" cn
dn: CN=Administrator,CN=Users,DC=win2018adfs,DC=osstech,DC=example,DC=co,DC=jp
cn: Administrator

一応「変更後の確認方法」の方もやってみました。

想定通りの結果です。

LDAP署名の有効化を確認できました。めでたしめでたし。

時間が経つとLDAP署名が無効化される(2019/12/23追記)

イベントビューアーに以下の記録がされたタイミングでローカルセキュリティポリシーのLDAP署名が「なし」と設定変更されましたので、テスト最中に設定が切り替わってLDAP署名が無効化状態になってしまう可能性があるのでご注意ください。

グループポリシーのLDAP署名必須は「署名を必要とする」になっていて、仮に適用されても有効なままになると思うのにWindows意味不明…


  1. LDAP署名なにそれ RFC にあるの?聞いたこと無いんでopenldap-clientsパッケージでは対応してないと決めつけ 

  2. 日本語訳のページ間違っているので英語版見た方が確実です。ファイル名を指定して実行は ldap.exe ですよマイクロソフトさん。