You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在已加入MS AD域的Debian 12上用计算机账户执行ldapsearch

使用Debian 12计算机账户执行LDAP查询解决方案

问题背景

我有一台已加入MS AD域的Debian 12计算机,用户可通过GSSAPI认证执行LDAP搜索(符合信息安全要求),示例命令及输出如下:

$ ldapsearch -LLL -H ldap://DC03.mydomain.loc -o ldif-wrap=no -Y GSSAPI -s "base" -b "" supportedSASLMechanisms
SASL/GSS-SPNEGO authentication started
SASL username: test-linux@MYDOMAIN.LOC
SASL SSF: 256
SASL data security layer installed.
dn:
supportedSASLMechanisms: GSSAPI
supportedSASLMechanisms: GSS-SPNEGO
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

为实现自动化流程,需要定期执行LDAP查询,希望使用计算机账户完成操作。这样能简化域控制器和客户端的日志记录,避免为每台计算机单独创建用户账户,同时规避用户密码按AD策略频繁变更的问题。当前系统已存在默认keytab(SSSD正使用它完成DNS记录更新、计算机密码更新等操作),keytab内容如下:

Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- ------------------------------------------------------
   8 host/app01.mydomain.loc@MYDOMAIN.LOC (aes256-cts-hmac-sha1-96)
   8 host/APP01@MYDOMAIN.LOC (aes256-cts-hmac-sha1-96)
   8 host/app01.mydomain.loc@MYDOMAIN.LOC (aes128-cts-hmac-sha1-96)
   8 host/APP01@MYDOMAIN.LOC (aes128-cts-hmac-sha1-96)
   8 host/app01.mydomain.loc@MYDOMAIN.LOC (DEPRECATED:arcfour-hmac)
   8 host/APP01@MYDOMAIN.LOC (DEPRECATED:arcfour-hmac)
   8 APP01$@MYDOMAIN.LOC (aes256-cts-hmac-sha1-96)
   8 APP01$@MYDOMAIN.LOC (aes128-cts-hmac-sha1-96)
   8 APP01$@MYDOMAIN.LOC (DEPRECATED:arcfour-hmac)

解决方案

方法1:先获取计算机账户Kerberos票据,再执行LDAP查询

  1. 从keytab获取计算机账户的Kerberos票据
    可以直接使用计算机账户主体(APP01$@MYDOMAIN.LOC)或其关联的SPN主体(host/app01.mydomain.loc@MYDOMAIN.LOC):
    # 使用计算机账户主体
    kinit -k -t /etc/krb5.keytab APP01$@MYDOMAIN.LOC
    # 或使用host SPN主体
    kinit -k -t /etc/krb5.keytab host/app01.mydomain.loc@MYDOMAIN.LOC
    
  2. 验证票据是否成功获取
    klist
    
    输出中应包含对应计算机账户的有效票据。
  3. 执行LDAP查询
    此时系统已缓存计算机账户的Kerberos票据,直接使用GSSAPI认证执行查询即可:
    ldapsearch -LLL -H ldap://DC03.mydomain.loc -o ldif-wrap=no -Y GSSAPI -s "base" -b "" supportedSASLMechanisms
    

方法2:在ldapsearch命令中直接指定keytab和主体(适合脚本自动化)

无需提前获取票据,直接在ldapsearch命令中指定keytab路径和计算机账户主体,一步完成认证与查询:

# 使用计算机账户主体
ldapsearch -LLL -H ldap://DC03.mydomain.loc -o ldif-wrap=no -Y GSSAPI -U APP01$@MYDOMAIN.LOC -K /etc/krb5.keytab -s "base" -b "" supportedSASLMechanisms

# 或使用host SPN主体
ldapsearch -LLL -H ldap://DC03.mydomain.loc -o ldif-wrap=no -Y GSSAPI -U host/app01.mydomain.loc@MYDOMAIN.LOC -K /etc/krb5.keytab -s "base" -b "" supportedSASLMechanisms

注意事项

  • AD中计算机账户默认拥有基础的LDAP读取权限,若需查询特定敏感信息,需在AD中为该计算机账户配置对应权限。
  • 确保/etc/krb5.keytab的权限正确(建议设置为600,属主为root),避免非授权访问。

内容的提问来源于stack exchange,提问作者Irbis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:43:11