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

27

Недавно я приобрел Yubikey Neo - изящное маленькое аппаратное устройство для аутентификации второго фактора. Он в первую очередь предназначен для использования с одноразовыми паролями и новым протоколом U2F - но начиная с версии 2 Yubikey он также поддерживает аутентификацию HMAC-SHA1 по запросу-ответу. HMAC-SHA1 объединяет секретный ключ (хранится внутри Yubikey) и комбинирует его с парольной фразой для генерации ответа.

Как я могу объединить Yubikey с моей установкой Ubuntu FDE, чтобы использовать 2FA с моим зашифрованным жестким диском?

seanlano
источник

Ответы:

30

Группа под названием PrivacyIdea создала небольшой пакет для добавления подпрограммы HMAC-SHA1 вызов-ответ в initramfs, что означает, что Ubuntu может запросить у вас запрос на передачу в Yubikey, а затем использовать ответ для разблокировки тома LUKS. По большей части, я следую этим инструкциям , с некоторыми добавленными комментариями. Процесс на самом деле очень легко сделать.

Я проверил это на Ubuntu 14.04, 16.04 и 18.04; используя Yubikey Neo. Он должен работать с любым последним Yubikey, с прошивкой 2.0+ и с любой версией Ubuntu после 14.04. Я также тестировал Ubuntu 19.04 с Yubikey 5C, потребовалась некоторая дополнительная работа, но ее можно заставить работать. Могут быть и другие аппаратные устройства HMAC-SHA1, с которыми это работает, но я не знаю ни одного из существующих. Как всегда, прежде чем продолжить, убедитесь, что у вас есть резервная копия ваших данных - здесь не должно быть никаких проблем, но всегда есть вероятность, что это разрушит все на вашем компьютере. Эти инструкции поставляются без гарантии.

Обновление: Начиная с Ubuntu 16.04, необходимые пакеты находятся в основных репозиториях, и PPA не требуется.

Добавить комментарий, если у вас есть вопросы!


0. Предпосылки

Чтобы это работало, вам уже нужно будет настроить и работать с полным дисковым шифрованием LUKS. Вы можете сделать это, выбрав соответствующую опцию при установке Ubuntu. Для максимальной безопасности во время установки у вас должна быть выбрана очень надежная фраза-пароль. Если ваша парольная фраза не до конца, вы должны изменить ее на лучшую, прежде чем продолжить ( более подробные инструкции здесь ).

Метод ниже не заменит существующие парольные фразы, но вместо этого добавит другую парольную фразу в один из слотов LUKS. Следовательно, если вы потеряете свой Yubikey, вы все равно сможете разблокировать свой компьютер, используя любую существующую парольную фразу - я предлагаю вам записать ее и спрятать в безопасном месте - вам также понадобится несколько раз во время этой процедуры. Ваша новая парольная фраза для вызова Yubikey должна быть достаточно сильной, но не обязательно такой же, как та, которую вы использовали при установке Ubuntu.


1. Добавить PrivacyIdea PPA и установить пакет

На Ubuntu 14.04

Откройте терминал и выполните следующую команду:

sudo add-apt-repository ppa:privacyidea/privacyidea 

Нажмите Enter при появлении запроса, затем запустите:

sudo apt-get update

Затем установите пакет с помощью:

sudo apt-get install yubikey-luks

На Ubuntu 16.04, 18.04

Нет необходимости в PPA, вы можете установить пакет с помощью:

sudo apt-get install yubikey-luks

На Ubuntu 19.04

Посмотрите этот ответ, чтобы узнать, как собрать yubikey-luksпакет из исходного кода для Ubuntu 19.04.


2. Установите программное обеспечение Yubikey

Если вы используете функциональность HMAC-SHA1 Yubikey для чего-то другого, вы можете пропустить этот раздел. Он удалит любую конфигурацию во втором слоте Yubikey, поэтому не выполняйте этот шаг, если вы используете HMAC-SHA1 для других целей с этим Yubikey.

Вам необходимо настроить Yubikey для работы с Ubuntu, установив необходимое программное обеспечение, либо из Yubico PPA в Ubuntu 14.04, либо из основного репозитория Ubuntu 16.04 и более поздних версий.

