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 密鑰表?還是我的方法可能完全錯誤?
通過加入域來設置電腦密碼。電腦管理他們的賬戶,他們甚至可以受制於政策。但是,AD 伺服器通常不會以與使用者帳戶相同的方式執行策略。例如,如果機器未能更改其密碼,它不會被排除在域之外。
關於這個問題,VM 中的研究和反複試驗導致了以下候選解決方案:
- 只需使用
winbindd
. 這意味著安裝 samba 套件、配置 samba 守護程序並發布net ads join -k
. 這似乎是網路上幾乎所有教程都採用的傳統方式。優點:kerberberos 密鑰表和使用者查找。sssd
具體來說,使用 sssd-ad 模組。sssd 還可以通過其 AD 提供程序加入域。然後 sssd 將使用 kerberos(用於身份驗證)+ LDAP(用於使用者查找/授權)。- 如果您不需要使用者查找(與原始 Squid 問題一樣),msktutil可能適合您。它創建使用者帳戶並傳輸密鑰表,但它不提供用於使用者查找的守護程序。
在 1/2 和 3 之間進行選擇很容易。對原問題:我選擇了(3),因為我不需要查找使用者資訊。但如果需要查找使用者資訊,那麼 1 和 2 之間的選擇似乎並不明顯。Redhat 提倡 sssd(參見https://www.redhat.com/en/blog/overview-direct-integration-options,SSSD 與 Winbind),認為 sssd 更穩定並且可能更快。我已經不止一次因為
winbindd
網路故障而死在我身上而被咬傷,所以我可以理解這一點,但我沒有任何確鑿的證據。