Linux,无需加入域即可针对 2 个不同的 AD 进行基本密码验证

Linux,无需加入域即可针对 2 个不同的 AD 进行基本密码验证

我们的 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 那么好,但是仍然可以工作。

问候,

相关内容