web-dev-qa-db-ja.com

LinuxホストからKerberosを使用してADをクエリできない

ldapsearch -H <URL> -b <BASE> -s sub -D <USER> -x -w <PW>

正常に動作します

kinit <USER>@<REALM>
ldapsearch -H <URL> -b <BASE> -s sub

失敗します:

text: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1

kinit Administrator@<REALM>
ldapsearch -H <URL> -b <BASE> -s sub

うまくいく

通常のグーグル操作では、何も興味深いことがわかりませんでした。 (時間のずれとuserPrincipalName-Dのコンポーネント名の使用に関する通常のコメントがありますが、kinitを使用する場合は注意が必要です。)

何か案は?

GSSAPI AD検索が適切に機能するためには、ldapsearchコマンドラインで「-O maxssf = 0」を指定する必要があることがわかりました。次のコマンドを使用すると、SSL接続を介してADグローバルカタログを検索できます。

ldapsearch -LLL -O maxssf=0 -Y GSSAPI -H ldaps://ad.realm.local:3269 -b "dc=realm,dc=local" '(sAMAccountName=userid)'

また、Kerberos認証がldapsearchと連動するためには、DNSが逆IPルックアップ用に適切に構成されている必要があります。そうでない場合は、「数値のホストアドレスのレルムを判別できません」エラーが発生します。必要に応じて、ADサーバーのIPとホスト名をhostsファイルに入れて機能させることができます。

4
Brian Showalter

ldapsearch(1) マンページから:

-Y mech
Specify the SASL mechanism to be used for authentication. If it's not specified, the program will choose the best mechanism the server knows. 

例えば:

ldapsearch -Y GSSAPI -b "dc=example,dc=com" uid=user

/etc/gssapi_mech.confは次のようになります。

# grep -v ^# /etc/gssapi_mech.conf
libgssapi_krb5.so.2             mechglue_internal_krb5_init
2
dawud