На Ubuntu 14.04

Если вы еще этого не сделали, добавьте PPA и установите пакет с:

sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization

На Ubuntu 16.04, 18.04 (и позже)

sudo apt-get install yubikey-personalization

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

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

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

Терминал отобразит некоторую информацию о внесенных изменениях. Вам не нужно записывать это, но он покажет секретный ключ, используемый Yubikey в алгоритме HMAC-SHA1 для вычисления ответа при вызове.


4. Зарегистрируйте Yubikey в слот LUKS

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

Раздел, который нам нужно указать, зависит от того, используете ли вы BIOS или UEFI для загрузки вашей машины. Для BIOS зашифрованный том используется /dev/sda5по умолчанию, для UEFI - по умолчанию /dev/sda3. Вы можете проверить это, открыв disksутилиту и подтвердив путь к разделу - он должен быть sda3либо sda5. ПРИМЕЧАНИЕ. На новых компьютерах с дисками NVMe путь будет примерно таким /dev/nvme0n1p3.

Запустите это в терминале:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

Это запишет в слот 7 конфигурации LUKS, следуя инструкциям установщика (они немного различаются в зависимости от используемой версии).

Тогда все готово! У вас должна быть возможность перезагрузить компьютер, и если ваш Yubikey вставлен, вы можете ввести свой пароль для вызова и использовать Yubikey в качестве второго фактора, чтобы разблокировать раздел LUKS и загрузить систему. После расшифровки жесткого диска вы можете удалить Yubikey.

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


Изменение контрольной фразы запроса на шифрование

Смена пароля на более позднем этапе довольно проста, просто используйте эту команду для сброса секретного ключа. Не обязательно сбрасывать секретный ключ, но это не повредит. Имейте в виду, что это уничтожит предыдущий секретный ключ, не делайте этого, если вы используете HMAC-SHA1 для чего-то еще с этим Yubikey. (Например, с другим компьютером, использующим LUKS + Yubikey).

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

Затем, аналогично описанному выше шагу 4 , зарегистрируйте новый пароль в слоте ключа LUKS, за исключением выбора очистки слота 7 с помощью этой команды:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

При появлении запроса Enter any remaining passphraseиспользуйте резервную резервную фразу, а не парольную фразу Yubikey. Затем дважды введите новую парольную фразу Yubikey, затем, наконец, вам потребуется ввести резервную парольную фразу в последний раз.

Теперь ваша старая парольная фраза Yubikey Challenge была удалена, и только ваша новая будет расшифровывать жесткий диск. Ваша предыдущая резервная фраза будет прежней. Вы можете изменить эту фразу-пароль, перейдя по ссылкам на шаге 0 .


Примечание о последствиях для безопасности

