Linux

如何從 LDAP 目錄中確定 Kerberos 領域?

  • June 25, 2012

我有兩個可以對其進行身份驗證的 Kerberos 領域。其中一個我可以控制,另一個在我看來是外部的。我在 LDAP 中也有一個內部使用者數據庫。假設領域是 INTERNAL.COM 和 EXTERNAL.COM。在 ldap 我有這樣的使用者條目:

1054 uid=testuser,ou=People,dc=tml,dc=hut,dc=fi
shadowFlag: 0
shadowMin: -1
loginShell: /bin/bash
shadowInactive: -1
displayName: User Test
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uidNumber: 1059
shadowWarning: 14
uid: testuser
shadowMax: 99999
gidNumber: 1024
gecos: User Test
sn: Test
homeDirectory: /home/testuser
mail: testuser@internal.com
givenName: User
shadowLastChange: 15504
shadowExpire: 15522
cn: User.Test
userPassword: {SASL}testuser@INTERNAL.COM

不知何故,我想做的是指定每個使用者基於哪個身份驗證伺服器/領域來對使用者進行身份驗證。配置 kerberos 來處理多個領域很容易。

但是如何配置其他實例,如 PAM,以處理一些使用者來自 INTERNAL.COM 和一些來自 EXTERNAL.COM 的事實?需要進行某種 LDAP 查找,從中獲取領域和身份驗證名稱,然後是實際身份驗證本身。

有沒有一種標準化的方法可以將此資訊添加到 LDAP 或查找它?對於多領域使用者群,還有其他一些解決方法嗎?只要我可以分別為使用者指定使用者名 - 領域 - 組合,我可能也可以使用單一領域解決方案。

我認為最好的方法是使用sssd. 這為您提供了最大的靈活性,因為 sssd 支持它所謂的域。請注意,較新的發行版已經使用 sssd。夢想成真,沒有任何藉口可以使用 libpam_krb5.so 和 libpam_ldap.so 或其中任何一個。

最簡單的方法是使用 ldap 過濾器來選擇您需要進入哪個領域進行 tgts,如下所示:

首先創建兩個包含外部和內部領域成員的安全組,以便能夠訪問正確的 kdc。

設置 sssd 並檢查它的文件,這個片段是你需要如何設置兩個域的草圖。

[domain/internal.com]
access_provider = ldap
id_provider = ldap
ldap_access_filter = memberOf=cn=allowedusersinternal,ou=Groups,dc=internal,dc=com
auth_provider = krb5 

[domain/external.com]
access_provider = ldap
ldap_access_filter = memberOf=cn=allowedusersexternal,ou=Groups,dc=internal,dc=com
id_provider = ldap
auth_provider = krb5

然後根據需要為這兩個領域配置你的 kerberos(但你已經得到了)。

引用自:https://serverfault.com/questions/398236