Live USB + persistence + luks + yubikey

Tags: #<Tag:0x00007f63f231d488> #<Tag:0x00007f63f231d208>

Bonjour,

Je suis en train de créer un live-cd personnalisé sur clé USB, l’idée étant de créer des terminaux sécurisés d’accès à mes données qui se mettent à jour tout seul (au niveau de mes données personnelles) lorsqu’ils bootent sur mon réseau privé.
Je suis franchement bien content du résultat pour le moment que j’ai obtenu en personnalisant un live-cd debian sid pour activer la persistence sur une partition encryptées via luks. Je donne la recette plus bas. J’exécute un script au démarrage qui va faire des git pull et des rsync pour récupérer mes données sur mon nas. J’ai aussi configuré mes mails, clés PGP etc… Bref c’est vraiment un chouette petit outil de secours si jamais une catastrophe survenait chez moi genre foudre qui crame tous les PC…

Disposant aussi d’une yubikey 5c nfc que je commence à mettre en oeuvre, j’aimerai bien faire une V2 dont la partition de persistence serait déverrouillée via yubikey + pin avec le slot 1, ce qui me permettrait de mettre un mot de passe bien plus fort qu’actuellement sur le slot 0 de luks.

Je pense que le fait que ça soit un live-cd complique tout, et je suis relativement noob sur le domaine.
Le mieux que j’arrive à obtenir en suivant ce tuto (Unlock LUKS volume with a YubiKey – Guy Rutenberg) c’est d’avoir mon live CD qui me demande mon password comme avant (yubikey ne marche pas) puis qui freeze, je dois faire un ctrl-c et là j’obtiens l’invite qui marche soit avec mon mdp du slot 0 soit avec auth via yubikey + pin du slot 1. J’aimerai bien sûr avoir ça dès le départ :wink:

J’imagine que c’est parce que l’initramfs recréé n’est au final dispo qu’une fois que la partition persistence est déverouillée et que pour que cela marche il faudrait en fait le faire lors de la compilation du live-cd… Je cherche donc une piste si vous avez sur la manière de faire…
J’imagine qu’il faudrait bidouiller après le lb chroot ou je dois déjà appliquer un workarround pour que la persistence fonctionne sous sid (ça marche directe sous stable)

Merci d’avance.

Compil du live CD:

sudo apt install live-build
mkdir live && cd live
mkdir auto
cp /usr/share/doc/live-build/examples/auto/* auto/

sudo lb clean

lb config --distribution sid
–bootappend-live "
boot=live
config
locales=fr_LU.UTF-8
keyboard-layouts=ch
persistent=cryptsetup
persistence-encryption=luks
persistence"

nano config/package-lists/live.list.chroot
#Ajout de :
live-boot
live-config
live-config-systemd
cryptsetup
cryptsetup-initramfs
firmware-linux-free
task-kde-desktop

sudo lb bootstrap ; sudo lb chroot
sudo su -
echo dm-crypt >> chroot/etc/initramfs-tools/modules
sed ‹ /CRYPTSETUP=/s/^#//;s/=.*/=y/ › -i chroot/etc/cryptsetup-initramfs/conf-hook
ln -s …/…/cryptsetup-initramfs/conf-hook chroot/etc/initramfs-tools/hooks/cryptsetup
chroot chroot live-update-initramfs -u

lb installer ; lb binary

sudo dd if=live-image-amd64.hybrid.iso of=/dev/sdb bs=4M status=progress && sync

sudo fdisk --wipe never /dev/sdb
#Creation de sdb3 pour luks puis
sudo cryptsetup luksFormat -s 512 -h sha512 /dev/sdb3
sudo cryptsetup luksOpen /dev/sdb3 data
sudo dd if=/dev/urandom of=/dev/mapper/data status=progress
sudo mkfs.ext4 -L persistence /dev/mapper/data
sudo mount /dev/mapper/data /mnt

sudo su -
echo « / union » > /mnt/persistence.conf
sync
umount /mnt
cryptsetup luksClose /dev/mapper/data

Bonjour !
Je te conseille ce lien qui m’aide pas mal actuellement
https://liveng.readthedocs.io/en/latest/standard-live.html

Concernant l’initramfs, il y explique ceci :

The initial RAM disk image : a RAM disk containing all the modules needed to mount the root filesystem and some scripts and binaries to perform the task. initramfs-tools is responsible of creating such an image when updating the kernel or adding some modules to the system

J’ai actuellement un soucis car je travaille aussi à mettre en oeuvre une live key bootable custom.
Je suis parti sur linux-live-kit : https://www.linux-live.org/
Cette solution marche pour moi mais n’a rien à envier à live-build ( elle l’utilise au final )

Tous les articles que je lis parlent unaniment de monter une partition chiffrée sur le côté ( persistence + encryption)
Ne peut-on pas chiffrer le root ( / ) ???

Je vais ouvrir un post sur le côté pour ne pas polluer ici, j’espère avoir pu t’aider, c’est un sujet qui semble « simple » mais ne l’est absolument pas, il faut bien comprendre certain sujets.

Bonne journée ! :slight_smile: