Шифроване на целия диск с cryptsetup/LUKS#
Това ръководство показва как да конфигурирате томове, криптирани с LUKS, за удостоверяване при зареждане с Nitrokey Pro или Nitrokey Storage.
За да предоставим малко информация, cryptsetup-initramfs вече има поддръжка за използване на OpenPGP смарт карти като Nitrokey Pro и Nitrokey Storage за отключване на обеми, криптирани с LUKS. След като завършите настройката, ще трябва само да поставите Nitrokey при зареждане и да въведете потребителския си PIN код, вместо да въвеждате обичайната си парола за криптиране на диска.
Тези инструкции са тествани в Ubuntu 20.04 и Debian 10.
Warning
Следното ръководство може да ви блокира достъпа до компютъра. Трябва да сте наясно с тези рискове, тъй като се препоръчва инструкциите по-долу да се използват първо на вторичен компютър или след пълно архивиране.
Изисквания#
Компютър с Ubuntu или Debian с поне един криптиран с LUKS том.
Вижте раздела по-долу, за да определите кой метод е съвместим с това ръководство.
Nitrokey Pro 2 или Nitrokey Storage 2 инициализиран с ключове.
Известни проблеми#
Засега скриптът работи само с ръчно разделени томове, които се състоят от некриптиран /boot
дял и криптиран главен /
дял.
Моля, не избирайте автоматичното криптиране на целия диск, предвидено от операционната система, която използвате за това ръководство. Ще се сблъскате с повтарящи се грешки, когато разделянето на дяловете се извършва автоматично, като се използва интерфейсът за инсталиране на Ubuntu и Debian.
Инструкции#
Инсталиране на зависимости
$ sudo apt install scdaemon opensc gnupg2
Създаване на директория smartcard-luks
$ mkdir smartcard-luks && cd smartcard-luks
Изтегляне на скрипта smartcard-luks
$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks $ sudo chmod +x smartcard-key-luks
Експортиране на публичния ключ
Експортиране на публичния ви ключ от пакета ключове на GnuPG:
$ gpg2 --armor --export KeyID > pubkey.asc
Ако вече сте качили публичен ключ на сървър за ключове (или го съхранявате някъде другаде), трябва да го изтеглите по най-удобния за вас начин и да преминете към стъпка 5.
Определете и проверете правилното име на устройството LUKS за вашия основен дял:
$ cat /etc/crypttab # if there is only one entry, you want the 1st column of this entry
Hint
Обикновено това трябва да е нещо като nvme0n1p3_crypt (за NitroPC) или sda3_crypt (за NitroPads). Можете и трябва да проверите дали UUID, посочен в /etc/crypttab, е определеният дял, като проверите символната връзка в /dev/disks/by-uuid/.
Изпълнете скрипта с името на устройството luks (например nvme0n1p3_crypt) и pubkey.asc като аргументи.
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
След като стартирате скрипта с публичния ключ на OpenPGP като аргумент, той автоматично създава нова тайна на LUKS, криптира я срещу този публичен ключ и настройва crypttab, LUKS, initramfs и GRUB.
Първо ще бъдете подканени за User PIN
След като отключите ключа Nitrokey, ще бъдете помолени да въведете OLD passphrase
. Това е паролата, която сте въвели, за да криптирате тома си при инсталацията.
Note
Това е резервна алтернатива в случай, че загубите своя Nitrokey или ако той не е наличен. Засега не е тествана и потребителите трябва да са наясно с риска да бъдат блокирани от компютъра си, ако резервният метод не сработи.
След като въведете паролата, скриптът завършва настройката за около една минута. Не прекъсвайте скрипта, в противен случай може да получите блокиране на компютъра след рестартиране.
Готово!
Сега трябва да рестартирате и ще можете да използвате ключа Nitrokey, за да отключите криптирания диск.
Употреба#
След рестартиране трябва да бъдете подканени да въведете потребителския си ПИН код.
Въведете потребителския си ПИН код, за да отключите устройството
Допълнителни съвети#
Промяна на паролата за криптиране на диска#
След като направите тази настройка, не трябва повече да използвате (gnome) disks помощната програма за промяна на (резервната) парола. Правилният начин да направите това е да извикате директно cryptsetup по следния начин:
$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3
Като nvme0n1p3 е дялът, за който сте настроили ключовете.
Използване на няколко клавиша#
Лесно е да се използват няколко (хардуерни) ключа за сигурност, така че всеки от тях да може да отключва устройството LUKS самостоятелно. Просто експортирайте няколко публични ключа и също така предайте няколко ключа на скрипта за настройка по следния начин:
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc
Задаване на име на картодържателя#
По време на въвеждането на ПИН при зареждане за декриптиране на кореновия дял на LUKS на потребителя се представя картодържател, за да зададете това, използвайте $ gpg --edit-card
и вътре в подкана въведете admin
и name
, за да зададете притежателя на картата за OpenPGP Card (Nitrokey Storage 2 или Nitrokey Pro 2).
Замяна/изтриване на ключове#
Не е възможно да добавяте/премахвате ключове директно. Затова трябва да изтриете/премахнете старата настройка и да я стартирате отново с определения(те) ключ(и):
Премахнете ключовия файл (път, ако сте използвали скрипта по-горе) от luks-device (nvme0n1p3):
$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg
Премахване на самия ключов файл:
$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg
Извършете отново горната настройка.
Отключване на LUKS2 със сертификат X509#
SystemD поддържа отключване на дял от LUKS2 с помощта на сертификат X509, намерете чудесен запис в блога за това как да го реализирате в Личния блог на Владимир Тимофеенко