Использование Yubikey с LUKS на съемном хранилище

Я пытаюсь использовать Yubikey 4 в качестве второго фактора для доступа к USB-жесткому диску с шифрованием LUKS. Вот как далеко я продвинулся:

Я использую yubikey-luks, чтобы добавить мой хешированный пароль HMAC-SHA1 в слот 7 устройства.

  • Проблема: cryptsetup вызывает только yubikey при загрузке, и я открываю устройство после входа в систему.

Тем не менее, я могу использовать ykchalresp чтобы вручную бросить вызов моему Yubikey.

  • Проблема:
  • Это включает в себя ввод моей парольной фразы в виде простого текста в терминал.
  • Даже если я пройду мимо этого, я не знаю способа удобно передать / ввести это в cryptsetup.

Я подумал о записи хешированной парольной фразы в файл и использовании ее как --key-file, но это звучит как плохая идея, так как у меня будет ключ от моего устройства.

Пожалуйста, дайте мне знать, если я неправильно форматирую команду, или если у вас есть решение любой из моих проблем!

1 ответ

Я сделал именно то, что вы хотели. Как я это сделал, описано ниже. Это правильный путь? Ну... это обсуждается, но у меня это работает. Надеюсь, это поможет тебе. Кроме того, я не использую Ubuntu, но он должен работать так же в Ubuntu.

Сначала я настраиваю конфигурацию Yubikey, редактируя /etc/ykfde.confзадавать YKFDE_CHALLENGEв длинную случайную строку, например 40 символов. Неважно, что это такое, просто убедитесь, что это случайно. Это позволяет мне расшифровать мой диск, не запрашивая секретный пароль. Также установитеYKFDE_CHALLENGE_SLOTв любой слот на вашем Yubikey, который вы хотите использовать. (Убедитесь, что вы настроили свой Yubikey для ответа на вызов HMAC-SHA1 в этом слоте)

Затем я настраиваю свой диск на шифрование с помощью следующих команд:
(предполагается, что вы уже разбили диск на разделы с помощью fdisk или аналогичной утилиты)

# This will ask you for a password. Set a password so that you
# can decrypt the drive without your Yubikey
sudo cryptsetup luksFormat /dev/sda1

# Next, enroll the Yubikey so that it can decrypt it as well
# When required, touch your Yubikey so it can get a challenge-response
# It'll ask for an existing password, just enter the one you set in the last command
sudo ykfde-enroll -d /dev/sda1 -s 1

# Next decrypt the drive and add a file system
# Enter the password you set in the first command
sudo cryptsetup open /dev/sda1 drive
sudo mkfs.ext4 /dev/mapper/drive

После завершения настройки я создал файл с именем mountDrive.sh в моем домашнем каталоге следующим образом:

. /etc/ykfde.conf
ykchalresp -2 "$YKFDE_CHALLENGE" | sudo cryptsetup open /dev/sda1 drive
sudo mount /dev/mapper/drive /run/mount/

Теперь я просто бегу sh mountDrive.sh
Мой Yubikey мигает, я нажимаю на него, а затем мой диск устанавливается на /run/mount

Очевидно, вам нужно изменить /dev/sda1 на какое бы ни было ваше устройство привода и измените /run/mount туда, куда вы хотите установить свой привод

Так же ykchalresp -2команда говорит ему использовать слот 2 на моем Yubikey. Измените это на любой слот, который вы настроили в своем/etc/ykfde.conf файл

Еще одна вещь: я настроил /etc/sudoers так что я могу использовать sudoбез ввода моего пароля. Возможно, есть лучший способ сделать это без использованияsudo чтобы расшифровать и смонтировать ваш диск... не уверен... во всяком случае, вот как я это настроил:

Добавить %wheel ALL=(ALL) NOPASSWD: ALL к /etc/sudoersфайл.
Добавьте свою учетную запись вwheel группа нравится:

me=`whoami`; sudo usermod -a -G wheel "$me"

Я предлагаю вам использовать этот небольшой красивый проект: https://github.com/agherzan/yubikey-full-disk-encryption на GitHub,

Это коллекция скриптов для enroll а также open зашифрованное устройство. README.md документы достаточно хорошо, что вам нужно сделать. В нем также есть инструкция по настройке автошифрования с помощью Yubikey при загрузке.

В основном вам нужно сделать следующее:

  • git clone / download проект и cd в свою папку
  • sudo make install устанавливает проект
  • Вы должны изменить файл конфигурации в /etc/ykdfe.con в частности я модифицировал следующие параметры
    • YKFDE_DISK_UUID (обязательно, вы можете получить его с помощью команды blkid /dev/sdX, где /dev/sdX это имя вашего внешнего устройства)
    • YKFDE_LUKS_NAME (обязательно, хорошее имя luks-<uuid-of-the encrypted-volume>)
    • YKFDE_CHALLENGE (необязательно, но вам нужно включить 2FA)
    • YKFDE_CHALLENGE_SLOT (необязательно, по умолчанию он равен 1, но помните, что слот 1 содержит конфигурацию для Yubikey OTP
    • YKFDE_CHALLENGE_PASSWORD_NEEDED, если вы хотите также ввести свой пароль (чтобы Yubikey действовал как аутентификация второго фактора, вместо того, чтобы быть достаточным для самостоятельной разблокировки тома)

Тогда вы можете следовать инструкциям в README.md настроить ответ на запрос Yubikey и добавить его в зашифрованный том в качестве дополнительной парольной фразы.

В конце я советую вам сделать make test это проверит конфигурацию.

Мой Yubikey работает с устройством с зашифрованным контуром, поэтому я думаю, что оно должно работать и с внешним жестким диском.

Надеюсь это поможет.

Другие вопросы по тегам