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 :
- EndeavourOS temporaire
- EndeavourOS chiffré LVM/LUKS
- 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
Partage répertoire hôte avec un invité
EndeavourOS est installé sur une machine virtuelle QEMU/KVM
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