Юбики на нескольких дисках LUKS

У меня есть следующие разделы LUKS:

root@precision:~# blkid | grep crypto_LUKS
/dev/nvme0n1p3: UUID="e1ac241d-a91c-4386-9b08-752dc5d0e9b8" TYPE="crypto_LUKS" PARTUUID="91fc5b71-7c22-4e3e-821d-7116a5a46f7e"
/dev/nvme0n1p4: UUID="23c3618e-be44-42f0-812b-bee1b0ac8dfe" TYPE="crypto_LUKS" PARTUUID="a6caf1e1-6ceb-4287-a2e2-45e4bbf1cec1"
/dev/sda1: UUID="396463ed-16f8-4f77-808d-743f35eaa4cb" TYPE="crypto_LUKS" PARTUUID="1cec189b-c43b-4094-a9f2-47d8f589c6d8"

Попытка настроить Yubikey 2FA в соответствии с:

Двухфакторная аутентификация Yubikey Полное шифрование диска через LUKS

https://www.howtoforge.com/ubuntu-two-factor-authentication-with-yubikey-for-harddisk-encryption-with-luks

Я запускаю следующий скрипт три раза, каждый раз меняя целевой диск внутри скрипта, прежде чем сделать это. Каждый раз, когда я отправляю одну и ту же фразу-пароль "123456"

Затем я проверяю слоты на каждом из крипто-дисков LUKS и вижу, что SLOT 7 включен:

root@precision:~# cryptsetup luksDump /dev/nvme0n1p3 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: ENABLED
root@precision:~# cryptsetup luksDump /dev/nvme0n1p4 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: ENABLED
root@precision:~# cryptsetup luksDump /dev/sda1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: ENABLED
root@precision:~# 

Проблема:

Когда я перезагружаюсь, кажется, что Yubikey 2FA разблокирует nvme0n1p3, однако диски /dev/nvme0n1p4 и /dev/sda1 не разблокируются, и мне нужно ввести пароль LUKS.

Когда я не использую Yubikey, я могу ввести пароль LUKS только один раз, и все диски разблокированы.

2 ответа

В качестве альтернативы специфичной для Yubikey реализации, вы можете использовать стандарт (Yubikey 5+, другие бренды) вместе счтобы разблокировать тома LUKS2 .

Говорят, что , даже при использовании одного и того же аутентификатора для нескольких дисков LUKS2 или для других целей. (Это может быть просто потому, что совместимые смарт-карты предварительно настроены для FIDO2.)

Ниже приведены минимальные шаги для дискаsda5и объем LUKS2myvolume.

      systemd-cryptenroll --fido2-device=auto /dev/sda5

Также редактировать/etc/crypttabвключить опциюfido2-device=autoв четвертом столбце.

      myvolume /dev/sda5 - fido2-device=auto

При желании настройте, например, проверку присутствия пользователя, которая требует прикосновения к Yubikey для разблокировки.


Несколько стандартов аутентификации поддерживаются .

  • FIDO2ФИДО2 , сhmac-secretрасширение. Поддерживается Yubikey 5+ и некоторыми другими брендами.
  • ПКС №11 . Для Yubikey это требует настройки слотов PIV/сертификатов Yubikey. (Аналогично использованию слотов Yubikey для HMAC-SHA1, используемыхyubikey-luks.)
  • Поддержка доверенных платформенных модулей 2.0 (TPM2) . Использует микросхему TPM2, которая по сути представляет собой встроенную системную смарт-карту.

Дополнительные сведения см. в записи блога Леннарта Поттеринга « FIDO2 «просто работает»Разблокировка томов LUKS2 с помощью оборудования безопасности TPM2, FIDO2, PKCS#11 на systemd 248 » от 13 января 2021 г. См. также связанные идеи, такие как разделение системного и пользовательского шифрования домашних каталогов и неизменяемые образы операционных систем .


Обратите внимание, чтоsystemd-cryptenrollподдержка довольно новая, и не все дистрибутивы/версии включают все функции по умолчанию. В моей системе Ubuntu 22.04.1 LTS :

      systemd --version
      systemd 249 (249.11-0ubuntu3.6)
+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified

Обратите внимание, что+LIBCRYPTSETUPи+FIDO2включены, но и то, что-P11KITвыключен.

Возможно, ваш сценарий настройки диска случайно сбрасывает Yubikey?

Шаги в ответе на связанный вопрос от @seanlano объясняют, что второй слот Yubikey нужно инициализировать/запрограммировать для HMAC-SHA1 только один раз. Если запустить инициализацию слота Yubikey ykpersonalizeво время настройки каждого диска, вы перезапишете секретный ключ слота Yubikey, который вы использовали во время предыдущих настроек диска.

3. Инициализируйте слот Yubikey для HMAC-SHA1.

Теперь нам нужно запрограммировать второй слот Yubikey с конфигурацией HMAC-SHA1. Это удалит вашу предыдущую конфигурацию слота, которая по умолчанию пуста. Опять же, если вы используете HMAC-SHA1 для чего-то другого , не вводите эту команду — она сотрет вашу конфигурацию. Вы можете безопасно использовать тот же секретный ключ внутри Yubikey для этой настройки LUKS, что и для других целей. (Например, с другого компьютера с помощью LUKS+Юбикей).

       ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Решение при первоначальной настройке состоит в том, чтобы не перепрограммировать слот Yubikey каждый раз — достаточно одного раза для всех дисков.

Чтобы исправить это, вы можете сбросить слот 7 LUKS на каждом диске, заменив все предыдущие учетные данные, хранящиеся там. Это также описано в ответе @seanlano. Поскольку вы уже настроили свой Yubikey, требуется только одна команда для каждого диска.

С настройкой, указанной в вашем вопросе, это yubikey-luksкоманды. Обязательно настройте его на текущую настройку, если она изменилась с тех пор, так как это удалит ваши текущие учетные данные для этого слота LUKS.

      sudo yubikey-luks-enroll -d /dev/nvme0n1p3 -s 7 -c
sudo yubikey-luks-enroll -d /dev/nvme0n1p4 -s 7 -c
sudo yubikey-luks-enroll -d /dev/sda1 -s 7 -c
Другие вопросы по тегам