Шифроване на целия диск с 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 том.

Вижте раздела по-долу, за да определите кой метод е съвместим с това ръководство.

Известни проблеми

Засега скриптът работи само с ръчно разделени томове, които се състоят от некриптиран /boot дял и криптиран главен / дял.

Моля, не избирайте автоматичното криптиране на целия диск, предвидено от операционната система, която използвате за това ръководство. Ще се сблъскате с повтарящи се грешки, когато разделянето на дяловете се извършва автоматично, като се използва интерфейсът за инсталиране на Ubuntu и Debian.

Инструкции

  1. Инсталиране на зависимости

    $ sudo apt install scdaemon opensc gnupg2
    
  2. Създаване на директория smartcard-luks

    $ mkdir smartcard-luks && cd smartcard-luks
    
  3. Изтегляне на скрипта smartcard-luks

    $ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
    $ sudo chmod +x smartcard-key-luks
    
  4. Експортиране на публичния ключ

    Експортиране на публичния ви ключ от пакета ключове на GnuPG:

    $ gpg2 --armor --export KeyID > pubkey.asc
    

    Ако вече сте качили публичен ключ на сървър за ключове (или го съхранявате някъде другаде), трябва да го изтеглите по най-удобния за вас начин и да преминете към стъпка 5.

  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/.

  6. Изпълнете скрипта с името на устройството luks (например nvme0n1p3_crypt) и pubkey.asc като аргументи.

    $ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
    

След като стартирате скрипта с публичния ключ на OpenPGP като аргумент, той автоматично създава нова тайна на LUKS, криптира я срещу този публичен ключ и настройва crypttab, LUKS, initramfs и GRUB.

Първо ще бъдете подканени за User PIN

Изображение 1

След като отключите ключа Nitrokey, ще бъдете помолени да въведете OLD passphrase. Това е паролата, която сте въвели, за да криптирате тома си при инсталацията.

Изображение2

Note

Това е резервна алтернатива в случай, че загубите своя Nitrokey или ако той не е наличен. Засега не е тествана и потребителите трябва да са наясно с риска да бъдат блокирани от компютъра си, ако резервният метод не сработи.

След като въведете паролата, скриптът завършва настройката за около една минута. Не прекъсвайте скрипта, в противен случай може да получите блокиране на компютъра след рестартиране.

Изображение3

Готово!

Сега трябва да рестартирате и ще можете да използвате ключа Nitrokey, за да отключите криптирания диск.

Употреба

След рестартиране трябва да бъдете подканени да въведете потребителския си ПИН код.

Изображение5

Въведете потребителския си ПИН код, за да отключите устройството

Изображение6

Допълнителни съвети

Промяна на паролата за криптиране на диска

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