#format wiki #language fr #acl +All:read = Démarrer un linux avec /boot chiffré = On utilise pour cela les modules de grub2 `cryptodisk.mod` et `luks.mod` On suppose ici que vous avez déjà la racine de votre système chiffré avec un lvm par dessus un volume luks sauf le /boot. 1. démontez `/boot` et remonter le dans un dossier temporaire `/tmp/boot` 1. copiez le contenu de `/tmp/boot` dans le dossier `/boot` de la racine 1. retirez l'entrée concernant la partition anciennement monté sur `/boot` du fichier `/etc/fstab` 1. éditez le fichier `/etc/default/grub` et y ajouter: `GRUB_ENABLE_CRYPTODISK=y` et `GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:main"` où `/dev/sda2` est votre volume luks et `main` le nom du lvm contenant la racine (perso j'utilise `/dev/disk/by-uuid/a9c07884-242c-4dae-a2cd-0e2eb9aa6907` à la place de `/dev/sda2` comme ça, je ne dépend pas de l'ordre de détection de mes disques dur (j'en ai 2)) 1. lancez `sudo update-grub` 1. vous pouvez vérifier que les modules `cryptodisk` et `luks` apparaissent bien dans `/boot/grub/grub.cfg` 1. lancez `sudo grub-install /dev/sda` Au prochain redémarrage, grub vous demandera votre passphrase pour déchiffrer `/boot`. /!\ Attention, le layout du clavier est alors en qwerty, changer le layout est alors possible bien que difficile et non recommandé : {{{ Jordan_U | Nit_: It is possible but (currently) requires you to work outside the framework of grub-install, which we generally don't recommend. For BIOS based grub at least, you need to carefully create a load.cfg which uses just the limited rescue parser to setup your keyboard layout then embed this load.cfg in the core.img using grub-mkimage. If you're using UEFI, coreboot, or a separate unencrypted drive then you have other, more supported options. }}} == Ne pas rentrer sa passphrase deux fois == Vous remarquerez qu'alors vous devez entrez votre passphrase deux fois. Une fois pour grub, et une fois pour monter `/` lors de l'initialisation du noyau. Pour n'avoir à taper notre passphrase qu'une seule fois, nous allons ajouter une clef de déchiffrement pour `/` et la mettre dans l'initramfs chargé par grub. Comme `/boot` est maintenant chiffré, l'initramfs qui s'y trouve l'est aussi, et ça ne pose pas vraiment de problème de sécurité. On s'assure quand même qu'une fois la machine démarré, seul root à accès aux initramfs : `sudo chmod 700 /boot` 1. Créer le répertoire des clef : `sudo mkdir -p /etc/crypttab.d` et `sudo chmod 700 /etc/crypttab.d` 1. Créer la clef : `sudo dd bs=512 count=8 if=/dev/random of=/etc/crypttab.d/sda2_crypt` (mon volume luks s'appelle sda2_crypt, je donne le même nom à la clef pour me souvenir que c'est la clef de ce volume) et la protéger `sudo chmod 400 etc/crypttab.d/sda2_crypt` 1. On ajoute la clef comme clef de déchiffrement pour le volume luks : `sudo cryptsetup luksAddKey /dev/sda2 /etc/crypttab.d/sda2_crypt` 1. modifier `/etc/crypttab` pour y renseigner la clef que l'on vient de créer et un `keyscript` qui sera utiliser pour passer la clef de l'initramfs à crypsetup. . {{{#!highlight bash # sda2_crypt UUID=a9c07884-242c-4dae-a2cd-0e2eb9aa6907 /etc/crypttab.d/sda2_crypt luks,discard,keyscript=/etc/crypttab.d/getinitramfskey.sh # /dev/sda2 }}} 1. Créer le fichier `/etc/crypttab.d/getinitramfskey.sh` . {{{#!highlight bash #!/bin/sh KEY="${1}" if [ -f "${KEY}" ]; then cat "${KEY}" else PASS=/bin/plymouth ask-for-password --prompt="Key not found. Enter LUKS Password: " echo "${PASS}" fi }}} et le rendre éxécutable : `sudo chmod 755 /etc/crypttab.d/getinitramfskey.sh` 1. Crée un hook pour l'initramfs pour y inclure `/etc/crypttab.d/sda2_crypt` et `/etc/crypttab.d/getinitramfskey.sh` . {{{#!highlight bash #!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case "$1" in prereqs) prereqs exit 0 ;; esac . "${CONFDIR}/initramfs.conf" . /usr/share/initramfs-tools/hook-functions mkdir -p ${DESTDIR}/etc/crypttab.d chmod 700 ${DESTDIR}/etc/crypttab.d cp -pLn /etc/crypttab.d/getinitramfskey.sh ${DESTDIR}/etc/crypttab.d/getinitramfskey.sh cp -pLn /etc/crypttab.d/sda2_crypt ${DESTDIR}/etc/crypttab.d/sda2_crypt }}} et le rendre éxécutable : `sudo chmod 755 /etc/initramfs-tools/hooks/crypttab.sh` 1. Mettez à jour l'initramfs : `sudo update-initramfs -u -k all` Vous pouvez redémarrer pour tester. ---- CatégoriePagePublique