YannStatic
  • Etiquettes
  • Liens
  • Aide

KVM EndeavourOS avec chiffrement complet du disque LVM sur LUKS2 (Eos-LVM-LUKS)

  • virtuel
  • chiffrement
  • lvm
  •   2 sept. 2024 17 sept. 2024
Afficher/cacher Sommaire

LUKS est un format standard sur disque pour le chiffrement des disques durs. Il utilise le chiffrage par mappeur de périphérique (dm-crypt) et est implémenté en tant que module du noyau pour gérer le chiffrage au niveau du périphérique de bloc.
LVM est un outil de gestion des volumes logiques qui comprend l’allocation de disques, le striping, le mirroring et le redimensionnement des volumes logiques.

LUKS peut être utilisé avec LVM pour créer des volumes extensibles/chiffrés. L’une des options les plus robustes et les plus extensibles consiste à créer un volume chiffré à l’intérieur d’un volume logique.

  • créez un groupe de volumes LVM d’un ou plusieurs disques
  • utiliser le groupe de volumes pour créer des volumes logiques LVM
  • appliquer le chiffrage au système de fichiers des volumes logiques LVM

L’utilisation d’un volume logique permet de monter les disques au démarrage et peut être étendu dynamiquement sans sacrifier la sécurité.


Machine virtuelle EndeavourOS

Chiffrement complet du disque : LVMonLUKS avec une partition d’accueil (home) séparée et hibernation avec un fichier d’échange (swap)

EOS chiffré LUKS sur LVM

Pour une installation dans un environnement virtuel, créer en ligne de commande un disque dans la zone de travail ~/virtuel/KVM/

 qemu-img create -f qcow2 eos-lvm-luks-1.qcow2 30G

Ouvrir le gestionnaire Virtual Machine Manager pour création

  • Nom : EndeavourOS
  • Description : Chiffre : FlouseTyponSigle , Log/mp :eos/eos49
  • Processeurs : 2
  • Mémoire : 4096 Mo
  • VirtIO Disque 1 : eos-lvm-luks-1.qcow2
  • SATA CD-ROM 1 : ~/FreeUSB2To/iso/EndeavourOS_Endeavour-2024.06.25.iso
  • Options de démarrage
    • 1 SATA CD-ROM 1
    • 2 VirtIO Disque 1
  • Réseau : Bridge “host-tenda” 192.168.10.0/24
  • Détails de l’hyperviseur
    • Hyperviseur: KVM
    • Architecture: x86_64
    • Emulateur: /usr/bin/qemu-system-x86_64
    • Chipset: Q35
    • Firmware:UEFI

Sélectionner la machine virtuelle Eos-LVM-LUKS puis démarrer la machine virtuelle : Machine virtuelle –> Démarrer

Suivre les procédures suivantes en remplacant sda par vda :

  1. EndeavourOS temporaire
  2. EndeavourOS chiffré LVM/LUKS
  3. Forcer l’extinction de la machine virtuelle et modifier les options de démarrage

EndeavourOS XFCE4

Sélectionner la machine virtuelle EndeavourOS
Démarrer la machine virtuelle : Machine virtuelle –> Démarrer

Démarrage système

Il faut saisir la phrase mot de passe pour déchiffrer le disque système

On arrive sur la page de connexion utilisateur “eos”

Saisir mot de passe

Changer la résolution d’affichage : 1440x900

Utilisateur droits sudo

Modifier sudoers pour accès sudo sans mot de passe à l’utilisateur “eos”

su               # mot de passe root identique utilisateur
echo "yano     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/20-yano

Historique ligne de commande

Ajoutez la recherche d’historique de la ligne de commande au terminal
Se connecter en utilisateur
Tapez un début de commande précédent, puis utilisez shift + up (flèche haut) pour rechercher l’historique filtré avec le début de la commande.

# Global, tout utilisateur
echo '"\e[1;2A": history-search-backward' | sudo tee -a /etc/inputrc
echo '"\e[1;2B": history-search-forward' | sudo tee -a /etc/inputrc

Activation SSH avec clés

Etablir une liaison temporaire SSH

Pour un accès sur la machine via SSH depuis un poste distant

# Lancer et activer le service : 
sudo systemctl enable sshd --now
# Ouvrir le port 22 firewall: 
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent

Relever l’adresse ip de la machine : ip a 192.168.10.155 dans notre cas

Se connecter depuis un poste distant ssh yano@192.168.10.155