Добавление Yubikey добавит определенный уровень безопасности в вашу систему - кто-то должен знать и пароль-пароль вызова, и ваш Yubikey, чтобы иметь возможность разблокировать жесткий диск (или найти исходную фразу-пароль, которую вы сейчас используете в качестве резервной копии) , Однако технически возможно, чтобы злоумышленник расшифровал жесткий диск, если он знает вашу парольную фразу вызова (например, путем «серфинга по плечу», когда вы ее вводите) и может получить доступ к вашему Yubikey только на короткое время. Используя контрольную фразу, они могли получить ответ от Yubikey и сохранить его, а затем использовать его для расшифровки жесткого диска в любое время без Yubikey. Или, опять же, если злоумышленник или вредоносное ПО знали вашу фразу-пароль и смогли запустить код на компьютере, подключенном к вашему Yubikey, они также могли выполнить вызов и сохранить ответ. Поэтому по-прежнему крайне важно быть бдительным при вводе ключевой фразы вызова и следить за тем, чтобы Yubikey всегда находился в безопасном месте. Вы также должны подключать его только к машине, которой доверяете. Если вы потеряли отслеживание вашего Yubikey и подозреваете, что кто-то, возможно, использовал его, чтобы попытаться узнать ключ дешифрования, выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (ответ HMAC-SHA1 от Yubikey или вашу резервную копию), он может сделать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. и чтобы у вас всегда был Yubikey в безопасном месте. Вы также должны подключать его только к машине, которой доверяете. Если вы потеряли отслеживание вашего Yubikey и подозреваете, что кто-то, возможно, использовал его, чтобы попытаться узнать ключ дешифрования, выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (ответ HMAC-SHA1 от Yubikey или вашу резервную копию), он может сделать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. и чтобы у вас всегда был Yubikey в безопасном месте. Вы также должны подключать его только к машине, которой доверяете. Если вы потеряли отслеживание вашего Yubikey и подозреваете, что кто-то, возможно, использовал его, чтобы попытаться узнать ключ дешифрования, выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (ответ HMAC-SHA1 от Yubikey или вашу резервную копию), он может сделать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (или ответ HMAC-SHA1 от Yubikey, или вашу резервную копию), он может создать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем. выполните шаги 2 и 3 еще раз, чтобы сбросить секретный ключ внутри Yubikey и выбрать новую парольную фразу вызова. Обратите внимание, что если злоумышленнику удалось узнать одну из ваших парольных фраз (или ответ HMAC-SHA1 от Yubikey, или вашу резервную копию), он может создать резервную копию главного ключа LUKS, а затем использовать ее для расшифровки жесткого диска, даже если Вы меняете парольную фразу в будущем.Страница man для cryptsetup объясняет это, посмотрите в раздел luksHeaderBackup . Если вы подозреваете, что это произошло, вы должны создать совершенно новый том LUKS для защиты ваших данных.

seanlano
источник
Обновление: я также пробовал это с 15.04, похоже, что PPA не имеет сборки необходимого пакета, поэтому мне нужно изменить строку DEB в Software Sources, чтобы использовать «надежный» репозиторий вместо «vivid» ». После внесения этого изменения моя установка LUKS + Yubikey теперь работает 15.04.
seanlano
4
Не используйте репозиторий privacyidea! Пакет теперь содержится в исходном Debian!
cornelinux
1
Есть способ избежать входа в систему без yubikey: меняйте парольную фразу luks каждый раз, когда пользователь входит в систему. Здесь есть реализация Gentoo: github.com/flowolf/initramfs_ykfde. Она может быть адаптирована для Ubuntu в течение короткого времени.
Безымянный_1
1
Я предполагаю, что та же самая процедура работает для нового выпуска 18.04 LTS?
Марк Веенстра
2
Я пробовал с Ubuntu 18.04, и он работает нормально.
Джетоле
0

Обновление для Ubuntu 19.04:

Похоже, что в Ubuntu 19.04 (и, может быть, 18.10, я не пробовал этот релиз), cryptsetupизменилось достаточно, чтобы сломать привычную yubikey-luksработу. Эта фиксация из вышестоящего репозитория, кажется, реализует исправление, но первоначальный репозиторий , по-видимому, не обновлялся с октября 2018 года. Я нашел этот форк репо, в котором есть исправление, а также несколько других фрагментов. и сумел собрать пакет, который работает 19.04.

Поскольку я не смог найти существующую сборку обновленного форка, метод получения yubikey-luksработы включает получение исходного кода и сборку пакета DEB локально, а затем его установку.

Выполните шаги из моего предыдущего ответа , за исключением того, что замените шаг 1 следующим:


1. Получите исходный код yubikey-luks, соберите и установите пакет

Установите зависимости сборки с помощью:

sudo apt install dh-exec devscripts expect yubikey-personalization

Затем скачайте и распакуйте исходный архив:

mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*

Постройте пакет с:

make builddeb NO_SIGN=1

Затем установите его:

sudo dpkg -i DEBUILD/yubikey-luks_*.deb

Затем продолжайте следовать остальным шагам в моем первом ответе.

Надеемся, что к 19.10 версия yubikey-luksв основном архиве Ubuntu может быть обновлена, так что сборка вручную не требуется.

В качестве бонуса, более новая версия имеет файл конфигурации, который можно найти по адресу /etc/ykluks.cfg. Сообщение, отображаемое при загрузке, может быть настроено в этом файле.

seanlano
источник