4/7/2020

OpenSUSE 15.1 installatie met versleutelde gebruikersgegevens (encrypted home directory)

Filed under: — cybrarian @ 3:23 pm

Installeren over bestaande versleutelde
Een installatie van openSUSE 15.1 over een bestaande 42.2 met versleutelde gebruikersmap (home directory) leverde wel een vraag naar het oorspronkelijke wachtwoord op, maar niet een versleutelde home directory na installatie.

Nadien versleutelen?

De home directory nadien versleutelen kan in principe, maar dan moet je op een andere manier werken. Je kan spijtig genoeg niet (meer?) een gebruiker bijmaken en aanvinken om de home directory te versleutelen…

Installatie met versleuteling

Op zoek naar de juiste plek en het juiste moment om de verleuteling te kiezen bij een nieuwe installatie van openSUSE 15.1:
Na System Role (Desktop met KDE) komt “Preparation, Disks” waarin de indeling en het gebruik van de harde schijf wordt bepaald.
Er wordt standaard voorgesteld (in dit geval, een 150 GB disk) onder “Suggested partitions” voor harde schijf sda:
– sda1 : ext4
– sda2 : BtrFS voor /
– sda3 : swap (2 GB)
(ps: Er is geen partitie voorzien voor de /home directory in dit voorstel, die komt ook onder de root- of hoofddirectory)
Hier moet je onderaan kiezen voor “Expert Partitioner”, “Start with Current proposal” om meer uitgebreide mogelijkheden te krijgen vanaf het huidig voorstel.
Je krijgt een tabel met de beschikbare opslagruimte en de voorgestelde partities.
Er is een kolom “F” die betekent dat die partitie geformatteerd gaat worden (hier sda2/BtrFS)
Er is ook een kolom “Enc” die betekent dat de partitie “encrypted” of versleuteld wordt; hier geen enkele in het voorstel.
Je kan dubbelklikken op de sda2 en aanvinken om die te versleutelen (Edit partition /dev/sda2, “Encrypt Device”).
Dan moet je het versleutel-wachtwoord ingeven. Niet vergeten. Echt niet vergeten. En vervelend: je hebt geen controle op wat je inktikt!
Daarna komt in het overzicht “Encrypted: Yes” staan.
Opgelet; sda1 en de swap zijn dus niet versleuteld, swap kan ook sporen van interessante informatie bevatten.
Bij het overzicht, onder “Booting” heb je ook een optie om de bootloader te beschermen met een wachtwoord.

Dubbel wachtwoord:
eigenaardig genoeg moet je twee keer het wachtwoord voor ontsleuteling ingeven na het opstarten…

1e keer onmiddellijk na aanzetten in een zwart scherm met enkel wat intel Matrix Storage Manager ROM informatie:

Welcome to GRUB! Attempting to decrypt master key… Enter passphrase for hd0,msdos2 (9527….):

Waarna het openSUSE startschem met keuze opkomt, .. en een tweede keer in een iets grafischer uitziend scherm vraagt om decryptie van sda2.


Op zoek naar oplossingen

oorspronkelijk niet gelukt..nadien na zowel systeem updates als wat uitproberen lukt het nu wel.

open terminal
Alles uit te voeren als root, dus om niet telkens sudo te moeten tikken…
su root
(vraagt het wachtwoord)

Maak het bestand waar de sleutel in moet komen:
touch /.root.key

Maak alleen leesbaar voor root:
chmod 600 /.root.key

maak de sleutel en zet in het bestand:
dd if=/dev/urandom of=/.root.key bs=1024 count=1
Geeft iets als

1+0 records in
1+0 records out
1024 bytes copied

(— Upd 5/7: controleer met:
# cryptsetup open --verbose --key-file /.root.key --test-passphrase /dev/sda2

Key slot 1 unlocked.
Command successful.

—upd)

Zoek je root partitie:

fdisk -l
Conclusie: sda2 bevat mijn root partitie

