pam_sss 访问被拒绝,但 kerberos 身份验证成功

pam_sss 访问被拒绝,但 kerberos 身份验证成功

我正在尝试在 Ubuntu 18.04(服务器和客户端计算机)上使用 sssd 和 kerberos 身份验证和 ldap。我在 Ubuntu 客户端安装了sssd sssd-tools软件包。但是当我想登录到我的 ldap 用户 alice 时,却无法登录。我可以看到服务器传递了票证(在服务器 kerberos 的日志中),并且客户端在缓存中接收到了票证。Mkhomedir 很好地存在于 /etc/pam.d/commom-session 中。

我发现 mkhomedir 应该启用,所以我运行了,pam-auth-update --package mkhomedir但什么都没有改变。

auth.log 指出:

Jul 19 14:30:12 virtualBox gdm-password]: pam_unix(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost=  user=alice
Jul 19 14:30:13 virtualBox gdm-password]: pam_sss(gdm-password:auth): authentication success; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost= user=alice
Jul 19 14:30:13 virtualBox gdm-password]: pam_sss(gdm-password:account): Access denied for user alice: 6 (Autorisation refusée)
Jul 19 14:30:32 virtualBox gdm-password]: pam_unix(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost=  user=alice
Jul 19 14:30:32 virtualBox gdm-password]: pam_sss(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost= user=alice
Jul 19 14:30:32 virtualBox gdm-password]: pam_sss(gdm-password:auth): received for user alice: 17 (Échec lors de la définition des informations d'identification de l'utilisateur)
Jul 19 14:30:39 virtualBox gdm-password]: pam_unix(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost=  user=alice
Jul 19 14:30:39 virtualBox gdm-password]: pam_sss(gdm-password:auth): authentication success; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost= user=alice
Jul 19 14:30:39 virtualBox gdm-password]: pam_sss(gdm-password:account): Access denied for user alice: 6 (Autorisation refusée)`

有效getent passwd <ldap user>。我还将其添加到了客户端的 krb5.keytab 中。

这是我的配置文件。

sssd.conf 文件:

[sssd]
debug_level = 0xFFF0
config_file_version = 2
services = nss,pam
domains = STAGENFS.FR

[nss]
debug_level = 0xFFF0
filter_users = root
filter_groups = root

[pam]
debug_level = 0xFFF0
offline_credentials_expiration = 1

[domain/STAGENFS.FR]
debug_level = 0xFFF0
ldap_schema = rfc2307
ldap_search_base = ou=tl

id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap

ldap_uri = ldaps://ldap02.stagenfs.fr
ldap_referrals = False
ldap_id_use_start_tls = False
cache_credentials = True
account_cache_expiration = 1
enumerate = True
ldap_default_bind_dn = cn=proxyuser,ou=private,ou=tl
ldap_default_authtok_type = password
ldap_default_authtok = ProxyUser123#
ldap_tls_cacert = /etc/ssl/certs/cacert.pem

krb5_realm = STAGENFS.FR
krb5_canonicalize = False
krb5_server = kdc.stagenfs.fr
krb5_kpasswd = kdc.stagenfs.fr
krb5_ccachedir = /cache

nsswitch 文件:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd sss
group:          compat systemd sss
shadow:         compat sss
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname
networks:       files

protocols:      db files
services:       db files sss
ethers:         db files
rpc:            db files

netgroup:       nis sss
sudoers:        files sss

我在 pam.d 文件中有 pam_sss.so:

# /etc/pam.d/common-account
    account [default=bad success=ok user_unknown=ignore]    pam_sss.so

# /etc/pam.d/common-auth
    auth    [success=1 default=ignore]  pam_sss.so use_first_pass

# /etc/pam.d/common-password
    password    sufficient          pam_sss.so use_authtok

# /etc/pam.d/common-session
    session required    pam_mkhomedir.so skel=/etc/skel/
    session optional            pam_sss.so

你知道 sssd 是否需要 libpam_krb5.so 吗?如果你有任何想法,或者需要更多信息,请不要犹豫!谢谢。

答案1

我认为你混淆了身份验证和授权。从日志中可以看出,身份验证阶段成功(意味着凭证已成功验证)...

7 月 19 日 14:30:39 virtualBox gdm-password]: pam_sss(gdm-password:auth): 身份验证成功;logname=uid=0 euid=0 tty=/dev/tty1 ruser=rhost=user=alice

...但授权阶段失败(意味着用户不允许使用该服务(无论凭证是什么):

7 月 19 日 14:30:39 virtualBox gdm-password]: pam_sss(gdm-password:account): 拒绝用户 alice 访问:6(拒绝授权)

由于此消息是由 pam_sss 本身显示的,因此它与 SSSD 设置有关。您已配置ldap为访问(授权)提供者:

[domain/STAGENFS.FR]
access_provider = ldap

这意味着访问权限由设置控制ldap_access_order。您没有它,但它的默认值是filter(根据 sssd-ldap(5) 手册)。

“过滤”表示访问检查是通过使用ldap_access_filter查询 LDAP 服务器的设置来完成的。您也没有此设置,并且它没有默认值——如果您想使用“过滤”模式,则必须使用默认值。

您需要指定正确的授权规则 – 决定要应用的过滤器,或者将设置ldap_access_order(甚至是access_provider)更改为其他内容。

相关内容