Tutoriel de cryptage de disque simple avec Arch linux


Nous aimons tous Arch Linux, ou sinon, nous utilisons Fedora ou Debian, et le trolling est (presque) hors sujet dans cet article.

Mais, soyons honnêtes, même si le wiki est excellent, il peut parfois être intimidant. C’est ce qui m’est arrivé hier. Ici, chez AlloMedia, pour des raisons de sécurité, nous chiffrons le disque de chaque ordinateur portable par défaut. Comme j’utilise Arch Linux, je suis allé sur le wiki pour suivre comment « simplement » chiffrer mon disque. Et bien, la page est un peu surchargée pour dire le moins.

Vous devez d’abord lire environ 10 pages de documentation, pour apprendre que vous devez maintenant choisir entre 6 méthodes (Loop-AES, dm-crypt +/- LUKS, Truecrypt, eCryptfs, EncFS) et lire chaque *#! page pour comprendre laquelle vous voudrez peut-être choisir. J’ai choisi pour vous.

Lvm sur Luks

Cela est fourni avec le noyau et semble être le « défaut » sur d’autres distributions. Cela répond parfaitement à mes besoins : chiffrer tout le système, y compris le swap, et déchiffrer le système au démarrage à l’aide d’une phrase secrète.

Si c’est ce que vous voulez faire aussi, suivez le lapin blanc, Neo.

Suivre le lapin

Nous supposerons que vous pouvez effacer votre disque et commencer par une installation fraîche, si ce n’est pas le cas, cet article n’est sûrement pas pour vous. Pour les besoins de cet article, nous utiliserons /dev/nvme0n1 comme le disque principal de l’ordinateur portable. Vous pouvez avoir quelque chose de différent comme /dev/sda, c’est bien, remplacez juste /dev/nvme0n1 par /dev/sda dans le reste de l’article.

D’abord, suivez le guide d’installation d’Arch Linux jusqu’au point juste avant « Formater les partitions», où ils vous disent de modifier les tables de partition grâce à fdisk ou parted. Ici, vous aurez besoin d’effacer toutes vos partitions et de créer ce qui est nécessaire pour le chiffrement.

Nettoyer et effacer en toute sécurité votre disque

D’abord, utilisez fdisk ou gdisk (si vous utilisez UEFI) pour effacer ce qui est sur votre disque, c’est-à-dire supprimer toutes les partitions existantes (bien sûr, cela supprimera toutes les données sur votre disque…).

Par exemple, pour gdisk :

gdisk /dev/nvme0n1

GPT fdisk (gdisk) version 1.0.3
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help):

Utilisez p pour imprimer votre schéma de partition et d pour supprimer les partitions. Une fois cela fait, utilisez w pour écrire vos changements sur le disque (autrement dit, encore une fois, supprimer toutes les données sur votre disque) et quitter gdisk.

Chaque page du wiki d’Arch Linux dit que vous devriez d’abord vous assurer qu’aucune donnée précédente ne sera toujours lisible sur votre disque (si vous avez un nouvel ordinateur sans rien dessus, cela ne s’applique pas à vous).

Ainsi, nous mettrons des choses aléatoires sur notre disque pour être sûr d’écraser tout ce qui pourrait encore y être. Vous pouvez lire la page du wiki ou simplement exécuter la commande suivante :

dd if=/dev/urandom > /dev/nvme0n1

Partitionnement

Nous avons maintenant un disque propre, créons ce qui est nécessaire pour notre système chiffré, c’est-à-dire deux partitions : une partition pour /boot (qui ne sera pas chiffrée) et une autre pour nos volumes chiffrés (où nous mettrons plus tard / et notre swap).

Voici ce que nous voulons avoir (sortie de mon gdisk avec la commande p) :

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   

 512.0 MiB   EF00  EFI System
   2         1050624      1000215182    476.4 GiB   8E00  Linux LVM

