Ошибка аутентификации pam_unix sshd, несмотря на то что вход в систему работает?

Вопрос или проблема

У меня есть сервер, настроенный с winbind и samba для обеспечения аутентификации Active Directory. Интеграция с Active Directory работает нормально, однако каждый раз, когда я аутентифицируюсь, я вижу следующие ошибки:

Ошибки

Аутентификация:

11 мая 00:25:29 SERVER sshd[28119]: pam_unix(sshd:auth): ошибка аутентификации; logname= uid=0 euid=0 tty=ssh ruser= rhost=x.x.x.x  user=USERNAME

Sudo:

11 мая 01:33:14 SERVER sudo: pam_unix(sudo:auth): ошибка аутентификации; logname=USER_NAME uid=2005125 euid=0 tty=/dev/pts/2 ruser=USER_NAME rhost=  user=USER_NAME

Конфигурация

/etc/samba/smb.conf:

[global]
        workgroup = WORKGROUP
        realm = DOMAIN NAME
        security = ADS
        winbind enum users = Yes
        winbind enum groups = Yes
        winbind use default domain = No
        winbind separator = +
        kerberos method = secrets and keytab
        idmap config * : backend = autorid
        idmap config * : range = 1000000-19999999
        idmap config * : rangesize = 1000000
        template shell = /bin/bash
        netbios name = SERVERNAME

/etc/pam.d/system-auth

#%PAM-1.0
# Этот файл создается автоматически.
# Изменения пользователя будут уничтожены при следующем запуске authconfig.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_winbind.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     [default=bad success=ok user_unknown=ignore] pam_winbind.so
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_winbind.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     optional      pam_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_winbind.so

/etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Используется с polkit для повторной авторизации пользователей в удаленных сессиях
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close должна быть первым правилом сессии
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open должна следовать только за сессиями, выполняемыми в контексте пользователя
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Используется с polkit для повторной авторизации пользователей в удаленных сессиях
-session   optional     pam_reauthorize.so prepare

sshd_config:

HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
AuthorizedKeysFile .ssh/authorized_keys
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
# переопределить значение по умолчанию для подсистем
Subsystem sftp  /usr/libexec/openssh/sftp-server
UsePrivilegeSeparation yes
AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
AuthorizedKeysCommandUser ec2-instance-connect
Banner /etc/motd
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

Как я могу исправить этот журнал?

Я не эксперт в PAM, но это, вероятно, происходит потому, что модуль аутентификации pam_unix (локальная база данных пользователей: /etc/password и /etc/shadow) проверяется перед модулем pam_winbind (Samba/Active Directory). Я смотрю на строки auth в вашем /etc/pam.d/system-auth и предполагаю, что system-auth связан с password-auth (на который ссылается /etc/pam.d/sshd).

Когда вы входите как пользователь AD, pam_unix не находит пользователя локально, и поэтому PAM записывает ошибку аутентификации для этого модуля. Поскольку pam_unix помечен как sufficient, не нахождение пользователя локально не считается полной ошибкой, и поэтому PAM переходит к следующему модулю, в конечном итоге достигая pam_winbind, который успешно аутентифицирует пользователя AD.

Я не знаю способа подавить только сообщение журнала, но теоретически вы можете изменить порядок строк модулей auth, чтобы pam_unix проверялся после pam_winbind. Хорошо это или плохо на практике нужно оценить.

Конечно, конфигурация PAM очень чувствительна к безопасности, поэтому вы должны тщательно обдумать и исследовать любые изменения и сначала тщательно протестировать их на непроизводственной системе. Например, что будет, если служба Samba недоступна, а вам нужно войти как локальный пользователь? Как проверка pam_succeed_if.so uid >= 1000 вписывается в это? И так далее.

Ответ или решение

Проблема с pam_unix при аутентификации SSH и Sudo

Вы столкнулись с ситуацией, когда аутентификация через SSH и команду Sudo для пользователей Active Directory (AD) проходит успешно, но в логах регистрируются ошибки pam_unix. Эти сообщения указывают на неудачную аутентификацию через модуль pam_unix, даже если фактический вход в систему происходит корректно. Давайте подробно рассмотрим причины этого явления и возможные пути его решения.

Анализ логов

Ваши логи показывают следующие сообщения:

May 11 00:25:29 SERVER sshd[28119]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=x.x.x.x  user=USERNAME
May 11 01:33:14 SERVER sudo: pam_unix(sudo:auth): authentication failure; logname=USER_NAME uid=2005125 euid=0 tty=/dev/pts/2 ruser=USER_NAME rhost=  user=USER_NAME

Эти сообщения относятся к попыткам аутентификации с использованием pam_unix, в то время как вы ожидаете, что должна использоваться pam_winbind для пользователей AD.

Конфигурация PAM

Рассмотрим вашу конфигурацию PAM, особенно в файлах /etc/pam.d/system-auth и /etc/pam.d/sshd.

Строка:

auth        sufficient    pam_unix.so nullok try_first_pass

ставит pam_unix в один из первых слоев аутентификации. В случае, если PAM не находит пользователя в локальных файлах /etc/passwd и /etc/shadow, он выдает ошибку аутентификации, но, поскольку это помечено как sufficient, процесс аутентификации продвигается дальше к следующему модулю, в вашем случае — к pam_winbind, который выполняет проверку в Active Directory.

Возможные решения проблемы

  1. Изменение порядка модулей PAM:
    Чтобы устранить сообщения об ошибках, можно изменить порядок модулей в конфигурации PAM, поставив pam_winbind перед pam_unix. Это обеспечит, что при успешной аутентификации пользователя AD не будет вызвана pam_unix, и, следовательно, не будет зарегистрировано сообщение об ошибке.

    Пример изменения:

    auth        sufficient    pam_winbind.so use_first_pass
    auth        required      pam_unix.so nullok try_first_pass

    Однако следует помнить, что такая настройка может создать проблемы с локальными пользователями, если winbind по каким-то причинам будет недоступен.

  2. Тестирование и безопасность:
    Перед внесением изменений в конфигурацию PAM рекомендуется тщательно протестировать ваши изменения на тестовой среде, чтобы убедиться, что все сценарии аутентификации работают корректно. Помните, что конфигурация PAM критична с точки зрения безопасности. Каждое изменение должно быть продумано с точки зрения потенциальных рисков.

  3. Логи и мониторинг:
    Если вы измените порядок модулей и по-прежнему хотите отслеживать проблемы, рекомендуется включить ведение детализированных логов для модуля PAM. Это позволит вам более точно выявлять причины проблем в будущем.

  4. Обратите внимание на остальные требования:
    Проверьте, как остальные модули клуба конфигурации PAM взаимодействуют друг с другом. Некоторые модули могут требовать наличия активности, если Samba или AD не доступны. Убедитесь, что ваша система имеет подходящие резервные механизмы для локальной аутентификации.

Заключение

Изменение порядка проверки модулей PAM может помочь предотвратить сообщения об ошибках при использовании локальной аутентификации через pam_unix, что улучшит читабельность логов и избавит от ненужных записей об ошибках. Тем не менее, это решение должно быть тщательно протестировано и оценено с учетом всех последствий. В качестве дополнительной меры вы также можете задействовать ведение логов для более подробного анализа ситуации.

Оцените материал
Добавить комментарий

Капча загружается...