我可以使用 ldapsearch 成功连接并搜索 Active Directory 域控制器。我使用选项-x
来指定用户名/密码身份验证(密码由 指定-W
,用户名由指定-D
)。
我目前需要从 MIT-kerberos 域转储目录。Kerberos 是唯一可用于身份验证的协议。我可以使用 检索 kerberos TGT 票证kinit
。我使用以下命令行:
ldapsearch -Y SASL -b "REALM.INC" -H ldap://kerberos_IP_address
-> ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
additional info: SASL(-4): no mechanism available: No worthy mechs found
ldapsearch -o "mech=GSSAPI" ...
-> Invalid general option name: mech
如何使用 ldapsearch 进行 Kerberos 身份验证?
非常感谢您的帮助和回复
答案1
你可能错过了libsasl2-modules-gssapi-mit
包裹。
没有:
# ldapsearch -H ldap://dc1 -Y GSSAPI -b 'DC=ad-test,DC=vx'
ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
additional info: SASL(-4): no mechanism available: No worthy mechs found
安装:
# apt install libsasl2-modules-gssapi-mit
和:
# ldapsearch -H ldap://dc1 -Y GSSAPI -b 'DC=ad-test,DC=vx'
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 256
SASL data security layer installed.
...
SASL 默认启用,并将自动检测兼容机制,因此-Y GSSAPI
甚至不需要指定:
# ldapsearch -H ldap://dc1 -b 'DC=ad-test,DC=vx'
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 256
SASL data security layer installed.
...
答案2
根据您的 ldapsearch 和 OS 版本,您可以尝试首先使用 kinit 对 kerberos 进行身份验证并“缓存”您的票证,在 kerberos 环境变量中使用它,然后让 ldapsearch 使用此变量,如下所示:
kinit -c /tmp/<yourlogin>.cc.tmp <yourlogin>
export KRB5CCNAME=/tmp/<yourlogin>.cc.tmp
ldapsearch -Tx -h <host> -p <port> -Y GSSAPI -b "dc=example,dc=com" cn=*
答案3
-Y
用于指定 SASL 机制,可能是GSSAPI
,但也可能是GSS-SPNEGO
。此外,基本 dn 必须采用 dn 语法(即dc=example,dc=com
),而不是域语法(example.com
)。
$ ldapsearch -x -b '' -s base supportedSASLMechanisms -H ldap://192.0.2.1/
dn:
supportedSASLMechanisms: GSSAPI
$ ldapsearch -Y GSSAPI -b dc=example,dc=com -H ldap://192.0.2.1/
$ ldapsearch -x -b '' -s base supportedSASLMechanisms -H ldap://192.0.2.2/
dn:
supportedSASLMechanisms: GSS-SPNEGO
supportedSASLMechanisms: GSSAPI
答案4
在 Ubuntu 22.04 上,安装libsasl2-modules-gssapi-mit
库并使用kinit
获取 Kerberos cookie 并不是我需要做的全部。我们的 Active Directory 服务器不再支持普通 LDAP,因此我们需要使用ldaps
,这会产生以下问题:
$ ldapsearch -LLL -H ldaps://our.ad.server -b 'DC=our,DC=ad,DC=domain' -s sub '(samaccountname=rpost)' mail cn title SASL/GSS-SPNEGO authentication started ldap_sasl_interactive_bind: Server is unwilling to perform (53) additional info: 00002029: LdapErr: DSID-0C0906AC, comment: Cannot bind using sign/seal on a connection on which TLS or SSL is in effect, data 0, v4f7c
我还需要在命令行上传递某些 SSL 选项:
$ ldapsearch -O minssf=0,maxssf=0 -LLL -H ldaps://our.ad.server -b 'DC=our,DC=ad,DC=domain' -s sub '(samaccountname=rpost)' mail cn title