Voeg de sleutel toe als manier om de root partitie te ontsleutelen:

cryptsetup luksAddKey /dev/sda2 /.root.key

Enter any existing passphrase: …

cat /etc/crypttab

cr_swap  UUID=66cd2ab6-0e7c-47f7-b8a3-4a5f5d3ab85c
cr_root  UUID=6091968a-e432-47b3-9cbb-e38947bbe585  none  x-initrd.attach

Wijzig /etc/crypttab, zoek de lijn die verwijst naar de root partitie door de UUID en voeg de keyfile toe in de derde kolom.
(ik gebruik daarvoor mcedit /etc/crypttab ; mcedit je krijg je bij mc met zypper install mc)
(twee spaties vormen de tab afstand)

cr_sda1 UUID=... /.root.key

Pas dracut aan om de key file toe te voegen aan initrd:

echo -e 'install_items+=" /.root.key "' | sudo tee --append /etc/dracut.conf.d/99-root-key.conf > /dev/null
(of bv manueel aanmaken in vullen als die niet bestaat)

(—Upd 05/07: —
bij het uitvoeren van mkinitrd – zie verder – krijg je een foutmelding op het bestand

1. bovenaan bij mkinitrd uitvoer krijg je een foutmelding

/etc/dracut.conf.d/99-root-key.conf: line 1: /.root.key: Permission denied

Je kan dat bestand /etc/dracut.conf.d/99-root-key.conf bekijken. Ik heb de enkele aanhalingstekens bv weggehaald omdat het niet werkte)

2. meer onderaan in de uitvoer een foutmelding dat het niet uitgevoerd is:

dracut-install: ERROR: installing ‘”/.root.key”‘

Daarna haalde ik nog wat spaties weg en zo tot ik geen foutmelding meer kreeg.

—upd)

Om te vermijden dat het overschreven wordt, moet een lijn toegevoegd worden aan /etc/permissions.local:

/boot/ root:root 0700

Zoals in het bestand /etc/permissions.local ook vermeld wordt moet je na de wijziging:

chkstat --system --set

De initrd moet terug aangemaakt worden:
(controleer uitvoer, zie ook bovengenoemde fouten)

mkinitrd

Dat zou het moeten zijn … exit

Alles afsluiten en herstarten om te proberen.

(upd 2023: mkinitrd is buiten gebruik, zie recentere versie hier; vervangen door dracut)

(— Upd 5/7: controleer initrd
Vraag inhoud initrd op en kopieer naar een txt bestand:
lsinitrd > /root/lsinitrd.txt
Bekijk het bestand/zoek naar /.root.key bv met de voorvermelde mcedit (F7=zoek):
mcedit /root/lsinitrd.txt
—upd)

Conclusie 06/07: het is me uiteindelijk gelukt, waarbij ik niet weet welk aandeel de systeem updates hebben, en welk aandeel mijn eigen wijzigingen/afwijkingen van het arktikel in de link bovenaan.

Bronnen
o.m.
https://en.opensuse.org/SDB:Encrypted_root_file_system (alg)
https://linux.die.net/man/5/crypttab (crypttab)
https://unix.stackexchange.com/questions/533233/grub2-luks-how-to-avoid-to-type-the-passphrase-twice (over hoe checken)
https://www.reddit.com/r/openSUSE/comments/any9af/i_think_i_add_root_key_to_wrong_partition_when/

——-

PS: Volgende foutmelding duidt waarschijnlijk op het verkeerd ingeven van het wachtwoord.
Let bv op azerty/qwerty, oorspronkelijk wachtwoord waarschijnlijk in keyboard en/us

error: access denied.
error: hd1 cannot get C/H/S values.
error: hd2 cannot get C/H/S values.
error: hd… cannot get C/H/S values.

error: hd15 cannot get C/H/S values.
error: no such cryptodisk found.
error: disk ‘cryptouuid/…’ not found.
error: disk ‘cryptouuid/…’ not found.
Entering rescue mode…
grub rescue >

Powered by WordPress