Ceci est une ancienne révision du document !
Chiffrer une partition système avec LUKS
Ubuntu propose une installation avec LVM et chiffrée très pratique si vous n'avez qu'un disque, mais sur un de mes ordinateurs j'en ai deux (un HDD et un SSD) et je désire maîtriser le partitionnement afin de répartir les répertoires du système entre les deux disques. Comme je désire quand même avoir mes fichiers protégés par un chiffrement en cas de perte voici la méthode que j'ai utilisée.
Avertissement : Avec cette méthode la partition '/boot' ne sera pas chiffrée. Un attaquant avec un accès physique à la machine pourrait placer un Keylogger ou un Trojan à ce niveau là (voir cette page, cette page ou encore celle-ci).
Démarrer sur une clé USB
La première étape est de démarrer sur une clé USB (réalisée avec Unetbootin) qui contient l'image de la dernière version d'Ubuntu. Je vous recommande de vérifier les signatures et la somme de contrôle du fichier téléchargé avec celle disponible sur le site d'origine.
openssl dgst -sha256 ubuntu-19.10-desktop-amd64.iso
Une fois le démarrage effectué sur la clé, la première chose à faire est de passer le clavier en français. Il faut aller dans Système → Préférences → Clavier puis cliquer sur l'onglet “Agencements” et ajouter “France” pour l'appliquer à l'ensemble du système.
Formater les disques
Je désire garder une partie de l'espace libre sur le SSD et mettre dessus les éléments du système sauf les répertoires avec beaucoup d'écritures afin de préserver la longévité sur SSD :
- /tmp
- /var
- et la SWAP
Je lance GParted pour formater mon disque HDD '/dev/sda' et je choisis :
- 16 Gio pour la Swap
- et je formate le reste (ou je le laisse libre pour le formater pendant l'installation).
Puis sur le disque SSD '/dev/sdc' de 128 Giga je formate une petite moitié pour le système :
- 250 Mo pour la partition UEFI
- 48 Gio pour le système
- et je laisse le reste libre
Si vous désirez installer un deuxième système juste après le premier vous devriez tout de suite ajouter une deuxième partition sur ce disque, mais il est bon de laisser un peu d'espace libre sur un SSD.
Pour la partition EFI, elle doit posséder les caractéristiques suivantes:
- avoir entre 35 Mo et 250Mo, mais une taille de 5 Mo est suffisante si vous n'installez pas Windows,
- être de type FAT32,
- avoir le drapeau BOOT (ou ESP si cette option est présente dans GPARTED),
- et elle doit être située au début d'un disque partitionné en GPT.
Elle sera automatiquement reconnue par l'installateur d'Ubuntu, sinon il faudra lui attribuera le point de montage /boot/efi.
Chiffrement, volumes logiques et système de fichiers
Maintenant avant de d'installer le système, il faut chiffrer le disque HDD avec LUKS puis créer des partions logiques avec LVM. J'utilise les paramètres permettant le plus au niveau de chiffrement possible avec cette méthode, j'ai trouvé de bonnes informations sur ce wiki.
Chiffrement LUKS
Chiffrer avec LUKS 1
Chiffrer avec LUKS 2
Choix de la méthode de chiffrement
Sauvegarder l'entête LUKS
Volumes logiques
Système de fichiers
Installation du système
Je suis ensuite le processus classique pour l'installation d'Ubuntu, seule différence pendant la sélection des partitions à l'étape “Type d'installation” où je choisis l'option “Autre chose” afin de définir moi-même les 'points de montage'.
Il faut faire attention ici d'installer le programme de démarrage sur le disque SSD, là ou se trouvera la partition racine – et de /boot, ici sur l'image '/dev/sdc'.
Après l'installation
Après l'installation et après avoir ouvert une session utilisateur il faut maintenant modifier le fichier /etc/crypttab
. Avant de modifier ce fichier il faut connaître l'identifiant unique (UUID) de la partition chiffrée, pour cela dans le terminal lancer la commande blkid :
sudo blkid
Le terminal va afficher l'ensemble des devices et leur UUID ; il faut rechercher celui qui concerne la partition chiffrée, ici /dev/sda2.
sudo nano /etc/crypttab
Dans la fenêtre qui s'ouvre taper le nom de la partition chiffrée, ici 'Ubuntu' et coller l'UUID, et retirer les guillemets, taper 'none' puis 'luks' en séparant chaque information par une tabulation :
- crypttab
lvm UUID=2ae(...)4d1 none luks
Si la partition est sur un disque SSD il faudra ajouter 'discard' après 'luks' séparé d'une virgule :
- crypttab
sda3-crypt UUID=2ae(...)4d1 none luks,discard
S'il est impossible de la faire après le redémarrage (pas de console root) il faudra booter sur la clef USB, monter le disque où le système fut installé (ici /dev/sdd) puis éditer le fichier '/etc/crypttab'.
Ensuite il faut modifier la configuration de Grub en commentant la ligne GRUB_HIDDEN_TIMEOUT et en retirant la commande “quiet splash” sur la ligne GRUB_CMDLINE_LINUX_DEFAULT (bien laisser les guillemets). Cette commande sert à masquer les lignes de code du système au démarrage. Malheureusement cela provoque souvent un bug qui empêche alors de saisir le mot de passe pour déverrouiller la partition chiffrée.
sudo nano /etc/default/grub
Une fois le fichier '/etc/default/grub' modifié il faut lancer les commandes suivantes :
sudo update-initramfs -u
Si la commande se termine avec une erreur il faudra vérifier et modifier le fichier '/etc/crypttab' et l'UUID indiqué, sinon :
sudo update-grub