Вопрос или проблема
Я экспериментировал с системой Ubuntu 19.04 и посмотрел здесь:
https://schulz.dk/2019/08/23/using-solokey-for-linux-login/
и здесь:
https://wiki.gnome.org/Projects/GnomeKeyring/Pam#Advanced_configuration
После этого я создал файл с именем common-fido-auth и включил его в
/etc/pam.d/sudo
и
/etc/pam.d/gdm-password
Последний выглядит так:
#%PAM-1.0
session required pam_env.so readenv=1 user_readenv=0
session required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-fido-auth #вместо @include common-auth
@include common-account
@include common-session-noninteractive
Я предположил, что common-auth содержит модули, которые разблокируют gnome keyring, и скопировал некоторые строки из common-auth
auth include common-fido
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
Тогда как common-fido выглядит так:
auth sufficient pam_u2f.so
auth [success=1 default=ignore] pam_unix.so nullok_secure
Но это кажется неправильным. pam_unix.so не интерпретируется должным образом, и с Solokey мне нужно вводить пароль для Gnome Keyring
Есть у кого-нибудь идеи?
Как упомянуто в https://github.com/Yubico/pam-u2f/issues/130, на который ссылался Twinkybot выше, GNOME Keyring требует пароль для разблокировки, поэтому если вы входите в систему другими средствами, нет способа передать пароль демону GNOME Keyring с помощью pam.
Альтернативы включают:
- Оставить пароль пустым. Это значит, что то, что хранится в keyring, больше не зашифровано.
- Зашифровать пароль с помощью ключей, хранящихся на вашем ключе безопасности (GPG или PIV), так что если он подключен для входа, скрипт может автоматически разблокировать ваш keyring с файлом, содержащим зашифрованный пароль.
Сейчас есть проект, который решает эту проблему путем создания файла с зашифрованным паролем для keyring в форме, которая может быть автоматически расшифрована с помощью аппаратного ключа.
Я столкнулся с той же проблемой на Ubuntu 24. Причина в том, что Gnome keyring использует тот же пароль, что и ваш пароль для входа, и это определено в /etc/pam.d/gdm-password
auth sufficient pam_u2f.so authfile=/etc/Yubico/u2f_keys cue
@include common-auth
auth optional pam_gnome_keyring.so
Как это можно решить: используя gnome-keyring-daemon
, пароль можно принимать в командной строке во время входа.
- Генерация вашего PGP ключа непосредственно на вашем YubiKey
- Зашифруйте ваш пароль с помощью команды
echo $YOUR_PASSWORD | gpg -q --encrypt --armor --recipient $YOUR_EMAIL_IN_YUBIKEY_SECRET
. Ожидаемый вывод будет выглядеть примерно так.
-----BEGIN PGP MESSAGE-----
ha4DR1IcaPYy5ZgSAQdAvdXHqMJbo3OT5+yHSzxzjxttyv9aJbUQf3KWachCbDww
s921K2dAsYK5LMros4o6sWdCTD7E0FWU4PqEK+YfU17agJzyIE14iym4GQ+HGwIs
1FQBCQIQ19/5Jb12U89JiYd2HwWAi0Fk7p+67dSETmFIW0SQCWDcQ6+yHvZ4xsAd
6PjkyrOngROSUiMMpO9iZWORFDLFH/n4YndZe4lLLw45AqczPao=
=FDUs
-----END PGP MESSAGE-----
- Обновите скрипт
~/.profile
следующим образом:
##############################################
# Gnome keyring
##############################################
read -r -d '' ENCRYPTED_PASSWORD << EOF
-----BEGIN PGP MESSAGE-----
ha4DR1IcaPYy5ZgSAQdAvdXHqMJbo3OT5+yHSzxzjxttyv9aJbUQf3KWachCbDww
s921K2dAsYK5LMros4o6sWdCTD7E0FWU4PqEK+YfU17agJzyIE14iym4GQ+HGwIs
1FQBCQIQ19/5Jb12U89JiYd2HwWAi0Fk7p+67dSETmFIW0SQCWDcQ6+yHvZ4xsAd
6PjkyrOngROSUiMMpO9iZWORFDLFH/n4YndZe4lLLw45AqczPao=
=FDUs
-----END PGP MESSAGE-----
EOF
DECRYPTED_PASSWORD=$( echo "$ENCRYPTED_PASSWORD" | gpg -q --decrypt --armor )
echo $DECRYPTED_PASSWORD | gnome-keyring-daemon --unlock --replace --components=pkcs11,secrets,ssh
unset ENCRYPTED_PASSWORD
unset DECRYPTED_PASSWORD
Ответ или решение
Для решения проблемы разблокировки Gnome Keyring после входа без пароля с использованием устройства Solokey, необходимо учитывать, что ключница Gnome обычно разблокируется с помощью пароля, идентичного вашему паролю входа в систему. При входе с использованием Solokey, никакой пароль не предоставляется автоматически, и именно поэтому возникает необходимость ручного ввода пароля для разблокировки Gnome Keyring.
Шаги по решению проблемы:
-
Конфигурация PAM:
- Определенные изменения в файл
/etc/pam.d/gdm-password
уже выполнены, но проблема в том, что Gnome Keyring не получает пароль.
- Определенные изменения в файл
-
Создание зашифрованного файла с паролем:
- Используйте существующий OpenPGP-поддерживаемый метод для шифрования вашего пароля. Это обеспечит автоматическую разблокировку ключницы путем дешифрации файла.
-
Шифрование и скрипт автоматической дешифрации:
-
Генерация ключа PGP на YubiKey:
- Следуйте инструкции по созданию PGP-ключа прямо на вашем YubiKey. Это обеспечит возможность шифрования пароля именно с использованием вашего YubiKey.
-
Шифрование пароля:
- Выполните команду
echo $YOUR_PASSWORD | gpg -q --encrypt --armor --recipient $YOUR_EMAIL_IN_YUBIKEY_SECRET
, чтобы зашифровать ваш пароль.
- Выполните команду
-
Обновление
.profile
для автоматической дешифрации и разблокировки:- Внесите в файл
~/.profile
следующие изменения, которые позволят автоматически расшифровать и использовать пароль при входе:
############################################## # Gnome keyring ############################################## read -r -d '' ENCRYPTED_PASSWORD << EOF -----BEGIN PGP MESSAGE----- ha4DR1IcaPYy5ZgSAQdAvdXHqMJbo3OT5+yHSzxzjxttyv9aJbUQf3KWachCbDww s921K2dAsYK5LMros4o6sWdCTD7E0FWU4PqEK+YfU17agJzyIE14iym4GQ+HGwIs 1FQBCQIQ19/5Jb12U89JiYd2HwWAi0Fk7p+67dSETmFIW0SQCWDcQ6+yHvZ4xsAd 6PjkyrOngROSUiMMpO9iZWORFDLFH/n4YndZe4lLLw45AqczPao= =FDUs -----END PGP MESSAGE----- EOF DECRYPTED_PASSWORD=$( echo "$ENCRYPTED_PASSWORD" | gpg -q --decrypt --armor ) echo $DECRYPTED_PASSWORD | gnome-keyring-daemon --unlock --replace --components=pkcs11,secrets,ssh unset ENCRYPTED_PASSWORD unset DECRYPTED_PASSWORD
- Внесите в файл
-
Эти шаги предоставят возможность разблокировки Gnome Keyring без необходимости ручного ввода пароля, предоставив систему, где Solokey и YubiKey совместно работают для обеспечения безопасности вашей системы. Важно удостовериться, что ваша система поддерживает все необходимые зависимости для работы OpenPGP и gpg, а также периодически проверять актуальность ключей и сертификатов.