ldapsearch 和 kerberos 身份验证

ldapsearch 和 kerberos 身份验证

我可以使用 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

将它们添加到/etc/ldap/ldap.conf

相关内容