======Full Disk Encryption sous Arch Linux (busybox)====== :!: Ce document est une méthode que je considère déprécié. je préconise maintenant [[kb:linux:données:Full Disk Encryption sous Arch Linux (systemd)]]. Cette nouvelle méthode est plus simple et plus rapide. =====Introduction===== Cette documentation permet d'installer Arch Linux avec du chiffrement intégrale du disque dur en mode EFI. ^ AVANTAGE ^ INCONVENIENT ^ | Chiffrement intégrale, même le /boot | La clé de chiffrement stocké à la racine | | Utilisation de l'EFI | Lent au démarrage | | Une seule passphrase à taper au boot | Gros problème de compatibilité entre le layout et les clavier USB | | L'"hibernation" du système est fonctionnelle et chiffrée | | Cette solution repose sur un chiffrement par passphrase de la partition **/boot**, et du chiffrement des autres partitions par clé de chiffrement stocké dans l'image **INITRAMFS** (qui est stocké dans la partition **/boot**) Voici l'agencement des partitions utilisé dans cette documentation. La seule réel contrainte sont les deux partitions **/boot** et **/boot/efi** : +----------------------+-----------------------+-----------------------+-----------------------+ |ESP partition: |Partition Boot: |Partition Root: |Partition SWAP | | | | | | |/boot/efi |/boot |/ |[SWAP] | | | | | | | |/dev/mapper/cryptoboot |/dev/mapper/cryptoroot |/dev/store/cryptoswap | | |UUID= |UUID= |UUID= | | +-----------------------+-----------------------+-----------------------+ |/dev/sda1 |/dev/sda2 |/dev/sda3 |/dev/sda4 | |UUID= |UUID= |UUID= |UUID= | |non-chiffré |chiffré |chiffré |chiffré | +----------------------+-----------------------+-----------------------+-----------------------+ =====Installation===== ===Boot en mode EFI=== Il vous faut boot en mode EFI, pour vérifier, le dossier **/sys/firmware/efi/efivars/** doit exister ===Changer le Layout du clavier=== Vu qu'en France nous avons un clavier AZERTY, il faut le changer pour se simplifier la vie : # loadkeys fr ===Se connecter à Internet=== Là je vous renvoie vers la documentation officiel, ce sujet est bien trop exhaustif ===Partitionnement des disques=== Pour cela, je vous renvoie vers de la documentation de [[https://doc.ubuntu-fr.org/fdisk|fdisk]] Il faut ensuite mettre le système de fichier FAT32 sur la partition **/boot/efi** # mkfs.fat -F32 /dev/sda1 puis on va chiffré la partition **/boot** avec une PassPhrase : # cryptsetup luksFormat /dev/sda2 Ensuite on va créer une clé de chiffrement pour les autres partitions: # dd if=/dev/urandom of=crypto_keyfile.bin bs=512 count=4 Puis on chiffre les autres partitions ainsi que la partition boot avec cette dites clé # cryptsetup luksAddKey /dev/sda2 crypto_keyfile.bin # cryptsetup luksFormat /dev/sda3 crypto_keyfile.bin # cryptsetup luksFormat /dev/sda4 crypto_keyfile.bin Maintenant on va les déchiffrés : # cryptsetup open /dev/sda2 cryptboot # cryptsetup open /dev/sda3 cryptroot --key-file=crypto_keyfile.bin # cryptsetup open /dev/sda4 cryptswap --key-file=crypto_keyfile.bin puis de les formater : # mkfs.ext4 /dev/mapper/cryptboot # mkfs.ext4 /dev/mapper/cryptroot # mkswap /dev/mapper/cryptswap puis on les montes : # mount /dev/mapper/cryptroot /mnt/ # mkdir /mnt/boot # mount /dev/mapper/cryptboot /mnt/boot/ # mkdir /mnt/boot/efi # mount /dev/sda1 /mnt/ ===Installation de Arch Linux=== On va commencer par choisir notre miroir pour les dépots Arch en modifiant le fichier **/etc/pacman.d/mirrorlist** en sélectionnant le pays de son choix On va ensuite mettre a jour les clés des packet # pacman -Sy archlinux-keyring et enfin on installe Arch en lancant : # pacstrap /mnt base base-devel On y copie la clé de chiffrement : # cp crypto_keyfile /mnt puis on se chroot pour faire la configuration: # arch-chroot /mnt ===Configuration de Arch=== On commence par configurer le time zone : # ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime # hwclock --systohc Puis on génère le langage français : # echo "fr_FR.UTF-8 UTF-8" > /etc/locale.gen && locale-gen && echo "LANG=fr_FR.UTF-8" > /etc/locale.conf && echo "KEYMAP=fr" > /etc/vconsole.conf Puis on installe les paquets utiles : # pacman -Syu efibootmgr grub Ensuite on configure le nom d'hôte dans le fichier **/etc/hostname** : Arch-0000 ainsi que le fichier **/etc/hosts** : 127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 127.0.1.1 Arch-0000.localdomain Arch-0000 ===Configuration du boot=== On modifie le fichier **/etc/default/grub**, il faut modifié cet ligne comme tel: GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=UUID=:cryptroot resume=UUID=" ainsi que la ligne suivante: GRUB_TERMINAL_INPUT=at_keyboard et pour finir décommente la ligne : GRUB_ENABLE_CRYPTODISK=y on ajoute dans le fichier /etc/grub.d/40_custom : insmod keylayouts keymap /boot/grub/fr.gkb et on copie le fichier {{ :kb:linux:donnees:fr.gkb |fr.gkb}} dans le dossier **/boot/grub/** Ensuite on génère la config grub : # grub-mkconfig -o /boot/grub/grub.cfg # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=LINUX --recheck Puis régénère le RAMDISK EFI de grub pour qu'il ajoute le clavier : # grub-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi --modules="part_gpt part_msdos crypto cryptodisk luks disk diskfilter" -o "/boot/efi/EFI/LINUX/grubx64.efi" "boot/grub/grub.cfg=/boot/grub/grub.cfg" "boot/grub/fr.gkb=/boot/grub/fr.gkb" Maintenant on va générer l'image **initramfs** pour le déchiffrement, pour cela il faut aller modifier le fichier **/etc/mkinitcpio.conf** en modifiant le champ **HOOKS** de cet manière : HOOKS=(base udev autodetect modconf keyboard keymap block encrypt openswap resume filesystems fsck) ainsi que le champ **FILES** comme ceci : FILES=(/crypto_keyfile.bin) Ensuite on va créer le HOOK openswap, donc on va créer le fichier **/etc/initcpio/install/openswap** comme ceci : build () { add_runscript } help () { cat< ainsi que le fichier **/etc/initcpio/hooks/openswap** run_hook () { cryptsetup open --key-file=/crypto_keyfile.bin /dev/disk/by-uuid/ cryptswap rm -f /crypto_keyfile.bin } puis on exécute la commande(( Cette commande (et la suivante) devra peut-être être retapé en cas de mise a jour de initcpio. Elle sera nécessaire si vous avez l'erreur "failed to open key file" lors du lancement du hook "openswap" au démarrage )) : # sed -i 's/rm -f ${ckeyfile}//g' /usr/lib/initcpio/hooks/encrypt puis on génère l'image : # mkinitcpio -p linux puis on créer le fichier **/etc/crypttab** en ajoutant les volumes suivants : cryptoboot UUID= /crypto_keyfile.bin cryptoroot UUID= /crypto_keyfile.bin à noté que le déchiffrement de la partition de la partition **swap** à déjà été réalisé durant le HOOK de l'**initramfs**, d'où son absence dans le fichier. Et pour finir le fichier **/etc/fstab** : UUID= /boot/efi vfat defaults 0 1 UUID= /boot ext4 defaults 0 1 UUID= / ext4 defaults 0 1 UUID= none swap defaults 0 2