Volledige schijfversleuteling met cryptsetup/LUKS#
✓ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
Deze handleiding toont hoe u LUKS-gecodeerde volumes kunt configureren, om bij het opstarten te authenticeren met Nitrokey Pro of Nitrokey Storage.
Om wat achtergrond te geven, cryptsetup-initramfs heeft nu ondersteuning voor het gebruik van OpenPGP smartcards zoals de Nitrokey Pro en Nitrokey Storage om met LUKS versleutelde volumes te ontgrendelen. Zodra de setup voltooid is, moet u enkel uw Nitrokey bij het booten inbrengen en uw gebruikers-PIN invoeren, in plaats van uw gewone passphrase voor schijfversleuteling in te typen.
Deze instructies zijn getest op Ubuntu 20.04 en Debian 10.
Waarschuwing
De volgende handleiding kan u mogelijk van uw computer uitsluiten. U moet zich bewust zijn van deze risico’s, en wij raden u aan het onderstaande script te gebruiken op een tweede computer, of na een volledige back-up, aangezien u uw gegevens zou kunnen verliezen.
Vereisten#
Een Ubuntu of Debian computer met ten minste één met LUKS versleuteld volume.
Zie het onderstaande gedeelte om te bepalen welke methode compatibel is met deze gids.
Een Nitrokey Pro 2 of Nitrokey Storage 2 geïnitialiseerd met toetsen.
Bekende problemen#
Tot nu toe werkt het script alleen met handmatig gepartitioneerde volumes, die zijn samengesteld uit een onversleutelde /boot
partitie, en een versleutelde root /
partitie.
Selecteer alstublieft niet de automatische volledige-schijfversleuteling die wordt geleverd door het besturingssysteem dat u gebruikt voor deze gids. U zult te maken krijgen met terugkerende fouten wanneer de partitionering automatisch wordt uitgevoerd, met behulp van de installatie-interface op Ubuntu en Debian.
Instructies#
Afhankelijkheden installeren
$ sudo apt install scdaemon opensc gnupg2
Creëer smartcard-luks map
$ mkdir smartcard-luks && cd smartcard-luks
Het smartcard-luks-script downloaden
$ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks $ sudo chmod +x smartcard-key-luks
Exporteer de publieke sleutel
Om uw publieke sleutel uit GnuPG’s sleutelring te exporteren:
$ gpg2 --armor --export KeyID > pubkey.asc
Als u al een publieke sleutel naar een keyserver hebt geüpload (of hem ergens anders hebt opgeslagen), moet u hem ophalen op de manier die u het gemakkelijkst vindt, en doorgaan naar stap 5.
Bepaal en controleer de juiste LUKS-apparaatnaam voor uw root-partitie:
$ cat /etc/crypttab # if there is only one entry, you want the 1st column of this entry
Hint
Meestal zou dit iets als nvme0n1p3_crypt (voor NitroPC) of sda3_crypt (voor NitroPads) moeten zijn. U kunt en moet controleren of de UUID waarnaar in /etc/crypttab wordt verwezen de aangewezen partitie is door de symbolische link in /dev/disks/by-uuid/ te controleren.
Voer het script uit met de luks apparaatnaam (b.v. nvme0n1p3_crypt) en pubkey.asc als argumenten.
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
Zodra je het script uitvoert met de OpenPGP publieke sleutel als argument, stelt het automatisch een nieuw LUKS geheim in, vercijfert het tegen die publieke sleutel, en stelt crypttab, LUKS, initramfs, en GRUB in.
Eerst wordt u gevraagd om de User PIN
Zodra u de Nitrokey hebt ontgrendeld, wordt u gevraagd om uw OLD passphrase
. Dit is de wachtwoordzin die u bij de installatie hebt ingevoerd om uw volume te versleutelen.
Notitie
Dit is een uitwijkmogelijkheid voor het geval u uw Nitrokey verliest, of als deze niet beschikbaar is. Tot nu toe is het niet getest, en gebruikers moeten zich bewust zijn van het risico om van hun computer te worden afgesloten, als de fall-back methode niet werkt.
Zodra u de passphrase hebt ingevoerd, voltooit het script de setup in ongeveer een minuut. Onderbreek het script niet, anders kunt u na het herstarten van uw computer geblokkeerd raken.
Klaar!
U moet nu opnieuw opstarten, en u zou in staat moeten zijn om uw Nitrokey te gebruiken om uw versleutelde schijf te ontgrendelen.
Gebruik#
Na de herstart wordt u gevraagd om uw gebruikers-PIN
Voer uw gebruikers-PIN in om het station te ontgrendelen
Verdere tips#
Wijzig paswoord#
Zodra deze setup gedaan is, moet je het (gnome) disks hulpprogramma niet meer gebruiken om de (fallback) passphrase te veranderen. De juiste manier om dit te doen is door cryptsetup direct aan te roepen zoals dit:
$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3
Met nvme0n1p3 als de partitie waar je de sleutels voor hebt ingesteld.
Gebruik meerdere toetsen#
Het is eenvoudig om meerdere (hardware) beveiligingssleutels te gebruiken, zodat elk van hen in staat is om de LUKS-schijf onafhankelijk te ontgrendelen. Exporteer gewoon meerdere publieke sleutels en pas ook meerdere sleutels toe aan het setup script zoals dit:
$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc
Naam kaarthouder instellen#
Tijdens de PIN-invoer bij het opstarten voor het decoderen van de LUKS root-partitie wordt een kaarthouder aan de gebruiker voorgesteld, om dit in te stellen gebruikt u $ gpg --edit-card
en binnen de prompt typt u admin
en name
om de kaarthouder voor de OpenPGP-kaart (Nitrokey Storage 2 of Nitrokey Pro 2) in te stellen.
Sleutels vervangen/verwijderen#
Het is niet mogelijk om direct sleutels toe te voegen/te verwijderen. Daarom moet u de oude setup wissen/verwijderen en de setup opnieuw uitvoeren met de aangewezen sleutel(s):
Verwijder het sleutelbestand (pad, als u het script hierboven gebruikte) van luks-device (nvme0n1p3):
$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg
Verwijder het sleutelbestand zelf:
$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg
Voer de bovenstaande setup opnieuw uit.
Ontgrendelen van LUKS2 met X509-certificaat#
SystemD ondersteunt het ontgrendelen van een LUKS2-partitie met behulp van een X509-certificaat, een goede blog entry over hoe dit te realiseren is te vinden op de Persoonlijke blog van Vladimir Timofeenko