Teljes lemezes titkosítás cryptsetup/LUKS segítségével

Ez az útmutató azt mutatja be, hogyan kell konfigurálni a LUKS-titkosított köteteket, hogy a rendszerindításkor a Nitrokey Pro vagy a Nitrokey Storage segítségével hitelesítsenek.

Némi háttérinformációként a cryptsetup-initramfs mostantól támogatja az OpenPGP intelligens kártyák, például a Nitrokey Pro és a Nitrokey Storage használatát a LUKS-kódolt kötetek feloldásához. A telepítés befejezése után már csak be kell helyeznie a Nitrokey-t a rendszerindításkor, és be kell írnia a felhasználói PIN-kódot, ahelyett, hogy a szokásos lemez titkosítási jelszavát gépelné be.

Ezeket az utasításokat Ubuntu 20.04 és Debian 10 rendszereken teszteltük.

Figyelem

Az alábbi útmutató potenciálisan kizárhatja Önt a számítógépéből. Tisztában kell lennie ezekkel a kockázatokkal, és javasoljuk, hogy az alábbi szkriptet egy másodlagos számítógépen vagy egy teljes biztonsági mentés után használja, mivel elveszítheti adatait.

Követelmények

  • Ubuntu vagy Debian számítógép legalább egy LUKS-titkosított kötettel.

Lásd az alábbi részt annak meghatározásához, hogy melyik módszer kompatibilis ezzel az útmutatóval.

  • Egy Nitrokey Pro 2 vagy Nitrokey Storage 2 inicializált kulcsokkal.

Ismert problémák

Eddig a szkript csak kézzel particionált kötetekkel működik, amelyek egy titkosítatlan /boot partícióból és egy titkosított gyökér / partícióból állnak.

Kérjük, ne válassza az útmutatóhoz az Ön által használt operációs rendszer által biztosított automatikus teljes lemeztitkosítást. Az Ubuntu és a Debian telepítőfelületének használatával a partícionálás automatikus elvégzésekor visszatérő hibákkal fog szembesülni.

Utasítások

  1. Függőségek telepítése

    $ sudo apt install scdaemon opensc gnupg2
    
  2. Smartcard-luks könyvtár létrehozása

    $ mkdir smartcard-luks && cd smartcard-luks
    
  3. A smartcard-luks-script letöltése

    $ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
    $ sudo chmod +x smartcard-key-luks
    
  4. A nyilvános kulcs exportálása

    A nyilvános kulcs exportálása a GnuPG kulcstárából:

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

    Ha már feltöltötte a nyilvános kulcsot egy kulcsszerverre (vagy máshol tárolja), akkor azt a számára legmegfelelőbb módon kell lekérnie, és az 5. lépéssel kell folytatnia.

  5. Határozza meg és ellenőrizze a gyökérpartíció helyes LUKS-eszköznevét:

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

    Tipp

    Ez általában valami olyasmi, mint nvme0n1p3_crypt (NitroPC esetén) vagy sda3_crypt (NitroPads esetén). A /dev/disks/by-uuid/ szimbolikus hivatkozással ellenőrizheted, hogy az /etc/crypttab-ban megadott UUID a kijelölt partíció-e, és érdemes is ellenőrizned.

  6. Futtassa a szkriptet a luks eszköz nevével (pl. nvme0n1p3_crypt) és a pubkey.asc paraméterekkel.

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

Miután futtatja a szkriptet az OpenPGP nyilvános kulcsával, automatikusan létrehoz egy új LUKS-titkot, titkosítja azt a nyilvános kulccsal, és beállítja a crypttab, a LUKS, az initramfs és a GRUB rendszereket.

Először a User PIN kérdezi meg a ``

img1

Miután feloldotta a Nitrokey-t, a rendszer meg fogja kérdezni a OLD passphrase. Ez az a jelszó, amelyet a telepítéskor a kötet titkosításához adott meg.

img2

Megjegyzés

Ez egy tartalék alternatíva arra az esetre, ha elveszítené a Nitrokey-t, vagy ha az nem áll rendelkezésre. Egyelőre nem tesztelték, és a felhasználóknak tisztában kell lenniük azzal a kockázattal, hogy kizárják a számítógépükből, ha a tartalék módszer nem működik.

Miután megadta a jelszót, a szkript körülbelül egy perc alatt befejezi a beállítást. Ne szakítsa meg a szkriptet, különben az újraindítás után kizárhatja magát a számítógépből.

img3

Kész!

Mostanra újra kell indítanod, és a Nitrokey-vel fel kell tudnod oldani a titkosított meghajtódat.

Használat

Az újraindítás után a rendszer kérni fogja a felhasználói PIN-kódot.

img5

Adja meg a felhasználói PIN-kódot a meghajtó feloldásához

img6

További tippek

Jelszó módosítása

Ha ez a beállítás megtörtént, nem szabad többé a (gnome) disks segédprogramot használni a (tartalék) jelszó módosítására. A megfelelő módja ennek, ha közvetlenül hívod a cryptsetup-ot, így:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

A nvme0n1p3 az a partíció, amelyhez a kulcsokat beállítottad.

Több kulcs használata

Könnyen lehet több (hardveres) biztonsági kulcsot használni, így mindegyikük önállóan képes feloldani a LUKS-meghajtót. Csak exportáljon több nyilvános kulcsot, és adjon át több kulcsot a beállítási szkriptnek, így:

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

Kártyabirtokos nevének beállítása

A LUKS gyökérpartíció dekódolásához szükséges PIN-kód bevitele során a felhasználónak egy kártyatulajdonos jelenik meg, ennek beállításához használja a $ gpg --edit-card és a prompton belül írja be a admin<x> és name az OpenPGP kártya (Nitrokey Storage 2 vagy Nitrokey Pro 2) kártyatulajdonosának beállításához.

Kulcsok cseréje/törlése

A kulcsok közvetlen hozzáadása/eltávolítása nem lehetséges. Ezért törölnie/eltávolítania kell a régi beállításokat, és újra kell indítania a beállításokat a kijelölt kulcs(ok)kal:

Távolítsa el a kulcsfájlt (elérési útvonal, ha a fenti szkriptet használta) a luks-device (nvme0n1p3):

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

Magának a kulcsfájlnak az eltávolítása:

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

Futtassa újra a fenti beállításokat.

LUKS2 feloldása X509 tanúsítvánnyal

A SystemD támogatja a LUKS2 partíció feloldását X509 tanúsítvány használatával, talál egy remek blogbejegyzést arról, hogyan lehet ezt megvalósítani a `Vlagyimir Timofenko személyes blogján.