D’abord, créez la partition où /boot sera monté de type 8300 (512 Mo est une bonne taille) en suivant le wiki d’Arch Linux. Je suppose que vous utilisez un système compatible avec UEFI, si ce n’est pas le cas, vous voudrez peut-être vous documenter un peu plus avec le wiki. Formatez la partition grâce à FAT32.

mkfs.fat -F32 /dev/nvme0n1p1

Créez l’autre partition de code 8E00 avec l’espace restant.

Vous devriez à présent avoir seulement 2 partitions, une pour /boot qui ne sera pas chiffrée, et une autre que vous allez d’abord chiffrer, puis mettre vos volumes dessus (/ et swap). Dans mon cas, la première partition qui sera utilisée pour /boot est nommée /dev/nvme0n1p1, et l’autre /dev/nvme0n1p2. Vous pouvez avoir quelque chose comme /dev/sda1 et /dev/sda2 si votre schéma de nommage de partition n’est pas le même que le mien.

Vous pouvez ensuite suivre la section LVM sur LUKS.

Par ailleurs, je n’aime pas avoir des partitions séparées pour / et /home. Chaque fois que je l’ai fait, j’ai toujours regretté la quantité d’espace que j’avais allouée pour chacune. Ainsi maintenant, je crée seulement une partition / avec tout à l’intérieur.

En bref, ci-dessous sont les commandes que vous devriez exécuter pour vos volumes chiffrés (je crée une partition de swap de 8 Go).

Cryptez la partition et ouvrez-la avec votre clé :

cryptsetup luksFormat --type luks2 /dev/nvme0n1p2
cryptsetup open /dev/nvme0n1p2 cryptolvm

Créez les volumes LVM dessus (swap et root) :

pvcreate /dev/mapper/cryptolvm
vgcreate MyVol /dev/mapper/cryptolvm
lvcreate -L 8G MyVol -n swap
lvcreate -l 100%FREE MyVol -n root

Formatez les volumes root et swap :

mkfs.ext4 /dev/mapper/MyVol-root
mkswap /dev/mapper/MyVol-swap

Montez les systèmes de fichiers :

mount /dev/mapper/MyVol-root /mnt
swapon /dev/mapper/MyVol-swap

Le wiki d’Arch vous dit de formater votre partition de boot en utilisant ext2, mais pour moi, c’était une mauvaise idée, car je veux que le gestionnaire UEFI de mon Dell XPS 9550 puisse démarrer sur ma partition /boot. Donc, comme je l’ai dit ci-dessus, j’ai formaté cette partition en utilisant FAT32.

Montez la partition /boot :

mkdir /mnt/boot
mount /dev/nvme0n1p2 /mnt/boot

Vous pouvez ensuite suivre la partie mkinitcpio du wiki d’Arch Linux.

Assurez-vous d’avoir quelque chose comme cela dans votre fichier mkinitcpio.conf :

HOOKS=(... keyboard keymap block encrypt lvm2 ... filesystems ...)

Puis continuez à installer votre système normalement. Bien sûr, assurez-vous de configurer votre grub en conséquence avec votre configuration chiffrée en suivant le wiki.

Pour information, voici mon fichier /etc/default/grub (il est utilisé pour générer le fichier /boot/grub/grub.cfg en utilisant grub-mkconfig -o /boot/grub/grub.cfg) :

# GRUB boot loader configuration

GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/mapper/MyVol-swap nouveau.modeset=0 i915.preliminary_hw_support=1 acpi_backlight=vendor acpi_osi=Linux"
#GRUB_CMDLINE_LINUX_DEFAULT=""
#GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX="cryptdevice=/dev/nvme0n1p2:cryptolvm"

GRUB_ENABLE_CRYPTODISK=y

# Pre

load both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Uncomment to enable Hidden Menu, and optionally hide the timeout count
#GRUB_HIDDEN_TIMEOUT=5
#GRUB_HIDDEN_TIMEOUT_QUIET=true

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

# Uncomment to make GRUB remember the last selection. This requires to
# set 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT="true"

Profitez de votre Arch Linux chiffré !

Partagez c'est sympa !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *