Šifriranje celotnega diska s programom cryptsetup/LUKS

V tem priročniku je prikazano, kako konfigurirati volumne, šifrirane s protokolom LUKS, za preverjanje pristnosti ob zagonu z Nitrokey Pro ali Nitrokey Storage.

V ozadju je v programu cryptsetup-initramfs zdaj na voljo podpora za uporabo pametnih kartic OpenPGP, kot sta Nitrokey Pro in Nitrokey Storage, za odklepanje volumnov, šifriranih s tehnologijo LUKS. Ko končate z nastavitvijo, boste morali ob zagonu vstaviti ključ Nitrokey in vnesti uporabniški PIN, namesto da bi vnesli običajno geslo za šifriranje diska.

Ta navodila so bila preizkušena v Ubuntuju 20.04 in Debianu 10.

Opozorilo

Naslednji vodnik vas lahko zaklene iz računalnika. Teh tveganj se morate zavedati, zato vam priporočamo, da spodnjo skripto uporabite v drugem računalniku ali po popolni varnostni kopiji, saj lahko izgubite svoje podatke.

Zahteve

  • Računalnik Ubuntu ali Debian z vsaj enim šifriranim zvezkom LUKS.

Če želite ugotoviti, katera metoda je združljiva s tem vodnikom, glejte spodnji razdelek.

Znane težave

Skripta zaenkrat deluje le z ročno razdeljenimi zvezki, ki so sestavljeni iz nešifrirane /boot particije in šifrirane korenske / particije.

Ne izberite samodejnega šifriranja celotnega diska, ki ga zagotavlja operacijski sistem, ki ga uporabljate za ta vodnik. Pri samodejnem razdeljevanju razdelkov z uporabo namestitvenega vmesnika v Ubuntuju in Debianu boste naleteli na ponavljajoče se napake.

Navodila

  1. Namestitev odvisnosti

    $ sudo apt install scdaemon opensc gnupg2
    
  2. Ustvarite imenik smartcard-luks

    $ mkdir smartcard-luks && cd smartcard-luks
    
  3. Prenesite skript smartcard-luks

    $ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
    $ sudo chmod +x smartcard-key-luks
    
  4. Izvozite javni ključ

    Izvoz javnega ključa iz zbirke ključev GnuPG:

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

    Če ste javni ključ že prenesli v strežnik ključev (ali ga imate shranjenega drugje), ga pridobite na način, ki vam najbolj ustreza, in nadaljujte s korakom 5.

  5. Določite in preverite pravilno ime naprave LUKS za korensko particijo:

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

    Nasvet

    Običajno je to nekaj takega kot nvme0n1p3_crypt (za NitroPC) ali sda3_crypt (za NitroPad). Lahko in morate preveriti, ali je UUID, naveden znotraj /etc/crypttab, določena particija, tako da preverite simbolno povezavo znotraj /dev/disks/by-uuid/.

  6. Izvedite skripto z imenom naprave luks (npr. nvme0n1p3_crypt) in pubkey.asc kot argumentoma.

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

Ko zaženete skripto z javnim ključem OpenPGP kot argumentom, skripta samodejno vzpostavi novo skrivnost LUKS, jo šifrira s tem javnim ključem in nastavi crypttab, LUKS, initramfs in GRUB.

Najprej boste pozvani k User PIN

Img1

Ko odklenete ključ Nitrokey, boste pozvani k vpisu OLD passphrase. To je geslo, ki ste ga vnesli za šifriranje glasnosti ob namestitvi.

Img2

Opomba

To je nadomestna možnost, če izgubite ključ Nitrokey ali če ta ni na voljo. Do zdaj ni bila preizkušena, zato se morajo uporabniki zavedati tveganja, da bodo zaklenjeni iz računalnika, če rezervna metoda ne bo delovala.

Ko vnesete geslo, skripta v približno eni minuti konča namestitev. Skripte ne prekinjajte, sicer lahko po ponovnem zagonu zaklenete računalnik.

Img3

Končano!

Zdaj morate znova zagnati računalnik in s ključem Nitrokey boste lahko odklenili šifrirani disk.

Uporaba

Po ponovnem zagonu morate biti pozvani k vnosu uporabniške kode PIN.

Img5

Vnesite uporabniško kodo PIN, da odklenete pogon

Img6

Nadaljnji namigi

Sprememba gesla

Ko je ta nastavitev opravljena, ne smete več uporabljati pripomočka (gnome) diski za spreminjanje (rezervne) gesla. Pravilen način za to je, da neposredno pokličete cryptsetup na naslednji način:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

Pri čemer je nvme0n1p3 razdelek, za katerega ste nastavili ključe.

Uporaba več tipk

Enostavno lahko uporabite več (strojnih) varnostnih ključev, tako da lahko vsak od njih samostojno odklene pogon LUKS. Enostavno izvozite več javnih ključev in tudi predajte več ključev v nastavitveno skripto, kot sledi:

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

Nastavitev imena imetnika kartice

Med vnosom kode PIN ob zagonu za dešifriranje korenskega razdelka LUKS se uporabniku prikaže imetnik kartice, za nastavitev tega uporabite $ gpg --edit-card in znotraj poziva vnesite admin in </x id="198"></x> za nastavitev imetnika kartice za kartico OpenPGP (Nitrokey Storage 2 ali Nitrokey Pro 2).

Zamenjava/izbris ključev

Neposredno dodajanje/odstranjevanje ključev ni mogoče. Zato morate izbrisati/odstraniti staro nastavitev in ponovno zagnati nastavitev z določenimi ključi:

Odstranite datoteko s ključi (pot, če ste uporabili zgornjo skripto) iz luks-device (nvme0n1p3):

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

Odstranite samo datoteko s ključi:

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

Ponovno zaženite zgornjo nastavitev.

Odklepanje sistema LUKS2 s potrdilom X509

SystemD podpira odklepanje particije LUKS2 s certifikatom X509, odličen zapis na blogu o tem, kako to izvesti, najdete na Osebni blog Vladimirja Timofeenka