我有两个可以验证的 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: [email protected]
givenName: User
shadowLastChange: 15504
shadowExpire: 15522
cn: User.Test
userPassword: {SASL}[email protected]
我想做的,不知何故,是指定每个用户的基础,用户是根据哪个身份验证服务器/领域进行身份验证的。配置 kerberos 以处理多个领域很容易。
但是我如何配置其他实例(如 PAM)来处理一些用户来自 INTERNAL.COM 而另一些来自 EXTERNAL.COM 的事实?需要进行某种 LDAP 查找,从中获取领域和身份验证名称,然后是实际的身份验证本身。
是否有一种标准化的方法可以将此信息添加到 LDAP 或进行查找?对于多领域用户群,是否还有其他解决方法?我也可以使用单一领域解决方案,只要我可以分别为用户指定用户名 - 领域 - 组合。
我认为最好的方法是使用
sssd
. 这为您提供了最大的灵活性,因为 sssd 支持它所谓的域。请注意,较新的发行版已经使用 sssd。这是梦想成真,没有理由使用 libpam_krb5.so 和 libpam_ldap.so 或其中任何一个。最简单的方法是使用 ldap 过滤器来选择您需要为 tgts 进入哪个领域,如下所示:
首先创建两个包含外部和内部领域成员的安全组,以便能够访问正确的 kdc。
设置 sssd 并检查它的文档,这个片段是一个草图,你需要如何设置这两个域。
然后根据需要为这两个领域配置您的 kerberos(但您已经做到了)。
您正在寻找的设置在 /etc/krb5.conf 中,您可以在 [realms] 标签下存储多个领域,每个领域都指向自己的 LDAP 服务器。
pam_ldap
对于 ssh password/challenge-response LDAP example entry 已经足够了。
修改适当的文件
/etc/pam.d
以使用该pam_ldap
库。在您的 OpenLDAP 服务器上设置SASL 直通身份验证。
RHEL (CentOS):
nss_ldap
Debian:
libpam-ldap
Ubuntu:
ldap-auth-client
krb5.conf
auth_to_local
应该适用于基于 GSSAPI 的身份验证。!pam_krb5 不应该像之前页面
alt_auth_map
中引用的那样工作man
OpenSSH will reject usernames that don't match local accounts
针对不同域进行身份验证的 Windows 方法是除了登录名之外还指定域。那么,您可以做类似的事情并让人们以 [email protected] 或 [email protected] 登录吗?如果您只使用“user3”,您可以登录到默认域。
根据 pam_krb5(5),这是可能的:
不幸的是,它继续: