Доступ к pam_sss запрещен при аутентификации kerberos

1180
Charles

Я пытаюсь использовать sssd с аутентификацией kerberos и ldap на Ubuntu 18.04 (сервер и клиентская машина). На стороне клиента Ubuntu я установил sssd sssd-toolsпакеты. Но когда я хочу войти в систему для Алисы, пользователя моего ldap, я не могу. Я вижу, что сервер доставляет билет (в журналах сервера Kerberos), а клиент получает билет в кэш. Мхомедир хорошо представлен в /etc/pam.d/commom-session.

Я обнаружил, что мхомедир должен быть включен, поэтому я бежал, 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_sss.so в файлах pam.d:

# /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? Если у вас есть идеи или вам нужна дополнительная информация, не стесняйтесь! Спасибо.

0

1 ответ на вопрос

0
grawity

Я думаю, что вы смешиваете аутентификацию и авторизацию. Как видно из журналов, фаза аутентификации прошла успешно (это означает, что учетные данные были успешно проверены) ...

19 июля 14:30:39 virtualBox gdm-пароль]: pam_sss (gdm-пароль: auth): аутентификация успешна; logname = uid = 0 euid = 0 tty = / dev / tty1 ruser = rhost = user = alice

... но фаза авторизации не пройдена (это означает, что пользователю не разрешено использовать сервис, независимо от учетных данных):

19 июля, 14:30:39 virtualBox gdm-пароль]: pam_sss (gdm-пароль: учетная запись): доступ запрещен для пользователя 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) на что-то другое.

Спасибо, это сработало. Я добавил `ldap_access_order = filter` и фильтр:` ldap_access_filter = & (objectClass = posixAccount) (uidNumber = *) `в файле sssd.conf, и мне удалось войти в учетную запись пользователя ldap Charles 6 лет назад 0

Похожие вопросы