Kryptering af hele disken med cryptsetup/LUKS#
✓ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
Denne vejledning viser, hvordan du konfigurerer LUKS-krypterede diskenheder til at autentificere ved opstart med Nitrokey Pro eller Nitrokey Storage.
For at give lidt baggrundsinformation har cryptsetup-initramfs nu understøttelse for brug af OpenPGP-smartcards som Nitrokey Pro og Nitrokey Storage til at låse LUKS-krypterede volumener op. Når du er færdig med opsætningen, skal du blot indsætte din Nitrokey ved opstart og indtaste din bruger-PIN-kode i stedet for at indtaste din almindelige disk-krypterings-passfras.
Disse instruktioner er blevet testet på Ubuntu 20.04 og Debian 10.
Advarsel
Følgende vejledning kan potentielt låse dig ude af din computer. Du bør være opmærksom på disse risici, og vi anbefaler, at du bruger nedenstående script på en sekundær computer eller efter en fuld sikkerhedskopi, da du kan miste dine data.
Krav#
En Ubuntu- eller Debian-computer med mindst én LUKS-krypteret volumen.
Se afsnittet nedenfor for at finde ud af, hvilken metode der er kompatibel med denne vejledning.
En Nitrokey Pro 2 eller Nitrokey Storage 2 initialiseret med nøgler.
Kendte problemer#
Indtil videre fungerer scriptet kun med manuelt partitionerede diskenheder, der består af en ukrypteret /boot
-partition og en krypteret rodpartition /
-partition.
Du må ikke vælge den automatiske kryptering af hele disken, som leveres af det operativsystem, du bruger i denne vejledning. Du vil opleve tilbagevendende fejl, når partitioneringen foretages automatisk ved hjælp af installationsgrænsefladen på Ubuntu og Debian.
Vejledning#
Installer afhængigheder
$ sudo apt install scdaemon opensc gnupg2
Opret mappe med smartcard-luks
$ mkdir smartcard-luks && cd smartcard-luks
Download smartcard-luks-scriptet
$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks $ sudo chmod +x smartcard-key-luks
Eksporter den offentlige nøgle
Sådan eksporterer du din offentlige nøgle fra GnuPG’s nøglering:
$ gpg2 --armor --export KeyID > pubkey.asc
Hvis du allerede har uploadet en offentlig nøgle til en nøgleserver (eller har den gemt et andet sted), skal du hente den på den måde, du er mest fortrolig med, og gå videre til trin 5.
Bestem og bekræft det korrekte LUKS-enhedsnavn for din rodpartition:
$ cat /etc/crypttab # if there is only one entry, you want the 1st column of this entry
Fif
Normalt skal det være noget i stil med nvme0n1p3_crypt (for NitroPC) eller sda3_crypt (for NitroPads). Du kan og bør krydstjekke, at det UUID, der henvises til i /etc/crypttab, er den udpegede partition, ved at kontrollere det symbolske link i /dev/disks/by-uuid/.
Udfør scriptet med luks-enhedens navn (f.eks. nvme0n1p3_crypt) og pubkey.asc som argumenter.
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
Når du kører scriptet med den offentlige OpenPGP-nøgle som argument, opretter det automatisk en ny LUKS-hemmelighed, krypterer den mod den offentlige nøgle og opretter crypttab, LUKS, initramfs og GRUB.
Først vil du blive bedt om at indtaste User PIN
Når du har låst Nitrokey op, bliver du bedt om at indtaste din OLD passphrase
. Det er den adgangsfrase, du indtastede for at kryptere din volumen ved installationen.
Bemærk
Dette er et alternativ, hvis du mister din Nitrokey, eller hvis den ikke er tilgængelig. Indtil videre er det ikke blevet testet, og brugerne skal være opmærksomme på risikoen for at blive låst ude af deres computer, hvis nødløsningen ikke virker.
Når du har indtastet passphrasen, afslutter scriptet opsætningen på ca. et minut. Du må ikke afbryde scriptet, da du ellers kan blive låst ude af computeren efter genstart.
Færdig!
Nu skal du genstarte, og du bør kunne bruge din Nitrokey til at låse dit krypterede drev op.
Anvendelse#
Efter genstart skal du blive bedt om at indtaste din bruger-PIN-kode
Indtast din bruger-PIN-kode for at låse drevet op
Yderligere tips#
Ændre adgangsfrase#
Når denne opsætning er udført, bør du ikke længere bruge værktøjet disks (gnome) til at ændre passphrase (fallback). Den korrekte måde at gøre dette på er at kalde cryptsetup direkte på denne måde:
$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3
Med nvme0n1p3 som den partition, du har oprettet nøglerne til.
Brug flere taster#
Det er nemt at bruge flere (hardware)sikkerhedsnøgler, så hver af dem kan låse LUKS-drevet op uafhængigt af hinanden. Du skal blot eksportere flere offentlige nøgler og også pass flere nøgler til opsætningsskriptet på denne måde:
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc
Indstil kortholders navn#
Under PIN-indtastningen ved opstart til dekryptering af LUKS-rodpartitionen præsenteres en kortholder for brugeren, for at indstille dette skal du bruge $ gpg --edit-card
og inde i prompten skrive admin<x>
og name
for at indstille kortholderen for OpenPGP-kortet (Nitrokey Storage 2 eller Nitrokey Pro 2).
Udskiftning/sletning af nøgler#
Det er ikke muligt at tilføje/fjernelse nøgler direkte. Derfor skal du slette/fjern den gamle installation og køre installationen igen med de(n) udpegede nøgle(r):
Fjern nøglefilen (stien, hvis du har brugt ovenstående script) fra luks-device (nvme0n1p3):
$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg
Fjern selve nøglefilen:
$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg
Genoptag ovenstående opsætning.
Oplåsning af LUKS2 med X509-certifikat#
SystemD understøtter oplåsning af en LUKS2-partition ved hjælp af et X509-certifikat, find et godt blogindlæg om, hvordan du kan realisere dette på Personlig blog af Vladimir Timofeenko