⇤ ← Version 1 à la date du 2016-01-06 18:07:49
3788
Commentaire:
|
3875
|
Texte supprimé. | Texte ajouté. |
Ligne 4: | Ligne 4: |
Ligne 23: | Ligne 22: |
Ligne 26: | Ligne 24: |
Pour n'avoir a taper notre passphrase qu'une seule foie, nous allons ajouter une clef de déchiffrement pour `/` et la mettre dans l'initramfs chargé par grub. Comme `/boot` est mantenant chiffré, l'initramfs qui s'y trouve l'est aussi, et ça ne pose pas vraiment de problème de sécurité. | Pour n'avoir à taper notre passphrase qu'une seule foie, 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é. |
Ligne 28: | Ligne 26: |
On s'assure quand même qu'une foie la machine démarré, seul root a accès aux initramfs : `sudo chmod 700 /boot` | On s'assure quand même qu'une foie la machine démarré, seul root à accès aux initramfs : `sudo chmod 700 /boot` |
Ligne 31: | Ligne 29: |
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 a 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. 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` |
Ligne 34: | Ligne 32: |
{{{ | . {{{ |
Ligne 40: | Ligne 38: |
{{{ $ cat /etc/crypttab.d/getinitramfskey.sh |
. {{{ |
Ligne 43: | Ligne 40: |
$ cat /etc/crypttab.d/getinitramfskey.sh | |
Ligne 51: | Ligne 49: |
et le rendre éxécutable : `sudo chmod 755 /etc/crypttab.d/getinitramfskey.sh` | . et le rendre éxécutable : `sudo chmod 755 /etc/crypttab.d/getinitramfskey.sh` |
Ligne 54: | Ligne 52: |
{{{ | . {{{ #!/bin/sh |
Ligne 56: | Ligne 55: |
#!/bin/sh | |
Ligne 74: | Ligne 72: |
et le rendre éxécutable : `sudo chmod 755 /etc/initramfs-tools/hooks/crypttab.sh` | |
Ligne 77: | Ligne 76: |
Démarrer un linux avec /boot chiffré
On utilise pour ça les modules de grub2 cryptodisk.mod et luks.mod
Je 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.
démontez /boot et remonter le dans un dossier temporaire /tmp/boot
copiez le contenu de /tmp/boot dans le dossier /boot de la racine
retirez l'entrée concernant la partition anciennement monté sur /boot du fichier /etc/fstab
é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
lancez sudo update-grub
vous pouvez vérifier que les modules cryptodisk et luks apparaissent bien dans /boot/grub/grub.cfg
lancez sudo grub-install /dev/sda
Au prochain redémarrage, grub vous demandera votre passphrase pour déchiffrer /boot.
Attention, le layout est alors en qwerty
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 foie, 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 foie la machine démarré, seul root à accès aux initramfs : sudo chmod 700 /boot
Créer le répertoire des clef : sudo mkdir -p /etc/crypttab.d et sudo chmod 700 /etc/crypttab.d
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
On ajoute la clef comme clef de déchiffrement pour le volume luks : sudo cryptsetup luksAddKey /dev/sda2 /etc/crypttab.d/sda2_crypt
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.
$ cat /etc/crypttab # <target name> <source device> <key file> <options> sda2_crypt UUID=a9c07884-242c-4dae-a2cd-0e2eb9aa6907 /etc/crypttab.d/sda2_crypt luks,discard,keyscript=/etc/crypttab.d/getinitramfskey.sh # /dev/sda2
Créer le fichier /etc/crypttab.d/getinitramfskey.sh
$ cat /etc/crypttab.d/getinitramfskey.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
Crée un hook pour l'initramfs pour y inclure /etc/crypttab.d/sda2_crypt et /etc/crypttab.d/getinitramfskey.sh
$ cat /etc/initramfs-tools/hooks/crypttab.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
Mettez à jour l'initramfs : sudo update-initramfs -u -k all
Vous pouvez redémarrer pour tester.