Вопрос или проблема
Установил libpam-u2f, запустил pamu2fcfg, нажал на yubikey и скопировал вывод в файл, который я создал (/etc/yubikey_mappings). Настроил безпарольный вход с помощью нажатия (cue) на sudo, добавив в /etc/pam.d/common-auth или пароль, если ключа нет.
auth sufficient pam_u2f.so authfile=/etc/yubikey_mappings cue
Попробовал сделать то же самое для /etc/pam.d/gdm-password, чтобы я мог войти локально через Ubuntu Gnome Desktop только с помощью нажатия клавиши или ввести пароль, если ключа нет. Похоже, это не работает. Вот мой файл:
#%PAM-1.0
auth sufficient pam_u2f.so authfile=/etc/yubikey_mappings cue
auth requisite pam_nologin.so
auth required pam_succeed_if.so user != root quiet_success
@include common-auth
auth optional pam_gnome_keyring.so
@include common-account
# SELinux должен быть первым правилом сессии. Это гарантирует, что любой
# оставшийся контекст был очищен. Без этого возможно, что модуль может
# выполнить код в неправильной области.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required pam_loginuid.so
# SELinux должен вмешиваться во время входа, чтобы гарантировать, что процесс
# начинается в правильном контексте безопасности по умолчанию. Только сессии,
# которые должны выполняться в контексте пользователя, могут быть запущены после этого.
# pam_selinux.so меняет контекст SELinux используемого TTY и настраивает
# SELinux для перехода в контекст пользователя с помощью следующего execve()
# вызова.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
session optional pam_keyinit.so force revoke
session required pam_limits.so
session required pam_env.so readenv=1
session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale
@include common-session
session optional pam_gnome_keyring.so auto_start
@include common-password
Вывод команды tail -f /var/log/auth.log
2024-12-13T00:31:57.190890-06:00 athena-T450 gdm-launch-environment]: pam_unix(gdm-launch-environment:session): сессия открыта для пользователя gdm(uid=120) (uid=0)
2024-12-13T00:31:57.229062-06:00 athena-T450 systemd-logind[1275]: Новая сессия c3 пользователя gdm.
2024-12-13T00:31:57.265244-06:00 athena-T450 (systemd): pam_unix(systemd-user:session): сессия открыта для пользователя gdm(uid=120) (uid=0)
2024-12-13T00:31:59.048278-06:00 athena-T450 polkitd[1251]: Зарегистрирован агент аутентификации для unix-session:c3 (имя системной шины :1.244 [/usr/bin/gnome-shell], объектный путь /org/freedesktop/PolicyKit1/AuthenticationAgent, локаль en_US.UTF-8)
2024-12-13T00:32:20.500869-06:00 athena-T450 gdm-smartcard]: pam_sss(gdm-smartcard:auth): Сообщение информации пользователя: Пожалуйста, вставьте смарт-карту
2024-12-13T00:32:20.502473-06:00 athena-T450 gdm-smartcard]: pam_sss(gdm-smartcard:auth): Сообщение информации пользователя: Пожалуйста, (пере)вставьте (другую) смарт-карту
На вышеуказанном переключился на другой tty, который запустил gnome. Получаю странное поведение с пустым именем пользователя и серым полем. Снова выхожу. Вставляю yubikey, запрашивает имя пользователя, ввожу его. Говорит ‘Пожалуйста, (пере)вставьте (другую) смарт-карту’. Дальше не иду. Это потому, что Ubuntu делает что-то другое с GDM – какой-то свой вариант GDM – что мне нужно добавить что-то в другой файл, или я изменил не тот файл для входа в рабочий стол?
Ответ или решение
Проблема использования YubiKey NEO (U2F) с PAM в Ubuntu 24.04
Ваша ситуация с настройкой YubiKey NEO (U2F) для безпарольной авторизации через систему PAM в Ubuntu 24.04 достаточно распространена и может быть вызвана несколькими факторами. Давайте разберемся более детально.
Первая проблема: конфигурация PAM для GDM
Вы правильно начали с изменения файла /etc/pam.d/gdm-password
, но важно понимать, что GDM может иметь специфические требования к конфигурации PAM. GDM (GNOME Display Manager) использует сессии и аутентификацию в контексте графической среды, и ваше использование pam_u2f.so
должно корректно обрабатываться в этом контексте.
Ваш текущий конфигурационный файл выглядит корректно, но давайте еще раз проверим порядок строк и условия аутентификации:
#%PAM-1.0
auth sufficient pam_u2f.so authfile=/etc/yubikey_mappings cue
auth requisite pam_nologin.so
auth required pam_succeed_if.so user != root quiet_success
@include common-auth
auth optional pam_gnome_keyring.so
@include common-account
...
-
Порядок строк: Строка с
pam_u2f.so
должна быть первой или как минимум перед строками, использующими другие механизмы аутентификации. Если GDM не сможет аутентифицировать пользователя через YubiKey, он может перейти к следующим модулям, что приведет к сбоям. -
Конфликт с другими модулями: Убедитесь, что никакой из последующих модулей не вызывает проблем с аутентификацией. Попробуйте временно закомментировать
pam_gnome_keyring.so
, чтобы исключить его влияние.
Вторая проблема: обработка логов
Логи /var/log/auth.log
показывают, что ваш pam_sss(gdm-smartcard:auth)
модули вызывает запрос на карту. Это может указывать на то, что система пытается использовать другие механизмы аутентификации, или что ваша конфигурация PAM неправильно обрабатывает вход.
Посмотрите, не установлен ли модуль pam_smartcard.so
в конфигурации GDM. Если он установлен, и если система пытается инициировать аутентификацию через смарт-карту, это может привести к путанице.
Третья проблема: графический интерфейс
Отсутствие ввода имени пользователя и серый ввод могут указывать на проблемы с взаимодействием между GDM и вашей конфигурацией PAM. GDM может не правильно инициализировать графическое окружение.
-
Проверьте конфигурацию GDM: Убедитесь, что все необходимые пакеты установлены и обновлены. Проверьте целостность конфигурационных файлов GDM — убедитесь, что они не повреждены.
-
Настройки системы: Иногда может помочь перезагрузка системы, чтобы применить все изменения в конфигурации PAM и GDM.
Что делать дальше?
-
Обновите и переустановите пакет: Если ничего не помогает, попробуйте обновить пакеты
libpam-u2f
и GDM:sudo apt update sudo apt upgrade libpam-u2f gdm3
-
Обратитесь к форумах сообщества: Иногда другие пользователи могут испытывать схожие проблемы, и их опыт может помочь найти решение.
Заключение
Использование YubiKey NEO (U2F) с PAM в Ubuntu 24.04 — это надежный способ повысить безопасность, но может требовать внимательной настройки. Следите за обновлениями и проверяйте конфигурацию, если столкнулись с проблемами. Ваша настойчивость и внимание к деталям помогут вам добиться успешной аутентификации.