Двофакторне шифрування повного диска Yubikey за допомогою LUKS


27

Нещодавно я придбав Yubikey Neo - чудовий маленький апаратний пристрій аутентифікації другого фактора. Він в першу чергу призначений для використання з одноразовими паролями та новим протоколом U2F, але, оскільки версія Yubikey 2, вона також підтримує аутентифікацію HMAC-SHA1 виклик-відповідь. HMAC-SHA1 поєднує секретний ключ (зберігається всередині Yubikey) і поєднує це із парольною фразою для створення відповіді.

Як я можу поєднати Yubikey з моєю установкою Ubuntu FDE для використання 2FA зі своїм зашифрованим жорстким диском?

Відповіді:


30

Група під назвою PrivacyIdea створила невеликий пакет, щоб додати до initramfs процедуру реагування на виклик HMAC-SHA1 , що означає, що 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. Додайте PPI PrivacyIdea та встановіть пакет

У 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 видалено, і лише ваша нова розшифрує жорсткий диск. Ваша попередня резервна парольна фраза залишиться такою ж. Ви можете змінити цю парольну фразу, перейшовши за посиланнями на кроці 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 для захисту своїх даних.


Оновлення: Я також спробував це з 15.04, схоже, що в PPA немає збірки необхідного пакету, тому мені доведеться змінити рядок DEB у Джерелах програмного забезпечення, щоб використовувати "надійний" сховище замість "яскравого" ". Після внесення цієї зміни моє налаштування LUKS + Yubikey працює 15.04.
seanlano

4
Більше не використовуйте Privacyidea repo! Тепер пакет міститься у версії debian!
cornelinux

1
Існує спосіб уникнути входу без юбікею: змінювати пропускну фразу luks кожного разу, коли користувач входить у систему. Тут для Gentoo є реалізація: github.com/flowolf/initramfs_ykfde Вона може бути адаптована до Ubuntu за короткий час.
Без імені_1

1
Я здогадуюсь, що ця ж процедура працює і для нового випуску 18.04 LTS?
Марк Веенстра

2
Я пробував з Ubuntu 18.04, і він працює чудово.
jetole

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. Повідомлення, показане під час завантаження, можна налаштувати в цьому файлі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.