Kanidm PAM и nsswitch в системном контейнере Incus (LXD)

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

getent passwd и getent group работают как ожидается.

Но когда я хочу войти через SSH

Вход с SSH ключом:
ЛОГ:

Mar 10 07:06:05 ah sshd[1727]: fatal: initgroups: [email protected]: Invalid argument

Домашняя папка не создана.


Вход по паролю:

ssh [email protected]

[email protected]'s password: 
client_loop: send disconnect: Broken pipe

ЛОГ:

Mar 10 07:02:35 ah unix_chkpwd[1691]: check pass; user unknown
Mar 10 07:02:35 ah unix_chkpwd[1691]: password check failed for user (me)
Mar 10 07:02:35 ah sshd[1688]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=fd42:8eeb:a9a2:85db::1  user=me
Mar 10 07:02:36 ah unix_chkpwd[1692]: could not obtain user info (me)
Mar 10 07:02:36 ah sshd[1688]: Accepted password for me from fd42:8eeb:a9a2:85db::1 port 40356 ssh2
Mar 10 07:02:36 ah sshd[1688]: pam_keyinit(sshd:session): Unable to change GID to 1883861673 temporarily
Mar 10 07:02:36 ah sshd[1688]: pam_unix(sshd:session): session opened for user me(uid=1883861673) by (uid=0)
Mar 10 07:02:36 ah sshd[1688]: pam_systemd(sshd:session): Failed to stat() runtime directory '/run/user/1883861673': No such file or directory
Mar 10 07:02:36 ah sshd[1688]: pam_systemd(sshd:session): Not setting $XDG_RUNTIME_DIR, as the directory is not in order.
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: initgroups failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: change_gid failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): Unable to drop privileges
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: initgroups failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: change_gid failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): Unable to change UID to 1883861673 temporarily
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_regain_priv: called with invalid state
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): Unable to change UID back to -1
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: initgroups failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: change_gid failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): Unable to drop privileges
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: initgroups failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_drop_priv: change_gid failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): Unable to change UID to 1883861673 temporarily
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): pam_modutil_regain_priv: called with invalid state
Mar 10 07:02:36 ah sshd[1688]: pam_motd(sshd:session): Unable to change UID back to -1
Mar 10 07:02:36 ah sshd[1688]: pam_mail(sshd:session): pam_modutil_drop_priv: initgroups failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_mail(sshd:session): pam_modutil_drop_priv: change_gid failed: Invalid argument
Mar 10 07:02:36 ah sshd[1688]: pam_unix(sshd:session): session closed for user me
Mar 10 07:02:36 ah sshd[1688]: fatal: initgroups: [email protected]: Invalid argument

Создаются домашние папки:

drwxr-x---  2 root   root   4096 Mar 10 06:53 a6086074-562e-479d-9a0c-b952504972a9
lrwxrwxrwx  1 root   root     42 Mar 10 07:02 [email protected] -> /home/a6086074-562e-479d-9a0c-b952504972a

То же самое с

root@node-incus-1:~# incus exec ah -- su --login me
su: cannot set groups: Invalid argument

Аутентификация проходит успешно, но после этого прерывается.

Тот же самый настройка работает, когда я не запускаю её в системном контейнере.

Может какие-то подсказки? Спасибо.

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

Введение системы аутентификации и управления доступом в контейнерах может включать в себя различные сложности, особенно когда речь идет о специфических решениях, таких как Kanidm для управления идентификацией и аутентификацией пользователей. Проблемы, возникающие при использовании Kanidm PAM и NSS в контейнерах Incus (ранее LXD), могут быть связаны с ограничениями окружения контейнера, настройкой PAM или особенностями взаимодействия между хостовой системой и контейнером.

Теория

Kanidm предоставляет возможности для управления пользовательскими учетными записями и авторизациями, которые могут интегрироваться с различными подсистемами, такими как PAM (Pluggable Authentication Modules) и NSS (Name Service Switch). Интеграция Kanidm с PAM и NSS позволяет системам выполнять централизованное управление пользователями, предоставляя возможность расширяемого и безопасного управления доступом.

Когда контейнеры используются в системах виртуализации, таких как Incus, часто возникают изоляционные барьеры, которые ограничивают доступ к низкоуровневым системным функциям, таким как управление группами и ID пользователей. Это может быть причиной ошибок, подобных тем, что указаны в логах, когда контейнеры пытаются выполнить операции, для которых у них отсутствуют права или системные ресурсы.

Пример

Рассмотрим специфичные ошибки из логов:

  1. Error: "initgroups failed: Invalid argument" – Ошибка инициируется, когда PAM пытается инициализировать группы для пользователя, но получает некорректный аргумент. Это может быть связано с неверной конфигурацией NSS, когда система не может корректно определить группы пользователя.

  2. Error: "pam_unix(sshd:session): session opened for user me(uid=1883861673)" – Здесь мы видим, что PAM открывает сессию для пользователя с ID, который явно не соответствует стандартным идентификаторам пользователей. Это может значить, что либо NSS некорректно определяет ID, либо есть ошибки в механизме выделения уникальных UID в контейнерной среде.

  3. Error: "Unable to change GID to 1883861673 temporarily" и "pam_systemd(sshd:session): Failed to stat() runtime directory ‘/run/user/1883861673’" – Это ошибки, указывающие на проблемы с определением окружения для пользователей. В консистентной системе директория должна автоматически создаваться и управляться системой во время создания пользовательской сессии, что может не произойти в некорректной контейнерной среде.

Применение

Для решения данных проблем рекомендуется провести диагностическое тестирование и коррекцию конфигурации:

  1. Проверка конфигурации NSS: Убедитесь, что конфигурационные файлы в контейнере корректно настроены. Проверьте /etc/nsswitch.conf и /etc/pam.d/ на наличие корректных записей для Kanidm. Логика NSS должна обеспечивать правильное разрешение имен пользователей и группы.

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

  3. Идентификаторы пользователей и групп: Проверьте, генерируются ли UID и GID правильно и согласуются ли они с таблицами пользователей и групп, управляемых Kanidm. Ошибки в этой части могут возникнуть из-за неправильного мэппинга или незарегистрированных пользователей в системе контейнера.

  4. Директория /run/user/: Как в логах указано, директория не создается. В системах с systemd эта директория должна создаваться автоматически. Проверьте конфигурации systemd или наличие необходимых модулей для поддержки этой функции в вашей системе.

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

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

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

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