/etc/motd

  __  __            _     _                   _       _               _  _      
 |  \/  | __ _  __ | |_  (_) _ _   ___  __ __(_) _ _ | |_  _  _  ___ | || | ___ 
 | |\/| |/ _` |/ _|| ' \ | || ' \ / -_) \ V /| || '_||  _|| || |/ -_)| || |/ -_)
 |_|  |_|\__,_|\__||_||_||_||_||_|\___|  \_/ |_||_|   \__| \_,_|\___||_||_|\___|
  ___                _  __   __ __  __       _    _   _  _  __ ___              
 | __| ___  ___ ___ | | \ \ / /|  \/  | ___ | |  | | | || |/ // __|             
 | _| / _ \(_-<|___|| |__\ V / | |\/| ||___|| |__| |_| || ' < \__ \             
 |___|\___//__/     |____|\_/  |_|  |_|     |____|\___/ |_|\_\|___/             
  _  ___  ___     _   __  ___     _   __     _  ___  ___                        
 / |/ _ \|_  )   / | / / ( _ )   / | /  \   / || __|| __|                       
 | |\_, / / /  _ | |/ _ \/ _ \ _ | || () |_ | ||__ \|__ \                       
 |_| /_/ /___|(_)|_|\___/\___/(_)|_| \__/(_)|_||___/|___/                       

SSH avec clés

A - Poste appelant
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé vm-Eos-LVM-LUKS pour une liaison SSH avec la vm EndeavourOS.

ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/vm-Eos-LVM-LUKS

Envoyer les clés depuis le poste distant

ssh-copy-id -i ~/.ssh/vm-Eos-LVM-LUKS.pub yano@192.168.10.155

On se connecte sur la machine

ssh yano@192.168.10.155

B - Machine virtuelle EndeavourOS
Modification fichier configuration ssh sur le dell vm-Eos-LVM-LUKS

sudo nano /etc/ssh/sshd_config

Port et authentification

Port 55155
PasswordAuthentication	no

IL FAUT ACTIVER LE PORT 55155 EN ZONE "PUBLIC" DU PAREFEU !

Ajouter le nouveau port à la zone configurée de firewalld (“public” par défaut).

sudo firewall-cmd --zone=public --add-port=55155/tcp --permanent
sudo systemctl restart firewalld

Redémarrer sshd

sudo systemctl restart sshd

Se connecter sur la machine virtuelle “EndeavourOS” depuis le poste appelant

ssh yano@192.168.10.155 -p 55155 -i /home/yann/.ssh/vm-Eos-LVM-LUKS

Plymouth

Plymouth - Processus de démarrage graphique

Installer plymouth

yay -S plymouth plymouth-theme-endeavouros

Ajouter splash quiet aux options du noyau kernel dans le fichier /etc/kernel/cmdline

nvme_load=YES nowatchdog rw splash quiet rd.luks.uuid=1a5bfb32-65d4-4c92-97b8-59b8881f6ffa root=/dev/mapper/luks-1a5bfb32-65d4-4c92-97b8-59b8881f6ffa

Regénérer le noyau et redémarrer

sudo reinstall-kernels
sudo systemctl reboot

Nouvel écran pour la saisie de la phrase de déchiffrement

Clé FIDO pour déchiffrer

Installer la librairie libfido : yay -S libfido2 Vérifier que la YubiKey 29 085 988 est insérée dans un port USB de la machine hôte
Sur la fenêtre de la machine virtuelle EndeavourOS sur QEMU/KVM ckisur sur Machine -virtuelle –> Rediriger un Périphèrique USB, sélectionner Yubico Yubikey…

Si problème voir Erreur de redirection USB

Lister présence clé : systemd-cryptenroll --fido2-device=list

PATH         MANUFACTURER PRODUCT              
/dev/hidraw2 Yubico       YubiKey OTP+FIDO+CCID

Enroler la clé, la phrase de passe du disque est demandée. Le disque chiffré est /dev/vda2

sudo systemd-cryptenroll --fido2-device=auto /dev/vda2

Répéter l’opération si vous avez plusieurs clés

Prise en charge FIDO2 (crypttab)

Le fichier /etc/crypttab contient la liste des périphériques à déverrouiller automatiquement.
Chaque ligne du fichier crypttab est de la forme :
<target name> <source device> <key file> <options>

  • <target name> : Nom à donner au mappage (/dev/mapper/name), dans le cas présent “secret”
  • <source device> : l’identifiant du container luks, sous la forme UUID=
  • <key file> : chemin absolu vers le ficher de phrase de passe. Si le déverrouillage doit s’effectuer par saisie d’un mot de passe, indiquer “none”
  • <options> : liste d’options séparées par des virgules, par exemple luks, discard pour un chiffrage luks et autoriser l’utilisation de la commane fstrim ou discard au niveau du container. L’option keyscript= donne la possibilité d’exécuter un script ou une commande avec le chemin vers le fichier de passe de phrase (paramètre password précédent) fourni comme argument.

Configurer /etc/crypttab pour la prise en charge FIDO2 en ajoutant fido2-device=auto

sudo nano /etc/crypttab

La quatrième colonne luks est remplacée par luks,fido2-device=auto

# <name>               <device>                         <password> <options>
cryptlvm UUID=fd697d34-89c6-4779-8b7d-30a4e9908876     none luks,fido2-device=auto,token-timeout=10

Option token-timeout=10 : Dans le cas ou pas de clé insérée, 10 s après on affiche la demande de mot de passe

systemd-cryptenroll peut lister les keyslots d’un périphérique LUKS, de manière similaire à cryptsetup luksDump, mais dans un format plus convivial.

sudo systemd-cryptenroll /dev/vda2

Résultat pour disque déchiffrable avec une phrase et 3 clés FIDO2

SLOT TYPE    
   0 password
   1 fido2

Sauvegarder et quitter.

Reconstruire le noyau et redémarrer

sudo reinstall-kernels
sudo systemctl reboot

Dernières remarques

A ce stade, nous avons terminé. Redémarrez votre machine et elle vous demandera votre YubiKey et vous permettra de déverrouiller votre patition racine chiffrée LUKS avec elle. Si vous n’avez pas votre YubiKey, le message suivant apparaîtra :

Security token not present for unlocking volume root (nvme0n1p3_crypt), please plug it in.

Au bout d’environ 30 secondes, le délai d’attente est dépassé et le message suivant s’affiche :

Timed out waiting for security device, aborting security device based authentication attempt.

Ensuite, il vous permettra de déverrouiller la partition à l’aide d’un mot de passe (ou d’une clé de récupération).

En cas de problème, ajoutez rd.break=initqueue à la ligne de commande du noyau, et dracut entrera dans un shell avant de tenter de monter les partitions. Vous pouvez monter manuellement le disque en utilisant la commande suivante :

# /usr/lib/systemd/systemd-cryptsetup attach root /dev/nvme0n1p2

Quittez le shell d’urgence et le système continuera son démarrage normal.

Déverrouiller sa session Linux avec une Yubikey

  • Déverrouiller sa session Linux avec une Yubikey

Partage répertoire hôte avec un invité

EndeavourOS est installé sur une machine virtuelle QEMU/KVM

  • QEMU/KVM + virtio-fs - Partager un répertoire hôte avec une machine virtuelle

Copier/Coller entre hôte et invité

Il faut installer spice-vdagent sur l’invité

yay -S spice-vdagent

Wireguard

Installer application vpn

yay -S wireguard-tools

Paramétrage NetworkManager par importation d’un fichier de configuration wireguard







Si la configuration est bien prise en compte, un cadenas est ajouté sur l’icône de connexion réseau

Vérifier par le navigateur

En ligne de commande

Firejail (OPTION)

Firejail est un logiciel de sandboxing pour les systèmes d’exploitation Linux. Il permet d’exécuter des applications dans un environnement isolé du système d’exploitation hôte. Cela fonctionne quelque soit le type d’application (en ligne de commande ou graphique)
Le principe de Firejail est de créer un environnement de sécurité en lançant une application dans une boîte isolée (sandbox) où elle ne peut accéder qu’aux ressources autorisées. Ce logiciel repose sur les fonctionnalités du noyau Linux.

  • https://github.com/netblue30/firejail
  • https://firejail.wordpress.com/
  • Comment installer et utiliser Firejail dans Ubuntu
  • Archlinux firejail
  • firejail : Lancez vos applications en bac à sable

Archlinux

extra/firetools 0.9.72-2 (215.5 KiB 519.3 KiB) 
    Graphical user interface of Firejail
extra/firejail 0.9.72-3 (564.1 KiB 2.3 MiB) 
    Linux namespaces sandbox program

Installation : yay -S firetools

PRÉCÉDENTDell Latitude e6230 - EndeavourOS XFCE chiffré
SUIVANTDell Latitude e6230 - EndeavourOS Plasma KDE chiffré
Recherche