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

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

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

27
задан 20 September 2015 в 16:38

3 ответа

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

Я протестировал это на Ubuntu 14.04, 16.04 и 18.04; использование Yubikey Нео. Это должно работать с любым недавним 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. Программное обеспечение Install Yubikey

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

Необходимо будет создать Yubikey для работы с Ubuntu путем установки необходимого программного обеспечения, или от PPA Yubico на 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 был удален, и только Ваш новый дешифрует жесткий диск. Ваш предыдущий резервный пароль все еще будет тем же. Можно изменить тот пароль, перейдя по ссылкам на Шаге 0.


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

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

30
ответ дан 20 September 2015 в 16:38

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

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

0
ответ дан 5 October 2019 в 12:02

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

Пропустить шаги 1 и 2

Поскольку теперь в репозитории Ubuntu 20.04 доступны все пакеты, поэтому просто установите yubikey-luks как:

sudo apt install yubikey-luks

Шаг 3

Здесь следует обратить внимание на одну вещь: вы можете добавить параметр -ochal-btn-trig в команду ykpersonalize.

Что он делает? Он будет ждать 15 секунд для нажатия кнопки на YubiKey (если у вас есть кнопка на yubikey), up2u.

Шаг 5

При перезагрузке компьютера вы не увидите сообщение из /etc/ykluks.cfg, почему? Потому что каким-то образом этот скрипт не изменяет /etc/crypttab.

Хорошо, теперь нам нужно изменить /etc/crypttab, чтобы добавить: keyscript=/usr/share/yubikey-luks/ykluks-keyscript,

Как это может выглядеть до модификации?

cat /etc/crypttab  
[partition] UUID=1b2c1618-dc62-4d32-ab30-ebc23cb28cea none luks,discard

Ваш раздел может быть любым, например: sda3_crypt, даже если ваша система находится на sdb, не волнуйтесь, игнорируйте это.

Как это может выглядеть после модификации?

cat /etc/crypttab  
[partition] UUID=1b2c1618-dc62-4d32-ab30-ebc23cb28cea none luks,keyscript=/usr/share/yubikey-luks/ykluks-keyscript,discard

Просто добавьте часть с клавишным скриптом.

ОЧЕНЬ ВАЖНО: Не пропускайте ЗАПЯТЫЕ между опциями, потому что вы испортите конфиг.

ОЧЕНЬ ВАЖНО v2: Перед следующим шагом подтвердите путь к ключевому скрипту, проверьте, есть ли у вас этот файл, если нет, извините.

Шаг 6:

sudo update-initramfs -u

Кредиты

Знания предоставлены: https://infosec-handbook.eu/blog/yubikey-luks/

И это это, пожалуйста.

5
ответ дан 9 July 2020 в 07:18

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

Похожие вопросы: