Как разблокировать Gnome Keyring после входа без пароля с помощью Solokey (Yubiko)?

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

Я экспериментировал с системой 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 в форме, которая может быть автоматически расшифрована с помощью аппаратного ключа.

https://github.com/recolic/gnome-keyring-yubikey-unlock

Я столкнулся с той же проблемой на 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, пароль можно принимать в командной строке во время входа.

  1. Генерация вашего PGP ключа непосредственно на вашем YubiKey
  2. Зашифруйте ваш пароль с помощью команды 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-----
  1. Обновите скрипт ~/.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.

Шаги по решению проблемы:

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

    • Определенные изменения в файл /etc/pam.d/gdm-password уже выполнены, но проблема в том, что Gnome Keyring не получает пароль.
  2. Создание зашифрованного файла с паролем:

    • Используйте существующий OpenPGP-поддерживаемый метод для шифрования вашего пароля. Это обеспечит автоматическую разблокировку ключницы путем дешифрации файла.
  3. Шифрование и скрипт автоматической дешифрации:

    • Генерация ключа 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, а также периодически проверять актуальность ключей и сертификатов.

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

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