Шифроване на целия диск с 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, намерете чудесен запис в блога за това как да го реализирате в Личния блог на Владимир Тимофеенко