Samba AD:为没有网络广告加入的计算机创建 keytab 吗?

Samba AD:为没有网络广告加入的计算机创建 keytab 吗?

要旨:我已经将 Samba 设置为 AD DC。我想仅为计算机帐户导出 SPN 的密钥表没有让计算机运行 samba 本身,或发出net ads join。运行后samba-tool domain exportkeytab我没有得到 SPN 的密钥,我相信这是因为没有机器密码。我该如何解决这个问题?

长版本:我已经将 Samba 设置为功能齐全的 AD 主域控制器。用户身份验证、DNS 等均能正常工作,因此我相当确定服务器本身没有问题。此外,已经有两台计算机加入域,并且它们的 keytab 正常工作,因此问题可能不是出在服务器,而是出在 PEBKAC 身上。

现在我有一个运行 FreeBSD 的 Squid 缓存,我想为代理设置 Kerberos 身份验证。我不想在这台机器上运行 Samba - 没有理由这样做。所以我想创建一个计算机帐户、设置 SPN 并导出密钥表可能会有效,但事实并非如此。

具体来说,我运行samba-tool computer add PROXYMACHINE --ip-address=172.19.9.22 --ip-address=dead:beef:cafe::22 --service-principal-name='host/proxymachine.example.com' --service-principal-name='HTTP/proxymachine.example.com'。一切正常;运行samba-tool computer show PROXYMACHINE会给我完整的信息。

但是,运行后samba-tool domain exportkeytab complete.keytab并没有给我任何机器 SPN 的密钥。过滤条件也不起作用。samba-tool告诉我“将两个主体导出到 krb5.keytab”,但该文件根本不存在(即使samba-tool以 RC 0 退出)。

连接电脑和这台电脑的区别在于没有密码。所以我相信这台电脑可能是罪魁祸首。但我不知道如何设置机器密码,也无法验证这是否真的是问题所在 - 可能是其他原因。

因此,底线是:我需要做什么才能(1)将计算机作为“库存项目”(计算机帐户)进行管理,(2)将 SPN 与其关联,以及(3)将其导出到 Kerberos 密钥表?或者我的方法可能完全错误?

答案1

计算机密码是通过加入域来设置的。计算机管理其帐户,甚至可以受政策约束。但是,AD 服务器通常不会像用户帐户那样强制执行政策。例如,如果计算机无法更改其密码,则不会将其排除在域之外。

关于该问题,我们在虚拟机中进行的研究和反复试验得出了以下解决方案:

  1. 只需使用winbindd。这意味着安装 samba 套件、配置 samba 守护程序并发出net ads join -k。这似乎是网络上几乎所有教程都采用的传统方法。优点:kerberberos keytab 和用户查找。
  2. 使用sssd,具体来说,是 sssd-ad 模块。sssd 还可以通过其 AD 提供商加入域. sssd 将使用 kerberos(用于身份验证)+ LDAP(用于用户查找/授权)。
  3. 如果你不需要用户查找(与原始 Squid 问题一样),工具可能适合你。它创建用户帐户并传输密钥表,但不提供用于用户查找的守护进程。

相对于最初的问题,在 1/2 和 3 之间做出选择很容易:我选择了 (3),因为我不需要查找用户信息。但如果需要查找用户信息,那么在 1 和 2 之间做出选择似乎并不明显。Redhat 提倡 sssd(参见https://www.redhat.com/en/blog/overview-direct-integration-optionsSSSD 与 Winbind),认为 sssd 更稳定,可能速度更快。我曾多次因为winbindd网络故障而死机,所以我对此深有体会,但我没有任何确凿的证据。

相关内容