sssd 仅针对域列表中的第一个域进行身份验证,除非在登录时指定了域

sssd 仅针对域列表中的第一个域进行身份验证,除非在登录时指定了域

我目前正在从使用 pam_krb5 转向 pam_sss,因为 pam_krb5 在 CentOS/RHEL 8 上不再可用

我们目前使用两个 AD 域,每个域都有唯一的用户名。在旧的 pam 配置中,我们有以下几行。

auth        sufficient    pam_krb5.so realm=DOM1.LOCAL try_first_pass
auth        sufficient    pam_krb5.so realm=DOM2.LOCAL use_first_pass

account     sufficient    pam_krb5.so realm=DOM1.LOCAL
account     sufficient    pam_krb5.so realm=DOM2.LOCAL

password    sufficient    pam_krb5.so realm=DOM1.LOCAL try_first_pass banner=Windows
password    sufficient    pam_krb5.so realm=DOM2.LOCAL use_first_pass banner=Windows

session     optional      pam_krb5.so realm=DOM1.LOCAL
session     optional      pam_krb5.so realm=DOM2.LOCAL

这样我们就可以使用来自任一域的 AD 中的密码(域之间的帐户名都是唯一的),并且可以使用同名的 Unix 帐户登录(存储在 NIS 中)

我尝试通过在 /etc/sssd/sssd.conf 中放置多个域配置来实现 sssd 中的此功能

像这样

[sssd]
    services = nss, pam
    domains = DOM1.LOCAL,DOM2.LOCAL
    re_expression = (((?P<domain>[^\\]+)\\(?P<name>.+$))|((?P<name>[^@]+)@(?P<domain>.+$))|(^(?P<name>[^@\\]+)$)) 
    debug_level = 7

[domain/DOM1.LOCAL]
    id_provider = proxy
    proxy_lib_name = nis
    auth_provider = krb5

    krb5_server = dc1.dom1.local,dc2.dom1.local
    krb5_realm = DOM1.LOCAL
    krb5_ccachedir = /tmp
    krb5_ccname_template = FILE:%d/krb5cc_%U
    debug_level = 7

[domain/DOM2.LOCAL]
    id_provider = proxy
    proxy_lib_name = nis
    auth_provider = krb5

    krb5_server = dc1.dom2.local,dc2.dom2.local
    krb5_realm = DOM2.LOCAL
    krb5_ccachedir = /tmp
    krb5_ccname_template = FILE:%d/krb5cc_%U
    debug_level = 7

[nss]
    debug_level = 7

[pam]
    debug_level = 7

通过上述设置,如果我指定 username@domainname@linux_server,我就可以成功 ssh 到服务器

例如 ssh[电子邮件保护]@我的服务器

但是如果我错过了域名,那么只会查找“sssd”域列表中的第一个域。

如果 user1 在 dom1.local 中,而 user2 在 dom2.local 中

ssh user1@linux_server     - Works 
ssh user2@linux_server     - Fails 

如果我切换 sssd 中域参数中的域顺序,那么

ssh user1@linux_server     - Fails
ssh user2@linux_server     - Works

日志文件显示,只使用一个域,取决于列表中哪个域是第一个。

有人可以给我一些指点吗?

谢谢

答案1

所以我遇到了同样的问题,并在试图弄清楚如何重新添加 pam_krb.so 时偶然找到了答案。

我知道你需要的是:

auth sufficient pam_sss.so domains=DOM1.LOCAL
auth sufficient pam_sss.so domains=DOM2.LOCAL
account sufficient pam_sss.so domains=DOM1.LOCAL
account sufficient pam_sss.so domains=DOM2.LOCAL

但是我不知道如何设置passwordsession部分,并且我有一个奇怪的设置,其中单个 LDAP 源具有多个 Kerberos 域。

Src 来自这里的一些 SSSD 错误说明:https://pagure.io/SSSD/sssd/issue/3668 编辑:由于我未能校对预览,因此添加了空格以便更清晰。

相关内容