我们的 AIX 和 Linux 服务器使用 Kerberos 针对 Windows AD 进行基本密码验证,因此本地用户的用户名与 AD 中的 sAMAccountName 相同,所做的只是密码检查。
两个操作系统都使用简单的 krb5.conf
[libdefaults]
default_realm = COMPANYA.COM
[realms]
COMPANYA.COM {
kdc = ad.companya.com:88
admin_server = ad.companya.com:749
}
[domain_realm]
.companya.com = COMPANYA.COM
companya.com = COMPANYA.COM
这在两个操作系统上都可以正常运行。
现在的情况是,有一家公司 B,因此也有第二个 AD。用户永远不会同时出现在两个 AD 上,而只能出现在其中一个 AD 上。
因此我首先从 AIX 开始,因为我认为这是最难运行的。
更新了 krb5.conf
[libdefaults]
default_realm = COMPANYA.COM
[realms]
COMPANYA.COM {
kdc = ad.companya.com:88
admin_server = ad.companya.com:749
}
COMPANYB.COM {
kdc = ad.companyb.com:88
admin_server = ad.companyb.com:749
}
[domain_realm]
.companya.com = COMPANYA.COM
companya.com = COMPANYA.COM
.companyb.com = COMPANYB.COM
companyb.com = COMPANYB.COM
经过一番研究,我发现我所要做的就是
chuser auth_domain=COMPANYB.COM <user>
这将更新 /etc/security/user 文件并针对 B 公司 AD 进行密码验证。因此,我很惊喜地发现这是多么简单。
接下来是 Linux(Ubuntu 系统)。执行了相同的 krb5.conf,但遗憾的是,我在 Ubuntu 下找不到 chuser 的等效命令来将该特定用户指向其他 AD。
我能找到的是有关使用 sssd 和加入领域的页面(具有两个 AD 域的 Linux SSSD和/或https://ubuntu.com/server/docs/service-sssd-ad),但这一切都已经超出了需要(加入领域)。
到目前为止,我使用 tcpdump 和 kinit 得出的结果如下:
kinit [email protected]
<password>
kinit: KDC reply did not match expectations while getting initial credentials
kinit [email protected]
<password>
<no error>
login [email protected]
<password>
access denied
login [email protected]
<password>
access denied
由于全大写的 kinit 可以工作,我曾怀疑登录也会这样,但不幸的是,并没有。
更新:登录[电子邮件保护]如果在 Linux 机器上创建用户,则[电子邮件保护],还是不太满意
(忘记了要求用户用大写字母输入域名是不现实的)
长话短说,如何在 krb5.conf 文件中将特定用户指向默认 AD 以外的其他 AD。
问候,
答案1
好吧,上周我又取得了一些进展,这似乎有效。尽管我仍在研究 PAM 的工作原理的具体细节。
更新/更改了 /etc/pam.d/common-auth
原来的
auth [success=2 default=ignore] pam_krb5.so minimum_uid=1000
auth [success=1 default=ignore] pam_unix.so nullok try_first_pass
新版本
auth sufficient pam_krb5.so minimum_uid=1000 realm=COMPANYA.COM
auth sufficient pam_krb5.so minimum_uid=1000 realm=COMPANYB.COM
auth sufficient pam_unix.so nullok try_first_pass
当以公司 A 用户身份登录时,它会检查公司 A 的 AD,由于该用户存在,因此密码已经验证。当以公司 B 用户身份登录时,它会检查公司 A 的 AD,如果发现该用户不存在,则继续检查公司 B,由于该用户存在,因此密码已经验证。
它不如 AIX 那么好,但是仍然可以工作。
问候,