Viso disko šifravimas naudojant „cryptsetup/LUKS

Šiame vadove rodoma, kaip konfigūruoti LUKS užšifruotus tomus, kad įkrovos metu būtų galima autentifikuoti naudojant „Nitrokey Pro“ arba „Nitrokey“ saugyklą.

Norint suteikti šiek tiek informacijos, cryptsetup-initramfs dabar palaiko „OpenPGP“ išmaniųjų kortelių, tokių kaip „Nitrokey Pro“ ir „Nitrokey Storage“, naudojimą LUKS užšifruotiems tomams atrakinti. Baigus sąranką, įkrovos metu tereikės įdėti „Nitrokey“ raktą ir įvesti naudotojo PIN kodą, užuot įvedus įprastą disko šifravimo slaptažodį.

Šios instrukcijos buvo išbandytos „Ubuntu 20.04“ ir „Debian 10“.

Įspėjimas

Šis vadovas gali užblokuoti jūsų kompiuterį. Turėtumėte žinoti apie šią riziką ir rekomenduojame toliau pateiktą scenarijų naudoti antriniame kompiuteryje arba atlikus visą atsarginę kopiją, nes galite prarasti duomenis.

Reikalavimai

  • „Ubuntu“ arba „Debian“ kompiuteris su bent vienu LUKS užšifruotu tomu.

Norėdami nustatyti, kuris metodas suderinamas su šiuo vadovu, žr. tolesnį skyrių.

  • „Nitrokey Pro 2“ arba „Nitrokey Storage 2“ inicializuota su raktais.

Žinomos problemos

Skriptas kol kas veikia tik su rankiniu būdu suskirstytais tomais, kuriuos sudaro nešifruotas /boot skirsnis ir šifruotas šakninis / skirsnis.

Šiame vadove nesirinkite automatinio viso disko šifravimo, kurį numato jūsų naudojama operacinė sistema. Naudodami „Ubuntu“ ir „Debian“ diegimo sąsają, susidursite su pasikartojančiomis klaidomis, kai skaidymas bus atliekamas automatiškai, naudojant „Ubuntu“ ir „Debian“ diegimo sąsają.

Instrukcijos

  1. Įdiegti priklausomybes

    $ sudo apt install scdaemon opensc gnupg2
    
  2. Sukurti smartcard-luks katalogą

    $ mkdir smartcard-luks && cd smartcard-luks
    
  3. Atsisiųsti smartcard-luks-script

    $ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
    $ sudo chmod +x smartcard-key-luks
    
  4. Eksportuoti viešąjį raktą

    Kaip eksportuoti viešąjį raktą iš GnuPG raktų rinkinio:

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

    Jei viešąjį raktą jau esate įkėlę į raktų serverį (arba turite jį išsaugoję kur nors kitur), turėtumėte jį gauti jums patogiausiu būdu ir pereiti prie 5 veiksmo.

  5. Nustatykite ir patikrinkite teisingą LUKS įrenginio pavadinimą šakniniam skirsniui:

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

    Patarimas

    Paprastai tai turėtų būti kažkas panašaus į nvme0n1p3_crypt (NitroPC) arba sda3_crypt (NitroPad). Galite ir turėtumėte patikrinti, ar UUID, nurodytas /etc/crypttab, yra paskirtasis skirsnis, patikrinę simbolinę nuorodą /dev/disks/by-uuid/.

  6. Vykdykite scenarijų, kaip argumentus nurodydami luks įrenginio pavadinimą (pvz., nvme0n1p3_crypt) ir pubkey.asc.

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

Paleidus scenarijų, kurio argumentas yra OpenPGP viešasis raktas, automatiškai sukuriama nauja LUKS paslaptis, užšifruojama pagal tą viešąjį raktą ir nustatomos kripttab, LUKS, initramfs ir GRUB.

Pirmiausia jūsų bus paprašyta User PIN

vaizdas1

Kai atrakinsite „Nitrokey“ raktą, būsite paprašyti nurodyti savo OLD passphrase. Tai slaptažodis, kurį įvedėte šifruodami savo tomą diegimo metu.

vaizdas2

Pastaba

Tai atsarginė alternatyva, jei prarastumėte „Nitrokey“ raktą arba jei jis būtų neprieinamas. Kol kas ji nebuvo išbandyta, todėl naudotojai turi žinoti, kad gali būti užblokuotas jų kompiuteris, jei atsarginis metodas neveikia.

Įvedus slaptažodį, scenarijus maždaug per minutę baigia sąranką. Nenutraukite scenarijaus, nes po perkrovimo kompiuteris gali būti užblokuotas.

vaizdas3

Atlikta!

Dabar turite iš naujo paleisti kompiuterį, o užšifruotam diskui atrakinti turėtumėte naudoti „Nitrokey“ raktą.

Naudojimas

Perkrovus kompiuterį turėtų būti paprašyta nurodyti naudotojo PIN kodą.

vaizdas5

Įveskite naudotojo PIN kodą, kad atrakintumėte diską

vaizdas6

Kiti patarimai

Keisti slaptažodį

Atlikus šią sąranką, nebeturėtumėte naudoti (gnomo) diskų įrankio, kad pakeistumėte (atsarginę) slaptažodžių frazę. Tinkamas būdas tai padaryti - tiesiogiai iškviesti cryptsetup taip:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

nvme0n1p3 - tai skirsnis, kuriam nustatėte raktus.

Kelių klavišų naudojimas

Lengva naudoti kelis (aparatinius) saugumo raktus, kad kiekvienas iš jų galėtų savarankiškai atrakinti LUKS diską. Tiesiog eksportuokite kelis viešuosius raktus ir taip pat perduokite kelis raktus sąrankos scenarijui, pvz:

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

Nustatyti kortelės turėtojo vardą

Įkrovos metu įvedant PIN kodą, kad būtų iššifruotas LUKS šakninis skirsnis, naudotojui pateikiamas kortelės turėtojas, norėdami tai nustatyti, naudokite $ gpg --edit-card ir raginimo viduje įveskite admin ir </x id="198"></x>, kad nustatytumėte „OpenPGP Card“ kortelės (Nitrokey Storage 2 arba Nitrokey Pro 2) turėtoją.

Keisti / šalinti raktus

Tiesiogiai pridėti ir (arba) pašalinti raktų neįmanoma. Todėl reikia ištrinti / pašalinti senąją sąranką ir iš naujo paleisti sąranką su nurodytu (-ais) raktu (-ais):

Pašalinkite rakto failą (kelią, jei naudojote pirmiau pateiktą scenarijų) iš luks-device (nvme0n1p3):

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

Pašalinti patį rakto failą:

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

Pakartokite pirmiau pateiktą sąranką.

LUKS2 atrakinimas naudojant X509 sertifikatą

SystemD palaiko LUKS2 skaidinio atrakinimą naudojant X509 sertifikatą, puikų tinklaraščio įrašą apie tai, kaip tai įgyvendinti, rasite Vladimiro Timofeenko asmeniniame tinklaraštyje