Šifrovanie celého disku pomocou programu cryptsetup/LUKS

Táto príručka ukazuje, ako nakonfigurovať zväzky šifrované pomocou LUKS, aby sa pri štarte overovali pomocou Nitrokey Pro alebo Nitrokey Storage.

Aby sme vám poskytli určité pozadie, cryptsetup-initramfs teraz podporuje používanie čipových kariet OpenPGP, ako sú Nitrokey Pro a Nitrokey Storage, na odomknutie zväzkov šifrovaných pomocou LUKS. Po dokončení nastavenia stačí pri štarte systému vložiť kartu Nitrokey a zadať kód PIN používateľa namiesto zadávania bežnej prístupovej frázy pre šifrovanie disku.

Tieto pokyny boli testované v systémoch Ubuntu 20.04 a Debian 10.

Varovanie

Nasledujúci návod vás môže potenciálne zablokovať v počítači. Mali by ste si byť vedomí týchto rizík a odporúčame vám použiť nižšie uvedený skript na sekundárnom počítači alebo po úplnom zálohovaní, pretože môžete prísť o svoje údaje.

Požiadavky

  • Počítač Ubuntu alebo Debian s aspoň jedným zväzkom šifrovaným pomocou LUKS.

V nasledujúcej časti nájdete informácie o tom, ktorá metóda je kompatibilná s touto príručkou.

Známe problémy

Skript zatiaľ pracuje len s ručne rozdelenými zväzkami, ktoré sa skladajú z nešifrovaného /boot oddielu a šifrovaného koreňového / oddielu.

V tejto príručke nevyberajte automatické šifrovanie celého disku, ktoré poskytuje operačný systém, ktorý používate. Pri automatickom vytváraní diskových oddielov pomocou inštalačného rozhrania v systémoch Ubuntu a Debian sa budete stretávať s opakujúcimi sa chybami.

Pokyny

  1. Inštalácia závislostí

    $ sudo apt install scdaemon opensc gnupg2
    
  2. Vytvorenie adresára smartcard-luks

    $ mkdir smartcard-luks && cd smartcard-luks
    
  3. Stiahnite si skript smartcard-luks

    $ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
    $ sudo chmod +x smartcard-key-luks
    
  4. Export verejného kľúča

    Export verejného kľúča z kľúčenky GnuPG:

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

    Ak ste už verejný kľúč nahrali na keyserver (alebo ho máte uložený niekde inde), mali by ste ho načítať spôsobom, ktorý vám najviac vyhovuje, a prejsť na krok 5.

  5. Určite a overte správny názov zariadenia LUKS pre koreňový oddiel:

    $ cat /etc/crypttab
    # if there is only one entry, you want the 1st column of this entry
    

    Rada

    Zvyčajne by to malo byť niečo ako nvme0n1p3_crypt (pre NitroPC) alebo sda3_crypt (pre NitroPady). Môžete a mali by ste si skontrolovať, či UUID uvedené vo vnútri /etc/crypttab je určený oddiel, skontrolovaním symbolického odkazu vo vnútri /dev/disks/by-uuid/.

  6. Spustite skript s názvom zariadenia luks (napr. nvme0n1p3_crypt) a pubkey.asc ako argumentmi.

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

Po spustení skriptu s verejným kľúčom OpenPGP ako argumentom sa automaticky nastaví nový tajný kľúč LUKS, zašifruje sa podľa tohto verejného kľúča a nastaví sa crypttab, LUKS, initramfs a GRUB.

Najprv sa zobrazí výzva na zadanie User PIN

img1

Po odomknutí kľúča Nitrokey sa zobrazí výzva na zadanie vášho OLD passphrase. Je to prístupová fráza, ktorú ste zadali na zašifrovanie zväzku pri inštalácii.

Obrázok2

Poznámka

Toto je náhradná alternatíva pre prípad, že stratíte kľúč Nitrokey alebo ak nie je k dispozícii. Zatiaľ nebola testovaná a používatelia si musia byť vedomí rizika zablokovania počítača, ak záložná metóda nebude fungovať.

Po zadaní prístupovej frázy skript dokončí nastavenie približne za jednu minútu. Skript neprerušujte, inak sa vám po reštarte môže zablokovať počítač.

Obrázok3

Hotovo!

Teraz už musíte reštartovať počítač a mali by ste byť schopní odomknúť zašifrovaný disk pomocou kľúča Nitrokey.

Používanie

Po reštarte by ste mali byť vyzvaní na zadanie kódu PIN používateľa.

Obrázok5

Zadajte svoj používateľský kód PIN na odomknutie jednotky

Obrázok6

Ďalšie tipy

Zmena prístupovej frázy

Po dokončení tohto nastavenia by ste už nemali používať nástroj (gnome) disks na zmenu (záložnej) prístupovej frázy. Správny spôsob je zavolať cryptsetup priamo takto:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

Pričom nvme0n1p3 je oblasť, pre ktorú ste nastavili kľúče.

Používanie viacerých kľúčov

Je jednoduché použiť viacero (hardvérových) bezpečnostných kľúčov, aby každý z nich dokázal nezávisle odomknúť jednotku LUKS. Stačí exportovať viacero verejných kľúčov a tiež predať viacero kľúčov do inštalačného skriptu takto:

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

Nastavenie mena držiteľa karty

Pri zadávaní kódu PIN pri štarte systému na dešifrovanie koreňového oddielu LUKS sa používateľovi zobrazí držiteľ karty, na jeho nastavenie použite $ gpg --edit-card a vnútri výzvy zadajte admin a name na nastavenie držiteľa karty OpenPGP (Nitrokey Storage 2 alebo Nitrokey Pro 2).

Výmena/odstránenie kľúčov

Nie je možné priamo pridávať/odstraňovať kľúče. Preto je potrebné odstrániť/odstrániť staré nastavenie a znovu spustiť nastavenie s určeným kľúčom/klúčmi:

Odstráňte súbor s kľúčom (cesta, ak ste použili vyššie uvedený skript) z luks-device (nvme0n1p3):

$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg

Odstránenie samotného súboru s kľúčom:

$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg

Znovu spustite vyššie uvedené nastavenie.

Odomknutie LUKS2 pomocou certifikátu X509

SystemD podporuje odomykanie oddielu LUKS2 pomocou certifikátu X509, skvelý blogový záznam o tom, ako to realizovať, nájdete na Osobný blog Vladimíra Timofeenka