ActiveDirectory のLDAP チャネルバインディングを有効化してみた
はじめに
2020 年初頭の Windowsアップデートで、「LDAP 署名有効化」「LDAP チャネルバインディング (LDAPS 利用時)化」になるとのことで試してみました。
本記事では「LDAP チャネルバインディング (LDAPS 利用時)化」で試したことについての記録です。
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をセットアップ済み
レジストリを設定
こちらによるとレジストリを設定すれば有効になるとのこと。
とりあえず、設定してみます。
上記ページのとおり、レジストリに新しくLdapEnforceChannelBinding
を追加しました。
影響を確認する場合は設定値を 2
とし、どんなクライアントからのアクセスに対しても有効とするようにしましょう。
LDAP チャネルバインディングの確認
さてLDAP チャネルバインディングを有効(設定値: 2)にしましたが、有効になったことをどのように確認すれば良いのでしょうか。
設定したつもりが、実はスペルミスで有効じゃなかったなんてことはイヤですし、検証したことにならないですからね。
しかし、マイクロソフトのページでは確認方法を見つけられませんでした。
仕方なく色々試行錯誤して、ADに対してリクエストを投げたところレジストリの設定によって挙動が変わる ldapsearch を発見しました。
それが Simple BIND ではなく SASL(DIGEST-MD5) による BIND でした。
-
LdapEnforceChannelBinding
の設定が 0 や 1 の場合
# ldapsearch -LLL -U user0001 -H ldaps://$LDAP:636/ -Y DIGEST-MD5 -b ${SUFFIX} -N -y "$PASS" "(cn=administrator)" dn
SASL/DIGEST-MD5 authentication started
SASL username: user0001
SASL SSF: 0
dn: CN=Administrator,CN=Users,DC=win2018adfs,DC=osstech,DC=example,DC=co,DC=jp
検索は成功します。
-
LdapEnforceChannelBinding
の設定を 2 にする
# ldapsearch -LLL -U user0001 -H ldaps://$LDAP:636/ -Y DIGEST-MD5 -b ${SUFFIX} -N -y "$PASS" "(cn=administrator)" dn
SASL/DIGEST-MD5 authentication started
ldap_sasl_interactive_bind_s: Invalid credentials (49)
additional info: 80090346: LdapErr: DSID-0C090579, comment: AcceptSecurityContext error, data 80090346, v3839
検索が失敗しました!
WindowsサーバーはLdapEnforceChannelBinding
の設定を 2 に変更しただけ(OS再起動等もしていません)1でldapsearch コマンドの引数は変えていません。
設定値を変えると結果が変わるので、この設定項目の影響であると考えられます。
LDAP チャネルバインディングの影響
LDAP チャネルバインディングを有効にすると SASLによる認証は失敗しました。
一方で Simple BIND による認証では、LdapEnforceChannelBinding
の設定値が2
でも検索が可能でした。
-
LdapEnforceChannelBinding
の設定値が2
で Simple BIND
# ldapsearch -x -LLL -H ldaps://${LDAP}:636/ -D "CN=user0001,CN=Users,DC=win2018adfs,DC=osstech,DC=example,DC=co,DC=jp" -b ${SUFFIX} -y ${PASS} -s sub "(cn=user0001)" cn
dn: CN=user0001,CN=Users,DC=win2018adfs,DC=osstech,DC=example,DC=co,DC=jp
cn: user0001
検索結果が返ってきました。
従ってSimple BIND
によるLDAPSであれば、LDAP チャネルバインディングの影響は無いという結果になります。
SASLによる ldapsearch により、LdapEnforceChannelBinding
が有効か判別できるので、ADが意図した状態(チャネルバインディングが有効)であることを確認したうえで、検証したいシステムで使えなくなる機能がないかを確認することができます。
おわりに
このページで「構成を変更に事前にテストしてください」とアナウンスされていますが、LDAP チャネルバインディングを有効になっているかの確認方法がどこにも見当たりませんでした。
LDAP チャネルバインディングが有効になっている環境でちゃんとテストを行えているのかを確かめるすべがありません。
LdapEnforceChannelBinding が有効だとSASL(DIGEST-MD5)に失敗するというは検証結果に基づく推測となりますが、困っている方の検証の手助けが出来たのなら幸いです。
感想
LDAP チャネルバインディングとは何か
という仕様も見当たらないため、どういうリクエストを投げると拒否されてしまうのか不明であり、対策を取る方法がわからず、もしテストで繋げないクライアントがいたらどうしたら良いかということがわかりません。2
それで影響調査してくださいとは無茶でんがな…マイクロソフトさん…
調べてみると実感するのですが、情報が全然ありません。
しかし、LDAPS + Simple BIND を接続できなくするなんてことになれば、ADに接続する多くのクライアントが影響を受けることになり、もっと事前に騒がれることになるはずです。
そう考えると大きな影響がある Windows アップデートでは無いのでは?と感じています。
調べることがWebを検索するか検証しか出来ないので歯がゆいです。仕様を公開するなり、ソースコードが欲しいー
Author And Source
この問題について(ActiveDirectory のLDAP チャネルバインディングを有効化してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/aimoto/items/22a30a8c4d80cb7886e9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .