Linux
如何從 LDAP 目錄中確定 Kerberos 領域?
我有兩個可以對其進行身份驗證的 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(但你已經得到了)。