Het verliezen van je geliefde, met zorg uitgekozen, laptop is uitermate vervelend. Gelukkig heb je een back-up gemaakt, maar toch levert het je een ongemakkelijk gevoel op. Je vraagt je af of de privacygevoelige gegevens, die je hebt opgeslagen, wel veilig zijn.
Auteur: Paul Reemeijer
Hardware is vaak wel vervangbaar. De gegevens zijn aanwezig in een van de gemaakte back-ups, maar je wilt niet dat de privacygevoelige gegevens worden misbruikt voor andere doeleinden. Versleuteling is hierbij een uitkomst. Gevoelige gegevens op een versleutelde harde schijf of partitie opslaan zorgt dat de stress voor privacy bij het verliezen van je hardware verminderd.
Onder Mac OS is standaard Filevault te gebruiken en onder Windows is dit Bitlocker. Dit artikel laat je kennis maken met LUKS op Linux.
LUKS gaat op verschillende manieren besproken worden. Als eerste bij de installatie van een Linux-distributie op een schone, nieuwe laptop. Daarna als loop-device binnen je bestaande Linux installatie. Waarom deze optie? Het is namelijk niet mogelijk, zoals bij de andere twee genoemde OS-oplossingen, LUKS te activeren na een installatie zonder gegevensverlies. Als laatste wordt uitgelegd hoe je een USB-drive voorziet van LUKS.
Hieronder een kort, oppervlakkig onderzoek, bij het (op)nieuw installeren van een laptop om te ervaren hoe makkelijk het is om LUKS in te zetten, met behulp van een installatiewizard van een distributie.
De eerste distributie is OpenSUSE Leap 15. De installatiewizard volg ik door de default voorgestelde opties aan te houden. Bij de vraag voor de indeling van de harde schijf niet.
Versleuteling zet je aan onder de optie Guided Setup. Verder volg ik de wizard voor de installatie. Na de installatie reboot ik de machine en tot mijn verbazing wordt er een wachtwoord gevraagd nog voordat ik GRUB boot opties te zien krijg, zoals te zien is in screenshot 1.
De tweede distributie is Debian, de stabiele versie bij het schrijven is 9.6. Bij deze installatie volg ik tevens de standaard voorgeselecteerde opties van de installatiewizard. Bij het partitioneren van de harde schijf kies ik de enige wizardoptie met versleuteling in zijn omschrijving, “Guided – use entire disk and set up encrypted LVM” (zie screenshot 2) en volg ik verder de installatie.
Na de herstart van de machine ontdek ik een klein verschil. Dat verschil is dat ik bij Debian wel eerst GRUB boot opties krijg en daarna pas de vraag om het opgegeven encryptie wachtwoord in te voeren. Als ik kijk naar de partitie-indeling van beide installaties, zie ik dat /boot bij Debian op een partitie staat met EXT2 zonder LUKS.
In dit korte en bondige onderzoek is mijn conclusie dat bij beide distributies het niet moeilijk is om LUKS in te schakelen bij de installatie. Bij beide heb ik niets in Expert modus bij SUSE of Manual bij Debian gedaan om LUKS in gebruik te nemen.
Versleutelen van de SWAP-partitie is belangrijk voor als je bijvoorbeeld je laptop in hibernation wilt plaatsen. Hibernation zorgt ervoor dat de sleutel voor de in gebruik hebbende versleutelde partities wordt weggeschreven op de SWAP-partitie. Deze waarschuwing en meer achtergrondinformatie staan op de volgende twee websites:
Als je je laptop al helemaal hebt ingericht of je er bewust voor kiest om niet alles van je laptop te versleutelen, dan is LUKS-containers te gebruiken voor je gevoelige gegevens. Onder Linux wordt dit ook wel een Virtual HardDisk Volume (VHD) genoemd. De volgende stappen zijn uitgevoerd op een OpenSUSE Tumbleweed installatie.
Open een terminal. Maak een directory aan in je homefolder met het commando mkdir LUKS. Dit is geen eis, maar dit kies ik bewust om er zeker van te zijn dat je de juiste rechten hebt. Het is tevens fijn om een eenvoudig overzicht te hebben van je LUKS-containers op deze manier. Ga in de nieuw aangemaakte LUKS-folder staan.
Maak een nieuwe, lege disk image aan door middel van het volgende commando:
dd if =/dev/zero of=LUKSArticle bs=1 count=0 seek=1G
Nu zie je een leeg bestand van 1Gb groot. Wil je meer weten van de gebruikte opties voor dd? Kijk dan in de manual van dd door het commando man dd uit te voeren op de commandline. LUKSArticle is te vervangen door een eigen gekozen naam.
Het commando cryptsetup moet je uitvoeren als root. Deze staat namelijk in de directory /usr/sbin.
sudo cryptsetup luksFormat LUKSArticle
Direct krijg je de vraag of je het er mee eens bent, dat alle data zal verdwijnen en dat je dit ook niet ongedaan kan maken. Type YES in hoofdletters. Daarna krijg je de vraag voor het wachtwoord. Vul deze twee keer in. Voor het controleren of dat het gelukt is, type het commando:
sudo cryptsetup -v luksDump LUKSArticle
Je ziet nu header informatie van de LUKS-container.
Nu mount je de LUKS-container door sudo cryptsetup -v luksOpen ~/LUKS/LUKSArticle LUKSArticle uit te voeren. Ter controle of dat het daadwerkelijk gelukt is ls rtl /dev/mapper/ geeft je LUKSArticle aan met daarachter ../dm[met een nummer].
sudo mkfs.xfs /dev/mapper/LUKSArticle zorgt ervoor dat er een filesysteem wordt aangemaakt binnen de container. Ik kies ervoor om XFS te gebruiken. Heb je een andere voorkeur? Gebruik die dan.
Sluit nu de LUKS-container door het volgende commando uit te voeren in je terminal:
sudo cryptsetup -v luksClose LUKSArticle
Om de container weer te openen, gebruik je het volgende commando:
sudo cryptsetup -v luksOpen ~/LUKS/LUKSArticle LUKSArticle
Werken de hierboven genoemde commando’s goed? Is het mogelijk om er een bestand in op te slaan? Dan voegen we nu LUKSArticle toe aan crypttab en fstab, zodat bij het opstarten wordt gevraagd om een wachtwoord en het beschikbaar is bij het inloggen op je laptop.
Eerst voeg je de volgende regel toe aan /etc/crypttab
cr_LUKSArticle /home/[gebruikersnaam]/LUKS/LUKSArticle none luks
Voeg daarna het volgende toe aan /etc/fstab:
/dev/mapper/cr_LUKSArticle /home/[gebruikersnaam]/Documents/LUKSArticle xfs loop,nofail 0 0
Reboot je laptop en ervaar het auto-mounten van je aangemaakte LUKS-container. In screenshot 3 zie je een voorbeeld. Dit is niet exact wat je ziet, maar geeft een goede indruk wat je kunt verwachten bij het opstarten.
Een waarschuwing vooraf. Zorg ervoor dat je het juiste device kiest voor de volgende acties! Dit doe je door gebruik te maken van dmesg. Als je een USB-drive hebt waar nog informatie op staat, die je wilt bewaren, kopieer deze dan eerst naar een veilige plek.
Nu zie je ongeveer het volgende als laatste toegevoegd:
scsi 6:0:0:0: Direct-Access 256MB USB2.0FlashDrive A4 PQ: 0 ANSI: 2 sd 6:0:0:0: Attached scsi generic sg3 type 0 sd 6:0:0:0: [sdd] 512000 512-byte logical blocks: (262 MB/250 MiB) sd 6:0:0:0: [sdd] Write Protect is off sd 6:0:0:0: [sdd] Mode Sense: 00 00 00 00 sd 6:0:0:0: [sdd] Asking for cache data failed sd 6:0:0:0: [sdd] Assuming drive cache: write through sdd: sdd1 sd 6:0:0:0: [sdd] Attached SCSI removable disk
In dit voorbeeld is de USB-drive /dev/sdd. Unmount de USB-drive, als dit nodig zou zijn door het volgende uit te voeren:
sudo umount /dev/sdd1
Gebruik nu het commando fdisk om de partitietabel te bewerken.
sudo fdisk /dev/sdd
Kies voor “create a new empty DOS partition table” door optie o te kiezen. Schrijf de wijziging weg door w en op Enter te drukken. Je krijgt de melding “The partition table has been altered. Syncing disks” en fdisk sluit af.
Start fdisk weer op door het commando sudo fdisk /dev/sdd en kies optie n. De optie stelt je een aantal vragen. Ik gebruik, zoals je ziet in screenshot 4, de gehele USB-drive. Dit is eenvoudig door de default waardes te kiezen door op Enter te drukken zonder iets in te vullen.
Schrijf nu de wijziging weg naar de USB-drive door w en enter te drukken. Nu is er een lege USB-stick beschikbaar voor het volgende:
cryptsetup luksFormat /dev/sdd
Type YES en geef een wachtwoord op. Formatteer de USB op de volgende manier:
sudo cryptsetup luksOpen /dev/sdd USB01
Nu wordt er gevraagd om een wachtwoord. Vul deze in. Ik kies er voor om ext4 te gebruiken. Ben je van plan om de USB-drive te gebruiken op een Windows machine? Kies dan voor FAT32.
sudo mkfs.ext4 /dev/mapper/USB01 -L USBPAUL
Om de USB-stick af te sluiten, gebruik het commando:
sudo cryptsetup luksClose USB01
Bij het opnieuw invoeren van de USB-drive zal de GUI vragen om het wachtwoord dat je hebt ingesteld (zie screenshot 5).
Hoe je om gaat met gegevens, die in een LUKS-partitie of container staan, ga ik hier niet behandelen. Wel ga ik kort in op het maken van een LUKS-header back-up. Corruptie treedt overal en altijd op. Dit is niet veel anders met LUKS. Dit heeft verschillende oorzaken. De FAQ-pagina van cryptsetup staat er als voorbeeld dat software de eerste sector overschrijft. Het zou jammer zijn als dit gebeurd en je hierdoor geen toegang hebt tot je gegevens in de LUKS-partitie.
Maak met het volgende commando een back-up van de header van de LUKSArticle container.
sudo cryptsetup luksHeaderBackup --header-backup-file backup-header-LUKSArticle ~/LUKS/LUKSArticle
De gemaakte back-up is niet zomaar te lezen. Om de back-up te testen, voer je het volgende uit:
sudo cryptsetup –header ~/backup-header-LUKSArticle luksOpen ~/LUKS/LUKSArticle /dev/mapper/cr_LUKSArticle
Meer informatie over testen van de back-up of het restoren hiervan vind je op de FAQ-pagina
https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#6-backup-and-data-recovery.
Het feit dat je gegevens veilig zijn bij verlies van je hardware is een geruststellend gevoel. Zorg altijd voor een back-up van je gegevens, zodat je bij verlies weer snel operationeel bent.
Voor meer informatie over het maken van back-ups, kijk op de genoemde URL onder Backup en dan het kopje “6.4 How do I backup a LUKS or dm-crypt partition?”. Kijk, voor je favoriete distributie, in de handleiding voor het activeren van LUKS bij installatie. Dit gaat je zeker verder helpen en hierdoor maak je de juiste keuze voor het in gebruik nemen van LUKS.
Veel plezier met het in gebruik nemen van LUKS op je hardware!