Использование 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 OTPYKFDE_CHALLENGE_PASSWORD_NEEDED
, если вы хотите также ввести свой пароль (чтобы Yubikey действовал как аутентификация второго фактора, вместо того, чтобы быть достаточным для самостоятельной разблокировки тома)
Тогда вы можете следовать инструкциям в README.md
настроить ответ на запрос Yubikey и добавить его в зашифрованный том в качестве дополнительной парольной фразы.
В конце я советую вам сделать make test
это проверит конфигурацию.
Мой Yubikey работает с устройством с зашифрованным контуром, поэтому я думаю, что оно должно работать и с внешним жестким диском.
Надеюсь это поможет.